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.List;
23 import java.util.Vector;
24
25 import de.jaret.util.date.Interval;
26 import de.jaret.util.date.JaretDate;
27
28
29
30
31
32
33
34
35
36
37 public abstract class AbstractTimeBarModel implements TimeBarModel, TimeBarRowListener {
38
39 protected JaretDate _minDate;
40
41
42 protected JaretDate _maxDate;
43
44
45 protected List<TimeBarModelListener> _listenerList;
46
47
48
49
50 public JaretDate getMinDate() {
51 if (_minDate == null) {
52
53 return new JaretDate();
54 }
55 return _minDate.copy();
56 }
57
58
59
60
61 public JaretDate getMaxDate() {
62 if (_maxDate == null) {
63
64 return new JaretDate();
65 }
66 return _maxDate.copy();
67 }
68
69
70
71
72
73 public TimeBarRow getRowForInterval(Interval interval) {
74 for (int i = 0; i < getRowCount(); i++) {
75 if (getRow(i).getIntervals().contains(interval)) {
76 return getRow(i);
77 }
78 }
79 return null;
80 }
81
82
83
84
85 public synchronized void addTimeBarModelListener(TimeBarModelListener tbml) {
86 if (_listenerList == null) {
87 _listenerList = new Vector<TimeBarModelListener>();
88 }
89 _listenerList.add(tbml);
90 }
91
92
93
94
95 public void remTimeBarModelListener(TimeBarModelListener tbml) {
96 if (_listenerList != null) {
97 _listenerList.remove(tbml);
98 }
99 }
100
101
102
103
104 protected void fireModelDataChanged() {
105 if (_listenerList != null) {
106 for (TimeBarModelListener listener : _listenerList) {
107 listener.modelDataChanged(this);
108 }
109 }
110 }
111
112
113
114
115
116
117 protected void fireRowAdded(TimeBarRow row) {
118 if (_listenerList != null) {
119 for (TimeBarModelListener listener : _listenerList) {
120 listener.rowAdded(this, row);
121 }
122 }
123 }
124
125
126
127
128
129
130 protected void fireRowRemoved(TimeBarRow row) {
131 if (_listenerList != null) {
132 for (TimeBarModelListener listener : _listenerList) {
133 listener.rowRemoved(this, row);
134 }
135 }
136 }
137
138
139
140
141
142
143 protected void fireRowDataChanged(TimeBarRow row) {
144 if (_listenerList != null) {
145 for (TimeBarModelListener listener : _listenerList) {
146 listener.rowDataChanged(this, row);
147 }
148 }
149 }
150
151
152
153
154
155
156
157 protected void fireHeaderChanged(TimeBarRow row, TimeBarRowHeader header) {
158 if (_listenerList != null) {
159 for (TimeBarModelListener listener : _listenerList) {
160 listener.headerChanged(this, row, header);
161 }
162 }
163 }
164
165
166
167
168
169
170
171 protected void fireElementChanged(TimeBarRow row, Interval element) {
172 if (_listenerList != null) {
173 for (TimeBarModelListener listener : _listenerList) {
174 listener.elementChanged(this, row, element);
175 }
176 }
177 }
178
179
180
181
182
183
184
185 protected void fireElementAdded(TimeBarRow row, Interval element) {
186 if (_listenerList != null) {
187 for (TimeBarModelListener listener : _listenerList) {
188 listener.elementAdded(this, row, element);
189 }
190 }
191 }
192
193
194
195
196
197
198
199 protected void fireElementRemoved(TimeBarRow row, Interval element) {
200 if (_listenerList != null) {
201 for (TimeBarModelListener listener : _listenerList) {
202 listener.elementRemoved(this, row, element);
203 }
204 }
205 }
206
207
208
209
210 public void elementAdded(TimeBarRow row, Interval element) {
211 updateMinMax();
212 fireElementAdded(row, element);
213 }
214
215
216
217
218 public void elementRemoved(TimeBarRow row, Interval element) {
219 updateMinMax();
220 fireElementRemoved(row, element);
221 }
222
223
224
225
226 public void elementChanged(TimeBarRow row, Interval element) {
227 updateMinMax();
228 fireElementChanged(row, element);
229 }
230
231
232
233
234 public void headerChanged(TimeBarRow row, TimeBarRowHeader newHeader) {
235 fireHeaderChanged(row, newHeader);
236 }
237
238
239
240
241 public void rowDataChanged(TimeBarRow row) {
242 updateMinMax();
243 fireRowDataChanged(row);
244 }
245
246
247
248
249
250 protected void updateMinMax() {
251 _minDate = null;
252 _maxDate = null;
253 for (int i = 0; i < getRowCount(); i++) {
254 TimeBarRow r = getRow(i);
255 if ((_minDate == null && r.getMinDate() != null)
256 || (r.getMinDate() != null && _minDate.compareTo(r.getMinDate()) > 0)) {
257 _minDate = r.getMinDate().copy();
258 }
259 if ((_maxDate == null && r.getMaxDate() != null)
260 || (r.getMaxDate() != null && _maxDate.compareTo(r.getMaxDate()) < 0)) {
261 _maxDate = r.getMaxDate().copy();
262 }
263 }
264 }
265
266 }