44 |
import java.awt.event.ComponentListener; |
import java.awt.event.ComponentListener; |
45 |
import java.awt.event.FocusListener; |
import java.awt.event.FocusListener; |
46 |
import java.awt.event.KeyListener; |
import java.awt.event.KeyListener; |
47 |
|
import java.awt.event.MouseListener; |
48 |
import java.beans.PropertyChangeListener; |
import java.beans.PropertyChangeListener; |
|
import java.util.HashMap; |
|
49 |
import java.util.Hashtable; |
import java.util.Hashtable; |
50 |
|
|
51 |
import javax.swing.JComponent; |
import javax.swing.JComponent; |
56 |
import javax.swing.tree.TreeModel; |
import javax.swing.tree.TreeModel; |
57 |
import javax.swing.tree.TreePath; |
import javax.swing.tree.TreePath; |
58 |
import javax.swing.event.CellEditorListener; |
import javax.swing.event.CellEditorListener; |
|
import javax.swing.event.MouseInputListener; |
|
59 |
import javax.swing.event.TreeExpansionListener; |
import javax.swing.event.TreeExpansionListener; |
60 |
import javax.swing.event.TreeModelListener; |
import javax.swing.event.TreeModelListener; |
61 |
import javax.swing.event.TreeSelectionListener; |
import javax.swing.event.TreeSelectionListener; |
|
|
|
62 |
import javax.swing.plaf.ComponentUI; |
import javax.swing.plaf.ComponentUI; |
63 |
import javax.swing.plaf.basic.BasicTreeUI; |
import javax.swing.plaf.basic.BasicTreeUI; |
64 |
|
|
65 |
public class MetalTreeUI |
/** |
66 |
extends BasicTreeUI |
* A UI delegate for the {@link JTree} component. |
67 |
|
*/ |
68 |
|
public class MetalTreeUI extends BasicTreeUI |
69 |
{ |
{ |
70 |
|
|
71 |
/** Listeners */ |
/** Listeners */ |
72 |
private PropertyChangeListener propertyChangeListener; |
private PropertyChangeListener propertyChangeListener; |
73 |
private FocusListener focusListener; |
private FocusListener focusListener; |
74 |
private TreeSelectionListener treeSelectionListener; |
private TreeSelectionListener treeSelectionListener; |
75 |
private MouseInputListener mouseInputListener; |
private MouseListener mouseListener; |
76 |
private KeyListener keyListener; |
private KeyListener keyListener; |
77 |
private PropertyChangeListener selectionModelPropertyChangeListener; |
private PropertyChangeListener selectionModelPropertyChangeListener; |
78 |
private ComponentListener componentListener; |
private ComponentListener componentListener; |
80 |
private TreeExpansionListener treeExpansionListener; |
private TreeExpansionListener treeExpansionListener; |
81 |
private TreeModelListener treeModelListener; |
private TreeModelListener treeModelListener; |
82 |
|
|
|
/** The UI instances for MetalTreeUIs */ |
|
|
private static HashMap instances = null; |
|
|
|
|
83 |
/** |
/** |
84 |
* Constructs a new instance of MetalTreeUI. |
* Constructs a new instance of <code>MetalTreeUI</code>. |
85 |
*/ |
*/ |
86 |
public MetalTreeUI() |
public MetalTreeUI() |
87 |
{ |
{ |
89 |
} |
} |
90 |
|
|
91 |
/** |
/** |
92 |
* Returns an instance of MetalTreeUI. |
* Returns a new instance of <code>MetalTreeUI</code>. |
93 |
* |
* |
94 |
* @param component the component for which we return an UI instance |
* @param component the component for which we return an UI instance |
95 |
* |
* |
96 |
* @return an instance of MetalTreeUI |
* @return A new instance of <code>MetalTreeUI</code>. |
97 |
*/ |
*/ |
98 |
public static ComponentUI createUI(JComponent component) |
public static ComponentUI createUI(JComponent component) |
99 |
{ |
{ |
100 |
if (instances == null) |
return new MetalTreeUI(); |
|
instances = new HashMap(); |
|
|
|
|
|
Object o = instances.get(component); |
|
|
MetalTreeUI instance; |
|
|
if (o == null) |
|
|
{ |
|
|
instance = new MetalTreeUI(); |
|
|
instances.put(component, instance); |
|
|
} |
|
|
else |
|
|
instance = (MetalTreeUI) o; |
|
|
|
|
|
return instance; |
|
101 |
} |
} |
102 |
|
|
103 |
/** |
/** |
140 |
rightChildIndent = defaults.getInt("Tree.rightChildIndent"); |
rightChildIndent = defaults.getInt("Tree.rightChildIndent"); |
141 |
leftChildIndent = defaults.getInt("Tree.leftChildIndent"); |
leftChildIndent = defaults.getInt("Tree.leftChildIndent"); |
142 |
setRowHeight(defaults.getInt("Tree.rowHeight")); |
setRowHeight(defaults.getInt("Tree.rowHeight")); |
143 |
|
tree.setRowHeight(defaults.getInt("Tree.rowHeight")); |
144 |
tree.requestFocusInWindow(false); |
tree.requestFocusInWindow(false); |
145 |
|
|
146 |
setExpandedIcon(defaults.getIcon("Tree.expandedIcon")); |
setExpandedIcon(defaults.getIcon("Tree.expandedIcon")); |
153 |
createdCellEditor = true; |
createdCellEditor = true; |
154 |
TreeModel mod = tree.getModel(); |
TreeModel mod = tree.getModel(); |
155 |
setModel(mod); |
setModel(mod); |
156 |
tree.setRootVisible(true); |
|
|
if (mod != null) |
|
|
tree.expandPath(new TreePath(mod.getRoot())); |
|
157 |
treeSelectionModel = tree.getSelectionModel(); |
treeSelectionModel = tree.getSelectionModel(); |
158 |
drawingCache = new Hashtable(); |
drawingCache = new Hashtable(); |
159 |
nodeDimensions = createNodeDimensions(); |
nodeDimensions = createNodeDimensions(); |
161 |
propertyChangeListener = createPropertyChangeListener(); |
propertyChangeListener = createPropertyChangeListener(); |
162 |
focusListener = createFocusListener(); |
focusListener = createFocusListener(); |
163 |
treeSelectionListener = createTreeSelectionListener(); |
treeSelectionListener = createTreeSelectionListener(); |
164 |
mouseInputListener = new MouseInputHandler(null, null, null); |
mouseListener = createMouseListener(); |
165 |
keyListener = createKeyListener(); |
keyListener = createKeyListener(); |
166 |
selectionModelPropertyChangeListener = createSelectionModelPropertyChangeListener(); |
selectionModelPropertyChangeListener = createSelectionModelPropertyChangeListener(); |
167 |
componentListener = createComponentListener(); |
componentListener = createComponentListener(); |
177 |
tree.addPropertyChangeListener(propertyChangeListener); |
tree.addPropertyChangeListener(propertyChangeListener); |
178 |
tree.addFocusListener(focusListener); |
tree.addFocusListener(focusListener); |
179 |
tree.addTreeSelectionListener(treeSelectionListener); |
tree.addTreeSelectionListener(treeSelectionListener); |
180 |
tree.addMouseListener(mouseInputListener); |
tree.addMouseListener(mouseListener); |
181 |
tree.addKeyListener(keyListener); |
tree.addKeyListener(keyListener); |
182 |
tree.addPropertyChangeListener(selectionModelPropertyChangeListener); |
tree.addPropertyChangeListener(selectionModelPropertyChangeListener); |
183 |
tree.addComponentListener(componentListener); |
tree.addComponentListener(componentListener); |
185 |
if (treeModel != null) |
if (treeModel != null) |
186 |
treeModel.addTreeModelListener(treeModelListener); |
treeModel.addTreeModelListener(treeModelListener); |
187 |
|
|
188 |
|
if (mod != null) |
189 |
|
{ |
190 |
|
TreePath path = new TreePath(mod.getRoot()); |
191 |
|
if (!tree.isExpanded(path)) |
192 |
|
toggleExpandState(path); |
193 |
|
} |
194 |
|
|
195 |
completeUIInstall(); |
completeUIInstall(); |
196 |
} |
} |
197 |
|
|
221 |
tree.removePropertyChangeListener(propertyChangeListener); |
tree.removePropertyChangeListener(propertyChangeListener); |
222 |
tree.removeFocusListener(focusListener); |
tree.removeFocusListener(focusListener); |
223 |
tree.removeTreeSelectionListener(treeSelectionListener); |
tree.removeTreeSelectionListener(treeSelectionListener); |
224 |
tree.removeMouseListener(mouseInputListener); |
tree.removeMouseListener(mouseListener); |
225 |
tree.removeKeyListener(keyListener); |
tree.removeKeyListener(keyListener); |
226 |
tree.removePropertyChangeListener(selectionModelPropertyChangeListener); |
tree.removePropertyChangeListener(selectionModelPropertyChangeListener); |
227 |
tree.removeComponentListener(componentListener); |
tree.removeComponentListener(componentListener); |