source: branches/2.2/jabberit_messenger/java_source/src/nu/fw/jeti/util/TreeExpander.java @ 3102

Revision 3102, 2.6 KB checked in by amuller, 14 years ago (diff)

Ticket #986 - Efetuado merge para o Branch 2.2( atualizacao do modulo)

  • Property svn:executable set to *
Line 
1package nu.fw.jeti.util;
2
3import java.util.Hashtable;
4
5import javax.swing.JTree;
6import javax.swing.SwingUtilities;
7import javax.swing.event.TreeExpansionEvent;
8import javax.swing.event.TreeExpansionListener;
9import javax.swing.event.TreeModelEvent;
10import javax.swing.event.TreeModelListener;
11import javax.swing.tree.TreeModel;
12import javax.swing.tree.TreePath;
13
14/**
15 * Used to filter some nodes from a tree. That is nodes which the
16 * selector decides not to show does not seem to exist in the tree.
17 * The selector is assumed to not change behavior over time.
18 *
19 * @author Martin Forssen
20 */
21
22public class TreeExpander implements TreeExpansionListener, TreeModelListener {
23    private JTree tree;
24    private Hashtable known = new Hashtable();
25
26    public TreeExpander(JTree tree, TreeModel model) {
27        this.tree = tree;
28
29        tree.addTreeExpansionListener(this);
30        model.addTreeModelListener(this);
31    }
32
33    public void expand(TreePath path) {
34        //System.out.println("Expand: " + path + " " + tree.isCollapsed(path) + " " + tree.isExpanded(path));
35        known.put(path, new Boolean(true));
36        tree.expandPath(path);
37    }
38
39    /*
40     * TreeModelListener interface
41     */
42    public void treeNodesChanged(TreeModelEvent e) {
43        //System.out.println("changed: " + e);
44    }
45
46    public void treeNodesInserted(TreeModelEvent e) {
47        //System.out.println("inserted: " + e);
48    }
49
50    public void treeNodesRemoved(TreeModelEvent e) {
51        //System.out.println("removed: " + e);
52    }
53
54    public void treeStructureChanged(TreeModelEvent e) {
55        //System.out.println("structChanged: " + e.getTreePath());
56        Boolean b = (Boolean)known.get(e.getTreePath());
57        if (b != null && b.booleanValue()) {
58            // System.out.println("do expand");
59            //if (!tree.isExpanded(e.getTreePath())) {
60                tree.expandPath(e.getTreePath());
61                //}
62                //} else {
63                //System.out.println("Do nothing: " + b);
64        }
65    }
66
67    /*
68     * TreeExpansionListener
69     */
70    public void treeExpanded(TreeExpansionEvent event) {
71        //System.out.println("expanded: " + event.getPath());
72        Boolean b = (Boolean)known.get(event.getPath());
73        if (b == null && !b.booleanValue()) {
74            known.put(event.getPath(), Boolean.FALSE);
75        }
76    }
77
78    public void treeCollapsed(TreeExpansionEvent event) {
79        //System.out.println("collapsed: " + event.getPath());
80        Boolean b = (Boolean)known.get(event.getPath());
81        if (b != null && b.booleanValue()) {
82            known.put(event.getPath(), Boolean.FALSE);
83        }
84    }
85}
Note: See TracBrowser for help on using the repository browser.