1 16 package org.apache.log4j.lf5.viewer.categoryexplorer; 17 18 import javax.swing.*; 19 import javax.swing.event.TreeModelEvent ; 20 import javax.swing.tree.TreePath ; 21 import java.awt.event.MouseEvent ; 22 23 31 32 34 public class CategoryExplorerTree extends JTree { 35 39 protected CategoryExplorerModel _model; 43 protected boolean _rootAlreadyExpanded = false; 44 45 49 53 56 public CategoryExplorerTree(CategoryExplorerModel model) { 57 super(model); 58 59 _model = model; 60 init(); 61 } 62 63 66 public CategoryExplorerTree() { 67 super(); 68 69 CategoryNode rootNode = new CategoryNode("Categories"); 70 71 _model = new CategoryExplorerModel(rootNode); 72 73 setModel(_model); 74 75 init(); 76 } 77 78 82 public CategoryExplorerModel getExplorerModel() { 83 return (_model); 84 } 85 86 public String getToolTipText(MouseEvent e) { 87 88 try { 89 return super.getToolTipText(e); 90 } catch (Exception ex) { 91 return ""; 92 } 93 94 } 95 96 100 protected void init() { 101 putClientProperty("JTree.lineStyle", "Angled"); 103 104 106 CategoryNodeRenderer renderer = new CategoryNodeRenderer(); 107 setEditable(true); 108 setCellRenderer(renderer); 109 110 CategoryNodeEditor editor = new CategoryNodeEditor(_model); 111 112 setCellEditor(new CategoryImmediateEditor(this, 113 new CategoryNodeRenderer(), 114 editor)); 115 setShowsRootHandles(true); 116 117 setToolTipText(""); 118 119 ensureRootExpansion(); 120 121 } 122 123 protected void expandRootNode() { 124 if (_rootAlreadyExpanded) { 125 return; 126 } 127 _rootAlreadyExpanded = true; 128 TreePath path = new TreePath (_model.getRootCategoryNode().getPath()); 129 expandPath(path); 130 } 131 132 protected void ensureRootExpansion() { 133 _model.addTreeModelListener(new TreeModelAdapter() { 134 public void treeNodesInserted(TreeModelEvent e) { 135 expandRootNode(); 136 } 137 }); 138 } 139 140 144 148 } 149 150 151 152 153 154 155 | Popular Tags |