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