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
029 /**
030 * Changes:
031 * 8/10/2005 pvo the renderer is changed so that the main text
032 * is set to the result returned from BrowserTextUtil.getBrowserText()
033 *
034 */
035 package edu.uchsc.ccp.knowtator.ui;
036
037 import java.awt.Color;
038 import java.awt.Component;
039
040 import edu.stanford.smi.protege.model.Cls;
041 import edu.stanford.smi.protege.model.Frame;
042 import edu.stanford.smi.protege.model.Instance;
043 import edu.stanford.smi.protege.model.SimpleInstance;
044 import edu.stanford.smi.protege.ui.FrameRenderer;
045 import edu.stanford.smi.protege.ui.ParentChildNode;
046 import edu.uchsc.ccp.knowtator.BrowserTextUtil;
047 import edu.uchsc.ccp.knowtator.DisplayColors;
048 import edu.uchsc.ccp.knowtator.KnowtatorManager;
049
050 public class ColorFrameRenderer extends FrameRenderer {
051 static final long serialVersionUID = 0;
052
053 KnowtatorManager manager;
054
055 DisplayColors displayColors;
056
057 BrowserTextUtil browserTextUtil;
058
059 public ColorFrameRenderer(KnowtatorManager manager) {
060 this.manager = manager;
061 this.displayColors = manager.getDisplayColors();
062 this.browserTextUtil = manager.getBrowserTextUtil();
063 }
064
065 protected Component setup(Component c, Object value, boolean hasFocus, boolean isSelected) {
066 super.setup(c, value, hasFocus, isSelected);
067 Color color = null;
068
069 Frame displayedFrame = null;
070 if (value instanceof Frame)
071 displayedFrame = (Frame) value;
072
073 if (value instanceof ParentChildNode) {
074 ParentChildNode node = (ParentChildNode) value;
075 Object userObject = node.getUserObject();
076 if (userObject instanceof Frame)
077 displayedFrame = (Frame) userObject;
078 }
079
080 if (displayedFrame != null) {
081 color = displayColors.getColor(displayedFrame);
082 int count = manager.getCurrentAnnotationCountForFrame(displayedFrame);
083 if (count > 0) {
084 if (manager.isConsensusMode()) {
085 addText(" (" + manager.getConsolidatedAnnotationCountForFrame(displayedFrame) + "/" + count + ")");
086 } else
087 addText(" (" + count + ")");
088 } else if (value instanceof SimpleInstance) {
089 SimpleInstance instance = (SimpleInstance) value;
090 if (manager.getAnnotationUtil().isAnnotation(instance)) {
091 if (instance.getDirectType() != null) {
092 clear();
093 setMainText(browserTextUtil.getBrowserText(instance, 30));
094 addText(getRendererAnnotationDisplayText(instance));
095 }
096 } else if (manager.getMentionUtil().isMention(instance)) {
097 clear();
098 setMainText(browserTextUtil.getBrowserText(instance, 30));
099 }
100
101 }
102 // needs to be after clear() call
103 setMainIcon(displayColors.getIcon(color));
104 }
105 return this;
106 }
107
108 protected String getRendererAnnotationDisplayText(SimpleInstance instance) {
109 if (manager.getAnnotationUtil().isAnnotation(instance)) {
110 SimpleInstance annotatedMention = manager.getAnnotationUtil().getMention(instance);
111
112 if (manager.getMentionUtil().isClassMention(annotatedMention)) {
113 Cls mentionCls = manager.getMentionUtil().getMentionCls(instance);
114 if (mentionCls != null)
115 return " (" + mentionCls.getName() + ")";
116 } else if (manager.getMentionUtil().isInstanceMention(annotatedMention)) {
117 Instance mentionInstance = manager.getMentionUtil().getMentionInstance(instance);
118 if (mentionInstance != null)
119 return " (" + mentionInstance.getBrowserText() + ")";
120 }
121 }
122 return "";
123 }
124
125 protected Color getBackgroundColor() {
126 Object value = getValue();
127 if (_isSelected) {
128 if (value instanceof SimpleInstance) {
129 Color instanceColor = displayColors.getColor((SimpleInstance) value);
130 if (instanceColor != null)
131 return DisplayColors.getBackgroundColor(instanceColor);
132 } else if (value instanceof ParentChildNode) {
133 ParentChildNode node = (ParentChildNode) value;
134 Object userObject = node.getUserObject();
135 if (userObject instanceof Cls) {
136 Color clsColor = displayColors.getColor((Cls) userObject);
137 if (clsColor != null)
138 return DisplayColors.getBackgroundColor(clsColor);
139 }
140 }
141 }
142 return super.getBackgroundColor();
143 }
144 }