This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 150747
Collapse All | Expand All

(-)a/ant.freeform/src/org/netbeans/modules/ant/freeform/ui/FolderNodeFactory.java (-8 / +6 lines)
Lines 89-95 Link Here
89
import org.openide.util.ImageUtilities;
89
import org.openide.util.ImageUtilities;
90
import org.openide.util.Lookup;
90
import org.openide.util.Lookup;
91
import org.openide.util.RequestProcessor;
91
import org.openide.util.RequestProcessor;
92
import org.openide.util.Utilities;
93
import org.openide.util.actions.SystemAction;
92
import org.openide.util.actions.SystemAction;
94
import org.openide.util.lookup.Lookups;
93
import org.openide.util.lookup.Lookups;
95
import org.w3c.dom.Element;
94
import org.w3c.dom.Element;
Lines 261-280 Link Here
261
    }
260
    }
262
    
261
    
263
    
262
    
264
    static final class VisibilityQueryDataFilter implements ChangeListener, ChangeableDataFilter, DataFilter.FileBased {
263
    private static final class GroupDataFilter implements ChangeListener, ChangeableDataFilter, DataFilter.FileBased {
265
        
264
        
266
        private final ChangeSupport cs = new ChangeSupport(this);
265
        private final ChangeSupport cs = new ChangeSupport(this);
267
        private final FileObject root;
266
        private final FileObject root;
268
        private final PathMatcher matcher;
267
        private final PathMatcher matcher;
269
        
268
        
270
        public VisibilityQueryDataFilter(FileObject root, String includes, String excludes) {
269
        public GroupDataFilter(FileObject root, String includes, String excludes) {
271
            this.root = root;
270
            this.root = root;
272
            matcher = new PathMatcher(includes, excludes, FileUtil.toFile(root));
271
            matcher = new PathMatcher(includes, excludes, FileUtil.toFile(root));
273
            VisibilityQuery.getDefault().addChangeListener( this );
272
            VisibilityQuery.getDefault().addChangeListener( this );
274
        }
273
        }
275
                
274
                
276
        public boolean acceptDataObject(DataObject obj) {                
275
        public boolean acceptFileObject(FileObject fo) {
277
            FileObject fo = obj.getPrimaryFile();                
278
            String path = FileUtil.getRelativePath(root, fo);
276
            String path = FileUtil.getRelativePath(root, fo);
279
            assert path != null : fo + " not in " + root;  //NOI18N
277
            assert path != null : fo + " not in " + root;  //NOI18N
280
            if (fo.isFolder()) {
278
            if (fo.isFolder()) {
Lines 298-305 Link Here
298
            cs.removeChangeListener(listener);
296
            cs.removeChangeListener(listener);
299
        }
297
        }
300
298
301
        public boolean acceptFileObject(FileObject fo) {
299
        public boolean acceptDataObject(DataObject d) {
302
            return VisibilityQuery.getDefault().isVisible(fo);
300
            return acceptFileObject(d.getPrimaryFile());
303
        }
301
        }
304
        
302
        
305
    }
303
    }
Lines 317-323 Link Here
317
        }
315
        }
318
        
316
        
319
        public ViewItemNode(DataFolder folder, String includes, String excludes, String name, String displayName) {
317
        public ViewItemNode(DataFolder folder, String includes, String excludes, String name, String displayName) {
320
            super(folder.getNodeDelegate(), folder.createNodeChildren(new VisibilityQueryDataFilter(folder.getPrimaryFile(), includes, excludes)));
318
            super(folder.getNodeDelegate(), folder.createNodeChildren(new GroupDataFilter(folder.getPrimaryFile(), includes, excludes)));
321
            this.name = name;
319
            this.name = name;
322
            this.displayName = displayName;
320
            this.displayName = displayName;
323
        }
321
        }
(-)a/favorites/src/org/netbeans/modules/favorites/Favorites.java (-1 / +1 lines)
Lines 308-314 Link Here
308
        }
308
        }
309
309
310
        public boolean acceptDataObject(DataObject obj) {
310
        public boolean acceptDataObject(DataObject obj) {
311
            return VisibilityQuery.getDefault().isVisible(obj.getPrimaryFile());
311
            return acceptFileObject(obj.getPrimaryFile());
312
        }
312
        }
