package hep.io.root.util;

import hep.io.root.interfaces.TNamed;
import hep.io.root.interfaces.TStreamerBase;
import hep.io.root.interfaces.TStreamerElement;
import hep.io.root.interfaces.TStreamerInfo;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;


/**
 * A TreeCellRenderer for StreamerInfo objects.
 * @author Tony Johnson (tonyj@slac.stanford.edu)
 * @version $Id: StreamerInfoTreeCellRenderer.java,v 1.6 2004/06/28 15:21:27 tonyj Exp $
 */
public class StreamerInfoTreeCellRenderer extends DefaultTreeCellRenderer
{
   private final static Icon classIcon = new ImageIcon(RootDirectoryTreeCellRenderer.class.getResource("images/class_t.gif"));
   private final static Icon memberIcon = new ImageIcon(RootDirectoryTreeCellRenderer.class.getResource("images/member_t.gif"));

   public java.awt.Component getTreeCellRendererComponent(JTree p1, Object p2, boolean p3, boolean p4, boolean p5, int p6, boolean p7)
   {
      super.getTreeCellRendererComponent(p1, p2, p3, p4, p5, p6, p7);
      if (p2 instanceof TNamed)
      {
         TNamed named = (TNamed) p2;
         String title = named.getTitle();
         if ((title != null) && (title.length() > 0))
            setText(named.getName() + " \"" + title + "\"");
         else
            setText(named.getName());
      }
      if (p2 instanceof TStreamerInfo)
         setIcon(classIcon);
      else if (p2 instanceof TStreamerBase)
         setIcon(classIcon);
      else if (p2 instanceof TStreamerElement)
      {
         TStreamerElement e = (TStreamerElement) p2;
         StringBuffer text = new StringBuffer(getText());
         text.insert(0, " ");
         for (int i = 0; i < e.getArrayDim(); i++)
            text.insert(0, "[]");
         text.insert(0, e.getTypeName());
         setText(text.toString());
         setIcon(memberIcon);
      }
      return this;
   }
}
