View Javadoc

1   // Copyright 2005, FreeHEP.
2   package hep.wired.heprep.tree;
3   
4   import java.awt.*;
5   import java.util.*;
6   import javax.swing.*;
7   import javax.swing.tree.*;
8   
9   import hep.graphics.heprep.HepRepType;
10  
11  import hep.wired.util.TristateTreeCellRenderer;
12  
13  /***
14   *
15   * @author Mark Donszelmann
16   * @version $Id: TypeTreeCellRenderer.java 673 2005-03-08 00:16:25Z duns $
17   */
18  public class TypeTreeCellRenderer extends TristateTreeCellRenderer.NoIconTreeCellRenderer {
19  
20      private int maxDepth = Integer.MAX_VALUE;
21      
22      public void setMaxDepth(int maxDepth) {
23          this.maxDepth = maxDepth;
24      }
25      
26      public int getMaxDepth() {
27          return maxDepth;
28      }
29  
30      public Component getTreeCellRendererComponent(JTree tree, Object value,
31              boolean selected, boolean expanded, boolean leaf, int row,
32              boolean hasFocus) {
33          Component c = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
34          c.setEnabled(true);
35          if (value instanceof HepRepType) {
36              if (getDepth((HepRepType)value) > maxDepth) {
37                  c.setEnabled(false);
38              }
39          }
40          return c;
41      }
42              
43      private int getDepth(HepRepType type) {
44          int depth = 1;
45          while ((type = type.getSuperType()) != null)  {
46              depth++;
47          }
48          return depth;
49      }
50  }