313
313
314
        public void addChangeListener(ChangeListener listener) {
314
        public void addChangeListener(ChangeListener listener) {
(-)a/java.project/src/org/netbeans/spi/java/project/support/ui/PackageViewChildren.java (-3 / +2 lines)
Lines 1141-1148 Link Here
1141
        }
1141
        }
1142
                
1142
                
1143
        public boolean acceptDataObject(DataObject obj) {                
1143
        public boolean acceptDataObject(DataObject obj) {                
1144
            FileObject fo = obj.getPrimaryFile();                
1144
            return acceptFileObject(obj.getPrimaryFile());
1145
            return  fo.isValid() && VisibilityQuery.getDefault().isVisible(fo) && !(obj instanceof DataFolder) && group.contains(fo);
1146
        }
1145
        }
1147
        
1146
        
1148
        public void stateChanged( ChangeEvent e) {            
1147
        public void stateChanged( ChangeEvent e) {            
Lines 1158-1164 Link Here
1158
        }
1157
        }
1159
1158
1160
        public boolean acceptFileObject(FileObject fo) {
1159
        public boolean acceptFileObject(FileObject fo) {
1161
            return VisibilityQuery.getDefault().isVisible(fo);
1160
            return  fo.isValid() && VisibilityQuery.getDefault().isVisible(fo) && fo.isData() && group.contains(fo);
1162
        }
1161
        }
1163
        
1162
        
1164
    }
1163
    }
(-)a/java.project/src/org/netbeans/spi/java/project/support/ui/TreeRootNode.java (-25 / +11 lines)
Lines 52-58 Link Here
52
import javax.swing.Icon;
52
import javax.swing.Icon;
53
import javax.swing.event.ChangeEvent;
53
import javax.swing.event.ChangeEvent;
54
import javax.swing.event.ChangeListener;
54
import javax.swing.event.ChangeListener;
55
import javax.swing.event.EventListenerList;
56
import org.netbeans.api.project.SourceGroup;
55
import org.netbeans.api.project.SourceGroup;
57
import org.netbeans.api.queries.VisibilityQuery;
56
import org.netbeans.api.queries.VisibilityQuery;
58
import org.openide.DialogDisplayer;
57
import org.openide.DialogDisplayer;
Lines 67-72 Link Here
67
import org.openide.nodes.Node;
66
import org.openide.nodes.Node;
68
import org.openide.nodes.NodeNotFoundException;
67
import org.openide.nodes.NodeNotFoundException;
69
import org.openide.nodes.NodeOp;
68
import org.openide.nodes.NodeOp;
69
import org.openide.util.ChangeSupport;
70
import org.openide.util.NbBundle;
70
import org.openide.util.NbBundle;
71
import org.openide.util.Utilities;
71
import org.openide.util.Utilities;
72
import org.openide.util.WeakListeners;
72
import org.openide.util.WeakListeners;
Lines 89-95 Link Here
89
    }
89
    }
90
    
90
    
91
    private TreeRootNode(DataFolder folder, SourceGroup g) {
91
    private TreeRootNode(DataFolder folder, SourceGroup g) {
92
        this(new FilterNode(folder.getNodeDelegate(), folder.createNodeChildren(new VisibilityQueryDataFilter(g))), g);
92
        this(new FilterNode(folder.getNodeDelegate(), folder.createNodeChildren(new GroupDataFilter(g))), g);
93
    }
93
    }
94
    
94
    
95
    private TreeRootNode (Node originalNode, SourceGroup g) {
95
    private TreeRootNode (Node originalNode, SourceGroup g) {
Lines 205-262 Link Here
205
        }
205
        }
206
    }
206
    }
207
    
207
    
208
    private static final class VisibilityQueryDataFilter implements ChangeListener, PropertyChangeListener, 
208
    private static final class GroupDataFilter implements ChangeListener, PropertyChangeListener,
