1
2
3
4
5
6
7
8
9
10
11 package de.jaret.util.ui.table.model;
12
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Map;
16 import java.util.Vector;
17
18 /***
19 * Default implementation of a hierarchical view state.
20 *
21 * @author Peter Kliem
22 * @version $Id: DefaultHierarchicalTableViewState.java 179 2007-01-07 17:37:50Z olk $
23 */
24 public class DefaultHierarchicalTableViewState extends DefaultTableViewState implements IHierarchicalTableViewState {
25 /*** listener list. */
26 protected List<IHierarchicalTableViewStateListener> _listeners;
27
28 /*** map holding the node expanded states. */
29 protected Map<ITableNode, Boolean> _expandedStatesMap = new HashMap<ITableNode, Boolean>();
30
31 /***
32 * {@inheritDoc}
33 */
34 public boolean isExpanded(ITableNode node) {
35 Boolean state = _expandedStatesMap.get(node);
36 return !(state == null || !state.booleanValue());
37 }
38
39 /***
40 * {@inheritDoc}
41 */
42 public void setExpanded(ITableNode node, boolean expanded) {
43 boolean state = isExpanded(node);
44 if (state != expanded) {
45 _expandedStatesMap.put(node, expanded);
46 if (expanded) {
47 fireNodeExpanded(node);
48 } else {
49 fireNodeFolded(node);
50 }
51 }
52 }
53
54 /***
55 * {@inheritDoc}
56 */
57 public void setExpandedRecursive(ITableNode node, boolean expanded) {
58 if (node.getChildren().size() > 0) {
59 setExpanded(node, expanded);
60 for (ITableNode child : node.getChildren()) {
61 setExpandedRecursive(child, expanded);
62 }
63 }
64 }
65
66 /***
67 * {@inheritDoc}
68 */
69 public synchronized void addHierarchicalViewstateListener(IHierarchicalTableViewStateListener htvsListener) {
70 if (_listeners == null) {
71 _listeners = new Vector<IHierarchicalTableViewStateListener>();
72 }
73 _listeners.add(htvsListener);
74 }
75
76 /***
77 * {@inheritDoc}
78 */
79 public void remHierarchicalViewStateListener(IHierarchicalTableViewStateListener htvsListener) {
80 if (_listeners != null) {
81 _listeners.remove(htvsListener);
82 }
83 }
84
85 /***
86 * Inform listeners about a node expansion.
87 *
88 * @param node expanded node
89 */
90 protected void fireNodeExpanded(ITableNode node) {
91 if (_listeners != null) {
92 for (IHierarchicalTableViewStateListener listener : _listeners) {
93 listener.nodeExpanded(node);
94 }
95 }
96 }
97
98 /***
99 * Infor listeners about a folded node.
100 *
101 * @param node node that has been folded
102 */
103 protected void fireNodeFolded(ITableNode node) {
104 if (_listeners != null) {
105 for (IHierarchicalTableViewStateListener listener : _listeners) {
106 listener.nodeFolded(node);
107 }
108 }
109 }
110 }