package org.exist.client.xacml; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JTree; import javax.swing.Timer; import javax.swing.tree.TreePath; public class NodeExpander implements ActionListener { private static final int EXPAND_DELAY = 1000; private Timer expandTimer; private JTree tree; private XACMLTreeNode contextNode; public NodeExpander(JTree tree) { this.tree = tree; expandTimer = new Timer(EXPAND_DELAY, this); expandTimer.setRepeats(false); } public void actionPerformed(ActionEvent event) { if(contextNode == null) return; TreePath path = XACMLTreeModel.getPathToNode(contextNode); tree.expandPath(path); contextNode = null; } public void hover(XACMLTreeNode contextNode) { this.contextNode = contextNode; expandTimer.restart(); } public void stop() { expandTimer.stop(); this.contextNode = null; } }