1
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 }