# HG changeset patch # User Jesse Glick # Date 1226965387 18000 # Node ID 6098aec623cb67d3c6edb6ebf00503e312a7af60 # Parent f5754470583638b24aa699e86b6a1ab2745b3e2a Fixing fix of #150747; FileObject-based filters should use the same criteria as DataObject-based. diff -r f57544705836 -r 6098aec623cb ant.freeform/src/org/netbeans/modules/ant/freeform/ui/FolderNodeFactory.java --- a/ant.freeform/src/org/netbeans/modules/ant/freeform/ui/FolderNodeFactory.java Wed Oct 22 19:42:08 2008 +0200 +++ b/ant.freeform/src/org/netbeans/modules/ant/freeform/ui/FolderNodeFactory.java Mon Nov 17 18:43:07 2008 -0500 @@ -89,7 +89,6 @@ import org.openide.util.ImageUtilities; import org.openide.util.Lookup; import org.openide.util.RequestProcessor; -import org.openide.util.Utilities; import org.openide.util.actions.SystemAction; import org.openide.util.lookup.Lookups; import org.w3c.dom.Element; @@ -261,20 +260,19 @@ } - static final class VisibilityQueryDataFilter implements ChangeListener, ChangeableDataFilter, DataFilter.FileBased { + private static final class GroupDataFilter implements ChangeListener, ChangeableDataFilter, DataFilter.FileBased { private final ChangeSupport cs = new ChangeSupport(this); private final FileObject root; private final PathMatcher matcher; - public VisibilityQueryDataFilter(FileObject root, String includes, String excludes) { + public GroupDataFilter(FileObject root, String includes, String excludes) { this.root = root; matcher = new PathMatcher(includes, excludes, FileUtil.toFile(root)); VisibilityQuery.getDefault().addChangeListener( this ); } - public boolean acceptDataObject(DataObject obj) { - FileObject fo = obj.getPrimaryFile(); + public boolean acceptFileObject(FileObject fo) { String path = FileUtil.getRelativePath(root, fo); assert path != null : fo + " not in " + root; //NOI18N if (fo.isFolder()) { @@ -298,8 +296,8 @@ cs.removeChangeListener(listener); } - public boolean acceptFileObject(FileObject fo) { - return VisibilityQuery.getDefault().isVisible(fo); + public boolean acceptDataObject(DataObject d) { + return acceptFileObject(d.getPrimaryFile()); } } @@ -317,7 +315,7 @@ } public ViewItemNode(DataFolder folder, String includes, String excludes, String name, String displayName) { - super(folder.getNodeDelegate(), folder.createNodeChildren(new VisibilityQueryDataFilter(folder.getPrimaryFile(), includes, excludes))); + super(folder.getNodeDelegate(), folder.createNodeChildren(new GroupDataFilter(folder.getPrimaryFile(), includes, excludes))); this.name = name; this.displayName = displayName; } diff -r f57544705836 -r 6098aec623cb favorites/src/org/netbeans/modules/favorites/Favorites.java --- a/favorites/src/org/netbeans/modules/favorites/Favorites.java Wed Oct 22 19:42:08 2008 +0200 +++ b/favorites/src/org/netbeans/modules/favorites/Favorites.java Mon Nov 17 18:43:07 2008 -0500 @@ -308,7 +308,7 @@ } public boolean acceptDataObject(DataObject obj) { - return VisibilityQuery.getDefault().isVisible(obj.getPrimaryFile()); + return acceptFileObject(obj.getPrimaryFile()); } public void addChangeListener(ChangeListener listener) { diff -r f57544705836 -r 6098aec623cb java.project/src/org/netbeans/spi/java/project/support/ui/PackageViewChildren.java --- a/java.project/src/org/netbeans/spi/java/project/support/ui/PackageViewChildren.java Wed Oct 22 19:42:08 2008 +0200 +++ b/java.project/src/org/netbeans/spi/java/project/support/ui/PackageViewChildren.java Mon Nov 17 18:43:07 2008 -0500 @@ -1141,8 +1141,7 @@ } public boolean acceptDataObject(DataObject obj) { - FileObject fo = obj.getPrimaryFile(); - return fo.isValid() && VisibilityQuery.getDefault().isVisible(fo) && !(obj instanceof DataFolder) && group.contains(fo); + return acceptFileObject(obj.getPrimaryFile()); } public void stateChanged( ChangeEvent e) { @@ -1158,7 +1157,7 @@ } public boolean acceptFileObject(FileObject fo) { - return VisibilityQuery.getDefault().isVisible(fo); + return fo.isValid() && VisibilityQuery.getDefault().isVisible(fo) && fo.isData() && group.contains(fo); } } diff -r f57544705836 -r 6098aec623cb java.project/src/org/netbeans/spi/java/project/support/ui/TreeRootNode.java --- a/java.project/src/org/netbeans/spi/java/project/support/ui/TreeRootNode.java Wed Oct 22 19:42:08 2008 +0200 +++ b/java.project/src/org/netbeans/spi/java/project/support/ui/TreeRootNode.java Mon Nov 17 18:43:07 2008 -0500 @@ -52,7 +52,6 @@ import javax.swing.Icon; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import javax.swing.event.EventListenerList; import org.netbeans.api.project.SourceGroup; import org.netbeans.api.queries.VisibilityQuery; import org.openide.DialogDisplayer; @@ -67,6 +66,7 @@ import org.openide.nodes.Node; import org.openide.nodes.NodeNotFoundException; import org.openide.nodes.NodeOp; +import org.openide.util.ChangeSupport; import org.openide.util.NbBundle; import org.openide.util.Utilities; import org.openide.util.WeakListeners; @@ -89,7 +89,7 @@ } private TreeRootNode(DataFolder folder, SourceGroup g) { - this(new FilterNode(folder.getNodeDelegate(), folder.createNodeChildren(new VisibilityQueryDataFilter(g))), g); + this(new FilterNode(folder.getNodeDelegate(), folder.createNodeChildren(new GroupDataFilter(g))), g); } private TreeRootNode (Node originalNode, SourceGroup g) { @@ -205,58 +205,44 @@ } } - private static final class VisibilityQueryDataFilter implements ChangeListener, PropertyChangeListener, + private static final class GroupDataFilter implements ChangeListener, PropertyChangeListener, ChangeableDataFilter, DataFilter.FileBased { private static final long serialVersionUID = 1L; // in case a DataFolder.ClonedFilterHandle saves me - private final EventListenerList ell = new EventListenerList(); + private final ChangeSupport cs = new ChangeSupport(this); private final SourceGroup g; - public VisibilityQueryDataFilter(SourceGroup g) { + public GroupDataFilter(SourceGroup g) { this.g = g; VisibilityQuery.getDefault().addChangeListener(WeakListeners.change(this, VisibilityQuery.getDefault())); g.addPropertyChangeListener(WeakListeners.propertyChange(this, g)); } public boolean acceptDataObject(DataObject obj) { - FileObject fo = obj.getPrimaryFile(); - return g.contains(fo) && VisibilityQuery.getDefault().isVisible(fo); + return acceptFileObject(obj.getPrimaryFile()); } public void stateChanged(ChangeEvent e) { - fireChange(); + cs.fireChange(); } public void propertyChange(PropertyChangeEvent e) { if (SourceGroup.PROP_CONTAINERSHIP.equals(e.getPropertyName())) { - fireChange(); + cs.fireChange(); } } - private void fireChange() { - Object[] listeners = ell.getListenerList(); - ChangeEvent event = null; - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == ChangeListener.class) { - if (event == null) { - event = new ChangeEvent(this); - } - ((ChangeListener) listeners[i+1]).stateChanged(event); - } - } - } - public void addChangeListener(ChangeListener listener) { - ell.add(ChangeListener.class, listener); + cs.addChangeListener(listener); } public void removeChangeListener(ChangeListener listener) { - ell.remove(ChangeListener.class, listener); + cs.removeChangeListener(listener); } public boolean acceptFileObject(FileObject fo) { - return VisibilityQuery.getDefault().isVisible(fo); + return g.contains(fo) && VisibilityQuery.getDefault().isVisible(fo); } } diff -r f57544705836 -r 6098aec623cb projectui/src/org/netbeans/modules/project/ui/PhysicalView.java --- a/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java Wed Oct 22 19:42:08 2008 +0200 +++ b/projectui/src/org/netbeans/modules/project/ui/PhysicalView.java Mon Nov 17 18:43:07 2008 -0500 @@ -151,7 +151,7 @@ } public boolean acceptDataObject(DataObject obj) { - return VisibilityQuery.getDefault().isVisible(obj.getPrimaryFile()); + return acceptFileObject(obj.getPrimaryFile()); } public void stateChanged( ChangeEvent e) {