1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package de.jaret.util.ui.timebars.model;
21
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.List;
25 import java.util.Map;
26
27
28
29
30
31
32
33
34 public class HierarchicalViewStateImpl implements HierarchicalViewState {
35
36 protected List<HierarchicalViewStateListener> _listenerList;
37
38
39 protected Map<TimeBarNode, Boolean> _stateMap = new HashMap<TimeBarNode, Boolean>();
40
41
42
43
44 public boolean isExpanded(TimeBarNode node) {
45 Boolean state = _stateMap.get(node);
46 if (state == null) {
47 return false;
48 }
49 return state.booleanValue();
50 }
51
52
53
54
55 public void setExpanded(TimeBarNode node, boolean expanded) {
56 Boolean oldState = _stateMap.get(node);
57 Boolean state = Boolean.valueOf(expanded);
58 _stateMap.put(node, state);
59 if (expanded) {
60 if (oldState == null || !oldState.booleanValue()) {
61 fireNodeExpanded(node);
62 }
63 } else {
64 if (oldState != null && oldState.booleanValue()) {
65 fireNodeFolded(node);
66 }
67 }
68 }
69
70
71
72
73 public void setExpandedRecursive(TimeBarNode node, boolean expanded) {
74 if (node.getChildren().size() > 0) {
75 setExpanded(node, expanded);
76 for (TimeBarNode child : node.getChildren()) {
77 setExpandedRecursive(child, expanded);
78 }
79 }
80 }
81
82
83
84
85 public void addHierarchicalViewstateListener(HierarchicalViewStateListener hvsListener) {
86 if (_listenerList == null) {
87 _listenerList = new ArrayList<HierarchicalViewStateListener>();
88 }
89 _listenerList.add(hvsListener);
90 }
91
92
93
94
95 public void remHierarchicalViewStateListener(HierarchicalViewStateListener hvsListener) {
96 if (_listenerList != null) {
97 _listenerList.remove(hvsListener);
98 }
99 }
100
101
102
103
104
105
106 private void fireNodeExpanded(TimeBarNode node) {
107 if (_listenerList != null) {
108 for (HierarchicalViewStateListener hvsl : _listenerList) {
109 hvsl.nodeExpanded(node);
110 }
111 }
112 }
113
114
115
116
117
118
119 private void fireNodeFolded(TimeBarNode node) {
120 if (_listenerList != null) {
121 for (HierarchicalViewStateListener hvsl : _listenerList) {
122 hvsl.nodeFolded(node);
123 }
124 }
125 }
126
127 }