Lines 15-20
Link Here
|
15 |
|
15 |
|
16 |
import java.beans.*; |
16 |
import java.beans.*; |
17 |
import java.util.*; |
17 |
import java.util.*; |
|
|
18 |
import javax.swing.event.ChangeEvent; |
19 |
import javax.swing.event.ChangeListener; |
18 |
|
20 |
|
19 |
import org.openide.ErrorManager; |
21 |
import org.openide.ErrorManager; |
20 |
import org.openide.filesystems.FileObject; |
22 |
import org.openide.filesystems.FileObject; |
Lines 29-35
Link Here
|
29 |
* @author Jaroslav Tulach |
31 |
* @author Jaroslav Tulach |
30 |
*/ |
32 |
*/ |
31 |
final class FolderChildren extends Children.Keys |
33 |
final class FolderChildren extends Children.Keys |
32 |
implements PropertyChangeListener { |
34 |
implements PropertyChangeListener, ChangeListener { |
33 |
/** the folder */ |
35 |
/** the folder */ |
34 |
private DataFolder folder; |
36 |
private DataFolder folder; |
35 |
/** filter of objects */ |
37 |
/** filter of objects */ |
Lines 95-100
Link Here
|
95 |
return; |
97 |
return; |
96 |
} |
98 |
} |
97 |
} |
99 |
} |
|
|
100 |
|
101 |
public void stateChanged( ChangeEvent e ) { |
102 |
// Filtering changed need to recompute children |
103 |
//setKeys( Collections.EMPTY_SET ); |
104 |
refreshRunnable.refresh = true; |
105 |
refreshChildren().schedule(0); |
106 |
postClearTask(); |
107 |
return; |
108 |
} |
98 |
|
109 |
|
99 |
/** |
110 |
/** |
100 |
* refreshRunnable holds references to the data object |
111 |
* refreshRunnable holds references to the data object |
Lines 198-203
Link Here
|
198 |
protected void addNotify () { |
209 |
protected void addNotify () { |
199 |
// add as a listener for changes on nodes |
210 |
// add as a listener for changes on nodes |
200 |
folder.addPropertyChangeListener (listener); |
211 |
folder.addPropertyChangeListener (listener); |
|
|
212 |
// add listener to the filter |
213 |
if ( filter instanceof ChangeableDataFilter ) { |
214 |
((ChangeableDataFilter)filter).addChangeListener( this ); |
215 |
} |
201 |
// |
216 |
// |
202 |
active = true; |
217 |
active = true; |
203 |
// start the refresh task to compute the children |
218 |
// start the refresh task to compute the children |
Lines 209-214
Link Here
|
209 |
protected void removeNotify () { |
224 |
protected void removeNotify () { |
210 |
// removes the listener |
225 |
// removes the listener |
211 |
folder.removePropertyChangeListener (listener); |
226 |
folder.removePropertyChangeListener (listener); |
|
|
227 |
// remove listener from filter |
228 |
if ( filter instanceof ChangeableDataFilter ) { |
229 |
((ChangeableDataFilter)filter).removeChangeListener( this ); |
230 |
} |
212 |
// |
231 |
// |
213 |
active = false; |
232 |
active = false; |
214 |
// we don't call the setKeys directly here because |
233 |
// we don't call the setKeys directly here because |
Lines 233-242
Link Here
|
233 |
*/ |
252 |
*/ |
234 |
private DataObject[] ch; |
253 |
private DataObject[] ch; |
235 |
|
254 |
|
|
|
255 |
private boolean refresh; |
256 |
|
236 |
/** calls setKeys with the folder children |
257 |
/** calls setKeys with the folder children |
237 |
* or with empty collection if active is false |
258 |
* or with empty collection if active is false |
238 |
*/ |
259 |
*/ |
239 |
public void run() { |
260 |
public void run() { |
|
|
261 |
|
240 |
if (! active) { |
262 |
if (! active) { |
241 |
setKeys (java.util.Collections.EMPTY_SET); |
263 |
setKeys (java.util.Collections.EMPTY_SET); |
242 |
return; |
264 |
return; |
Lines 247-252
Link Here
|
247 |
keys[i] = new Pair(ch[i].getPrimaryFile()); |
269 |
keys[i] = new Pair(ch[i].getPrimaryFile()); |
248 |
} |
270 |
} |
249 |
setKeys(Arrays.asList(keys)); |
271 |
setKeys(Arrays.asList(keys)); |
|
|
272 |
|
273 |
if ( refresh ) { |
274 |
refresh = false; |
275 |
for (int i = 0; i < keys.length; i++) { |
276 |
refreshKey( keys[i] ); |
277 |
} |
278 |
} |
250 |
} |
279 |
} |
251 |
|
280 |
|
252 |
/** stop holding the references to the data objects. After |
281 |
/** stop holding the references to the data objects. After |