OntoTreeCellRenderer.java
001 /*
002  *  OntologyTreeCellRenderer.java
003  *
004  *  Niraj Aswani, 09/March/07
005  *
006  *  $Id: OntologyTreeCellRenderer.html,v 1.0 2007/03/09 16:13:01 niraj Exp $
007  */
008 package gate.gui.ontology;
009 
010 import gate.creole.ontology.AnnotationProperty;
011 import gate.creole.ontology.DatatypeProperty;
012 import gate.creole.ontology.OClass;
013 import gate.creole.ontology.OInstance;
014 import gate.creole.ontology.OResource;
015 import gate.creole.ontology.ObjectProperty;
016 import gate.creole.ontology.RDFProperty;
017 import gate.creole.ontology.Restriction;
018 import gate.creole.ontology.SymmetricProperty;
019 import gate.creole.ontology.TransitiveProperty;
020 import gate.gui.MainFrame;
021 
022 import java.awt.Color;
023 import java.awt.Component;
024 
025 import javax.swing.JTree;
026 import javax.swing.tree.DefaultMutableTreeNode;
027 import javax.swing.tree.DefaultTreeCellRenderer;
028 
029 /**
030  * A Class that defines how each node in the ontology tree should look
031  * like (e.g. Icon, Text and Tooltips etc).
032  
033  @author niraj
034  
035  */
036 public class OntoTreeCellRenderer extends DefaultTreeCellRenderer {
037   private static final long serialVersionUID = 3256445798102610225L;
038   @Override
039   public Component getTreeCellRendererComponent(JTree jtree, Object obj,
040           boolean flag, boolean flag1, boolean flag2, int i, boolean flag3) {
041     if(obj != null && (obj instanceof DefaultMutableTreeNode)) {
042       javax.swing.Icon icon = null;
043       String s = null;
044       Object obj1 = ((DefaultMutableTreeNode)obj).getUserObject();
045       if(obj1 != null && obj1 instanceof OResourceNode) {
046         obj1 = ((OResourceNode)obj1).getResource();
047       }
048 
049       if(obj1 instanceof OResource) {
050         Color color = Color.BLACK;
051         setForeground(color);
052       }
053       
054       if(obj1 instanceof Restriction) {
055         icon = MainFrame.getIcon("ontology-restriction");
056         s = ((OClass)obj1).getName();
057         if(((OClass)obj1).getONodeID().isAnonymousResource())
058           setToolTipText(((OClass)obj1).getONodeID().toString()
059                   " is a restriction");
060         else setToolTipText(((OClass)obj1).getONodeID().toString());
061       }
062       else if(obj1 instanceof OClass) {
063         icon = MainFrame.getIcon("ontology-class");
064         s = ((OClass)obj1).getName();
065         if(((OClass)obj1).getONodeID().isAnonymousResource())
066           setToolTipText(((OClass)obj1).getONodeID().toString()
067                   " is an annonymous class");
068         else setToolTipText(((OClass)obj1).getONodeID().toString());
069       }
070       else if(obj1 instanceof OInstance) {
071         icon = MainFrame.getIcon("ontology-instance");
072         s = ((OInstance)obj1).getName();
073         setToolTipText(((OInstance)obj1).getONodeID().toString());
074       }
075       else if(obj1 instanceof AnnotationProperty) {
076         icon = MainFrame.getIcon("ontology-annotation-property");
077         s = ((AnnotationProperty)obj1).getName();
078         setToolTipText(((AnnotationProperty)obj1).getONodeID().toString());
079       }
080       else if(obj1 instanceof DatatypeProperty) {
081         icon = MainFrame.getIcon("ontology-datatype-property");
082         s = ((DatatypeProperty)obj1).getName();
083         setToolTipText(((DatatypeProperty)obj1).getONodeID().toString());
084       }
085       else if(obj1 instanceof SymmetricProperty) {
086         icon = MainFrame.getIcon("ontology-symmetric-property");
087         s = ((SymmetricProperty)obj1).getName();
088         setToolTipText(((SymmetricProperty)obj1).getONodeID().toString());
089       }
090       else if(obj1 instanceof TransitiveProperty) {
091         icon = MainFrame.getIcon("ontology-transitive-property");
092         s = ((TransitiveProperty)obj1).getName();
093         setToolTipText(((TransitiveProperty)obj1).getONodeID().toString());
094       }
095       else if(obj1 instanceof ObjectProperty) {
096         icon = MainFrame.getIcon("ontology-object-property");
097         s = ((ObjectProperty)obj1).getName();
098         setToolTipText(((ObjectProperty)obj1).getONodeID().toString());
099       }
100       else if(obj1 instanceof RDFProperty) {
101         icon = MainFrame.getIcon("ontology-rdf-property");
102         s = ((RDFProperty)obj1).getName();
103         setToolTipText(((RDFProperty)obj1).getONodeID().toString());
104       }
105       if(icon != null) {
106         if(flag1)
107           setOpenIcon(icon);
108         else setClosedIcon(icon);
109         if(flag2setLeafIcon(icon);
110       }
111       super
112               .getTreeCellRendererComponent(jtree, s, flag, flag1, flag2, i,
113                       flag3);
114     }
115     else {
116       super.getTreeCellRendererComponent(jtree, obj, flag, flag1, flag2, i,
117               flag3);
118     }
119     return this;
120   }
121 }