001 /*
002 * The contents of this file are subject to the Mozilla Public
003 * License Version 1.1 (the "License"); you may not use this file
004 * except in compliance with the License. You may obtain a copy of
005 * the License at http://www.mozilla.org/MPL/
006 *
007 * Software distributed under the License is distributed on an "AS
008 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
009 * implied. See the License for the specific language governing
010 * rights and limitations under the License.
011 *
012 * The Original Code is Knowtator.
013 *
014 * The Initial Developer of the Original Code is University of Colorado.
015 * Copyright (C) 2005-2008. All Rights Reserved.
016 *
017 * Knowtator was developed by the Center for Computational Pharmacology
018 * (http://compbio.uchcs.edu) at the University of Colorado Health
019 * Sciences Center School of Medicine with support from the National
020 * Library of Medicine.
021 *
022 * Current information about Knowtator can be obtained at
023 * http://knowtator.sourceforge.net/
024 *
025 * Contributor(s):
026 * Philip V. Ogren <philip@ogren.info> (Original Author)
027 */
028 package edu.uchsc.ccp.knowtator.ui;
029
030 import edu.stanford.smi.protege.model.Project;
031 import edu.stanford.smi.protege.model.SimpleInstance;
032 import edu.stanford.smi.protege.ui.InstanceDisplay;
033 import edu.uchsc.ccp.knowtator.AnnotationUtil;
034 import edu.uchsc.ccp.knowtator.KnowtatorManager;
035 import edu.uchsc.ccp.knowtator.MentionUtil;
036 import edu.uchsc.ccp.knowtator.event.EventHandler;
037 import edu.uchsc.ccp.knowtator.event.SelectedAnnotationChangeEvent;
038 import edu.uchsc.ccp.knowtator.event.SelectedAnnotationChangeListener;
039
040 public class MentionDisplay extends InstanceDisplay implements SelectedAnnotationChangeListener {
041 static final long serialVersionUID = 0;
042
043 MentionUtil mentionUtil;
044
045 AnnotationUtil annotationUtil;
046
047 public MentionDisplay(KnowtatorManager manager, Project project) {
048 super(project, false, false);
049 mentionUtil = manager.getMentionUtil();
050 annotationUtil = manager.getAnnotationUtil();
051 EventHandler.getInstance().addSelectedAnnotationChangeListener(this);
052 }
053
054 public MentionDisplay(MentionUtil mentionUtil, AnnotationUtil annotationUtil, Project project) {
055 super(project);
056 this.mentionUtil = mentionUtil;
057 this.annotationUtil = annotationUtil;
058 EventHandler.getInstance().addSelectedAnnotationChangeListener(this);
059 }
060
061 public void annotationSelectionChanged(SelectedAnnotationChangeEvent sace) {
062 SimpleInstance oldMention = (SimpleInstance) getCurrentInstance();
063 if (oldMention != null) {
064 mentionUtil.removeEmptySlotMentions(oldMention);
065 }
066
067 SimpleInstance annotation = sace.getSelectedAnnotation();
068 if (annotation != null) {
069 SimpleInstance selectedMention = annotationUtil.getMention(annotation);
070 mentionUtil.initializeSlotMentions(selectedMention);
071 setInstance(selectedMention);
072 } else {
073 setInstance(null);
074 }
075 }
076
077 }