209
            ChangeableDataFilter, DataFilter.FileBased {
209
            ChangeableDataFilter, DataFilter.FileBased {
210
        
210
        
211
        private static final long serialVersionUID = 1L; // in case a DataFolder.ClonedFilterHandle saves me
211
        private static final long serialVersionUID = 1L; // in case a DataFolder.ClonedFilterHandle saves me
212
        
212
        
213
        private final EventListenerList ell = new EventListenerList();
213
        private final ChangeSupport cs = new ChangeSupport(this);
214
        private final SourceGroup g;
214
        private final SourceGroup g;
215
        
215
        
216
        public VisibilityQueryDataFilter(SourceGroup g) {
216
        public GroupDataFilter(SourceGroup g) {
217
            this.g = g;
217
            this.g = g;
218
            VisibilityQuery.getDefault().addChangeListener(WeakListeners.change(this, VisibilityQuery.getDefault()));
218
            VisibilityQuery.getDefault().addChangeListener(WeakListeners.change(this, VisibilityQuery.getDefault()));
219
            g.addPropertyChangeListener(WeakListeners.propertyChange(this, g));
219
            g.addPropertyChangeListener(WeakListeners.propertyChange(this, g));
220
        }
220
        }
221
        
221
        
222
        public boolean acceptDataObject(DataObject obj) {
222
        public boolean acceptDataObject(DataObject obj) {
223
            FileObject fo = obj.getPrimaryFile();
223
            return acceptFileObject(obj.getPrimaryFile());
224
            return g.contains(fo) && VisibilityQuery.getDefault().isVisible(fo);
225
        }
224
        }
226
        
225
        
227
        public void stateChanged(ChangeEvent e) {
226
        public void stateChanged(ChangeEvent e) {
228
            fireChange();
227
            cs.fireChange();
229
        }
228
        }
230
        
229
        
231
        public void propertyChange(PropertyChangeEvent e) {
230
        public void propertyChange(PropertyChangeEvent e) {
232
            if (SourceGroup.PROP_CONTAINERSHIP.equals(e.getPropertyName())) {
231
            if (SourceGroup.PROP_CONTAINERSHIP.equals(e.getPropertyName())) {
233
                fireChange();
232
                cs.fireChange();
234
            }
233
            }
235
        }
234
        }
236
235
237
        private void fireChange() {
238
            Object[] listeners = ell.getListenerList();
239
            ChangeEvent event = null;
240
            for (int i = listeners.length - 2; i >= 0; i -= 2) {
241
                if (listeners[i] == ChangeListener.class) {
242
                    if (event == null) {
243
                        event = new ChangeEvent(this);
244
                    }
245
                    ((ChangeListener) listeners[i+1]).stateChanged(event);
246
                }
247
            }
248
        }
249
        
250
        public void addChangeListener(ChangeListener listener) {
236
        public void addChangeListener(ChangeListener listener) {
251
            ell.add(ChangeListener.class, listener);
237
            cs.addChangeListener(listener);
252
        }
238
        }
253
        
239
        
254
        public void removeChangeListener(ChangeListener listener) {
240
        public void removeChangeListener(ChangeListener listener) {
255
            ell.remove(ChangeListener.class, listener);
241
            cs.removeChangeListener(listener);
256
        }
242
        }
257
243
258
        public boolean acceptFileObject(FileObject fo) {
244
        public boolean acceptFileObject(FileObject fo) {
259
            return VisibilityQuery.getDefault().isVisible(fo);
245
            return g.contains(fo) && VisibilityQuery.getDefault().isVisible(fo);
260
        }
246
        }
261
        
247
        
262
    }
248
    }
(-)a/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java (-1 / +1 lines)
Lines 151-157 Link Here
151
        }
151
        }
152
                
152
                
153
        public boolean acceptDataObject(DataObject obj) {
153
        public boolean acceptDataObject(DataObject obj) {
154
            return VisibilityQuery.getDefault().isVisible(obj.getPrimaryFile());
154
            return acceptFileObject(obj.getPrimaryFile());
155
        }
155
        }
156
        
156
        
157
        public void stateChanged( ChangeEvent e) {            
157
        public void stateChanged( ChangeEvent e) {            

Return to bug 150747