Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 149964 Details for
Bug 291755
[Filters] Filters implementation and API cleanup
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Fix v01
291755_20091020.txt (text/plain), 33.57 KB, created by
Szymon Brandys
on 2009-10-20 06:11:57 EDT
(
hide
)
Description:
Fix v01
Filename:
MIME Type:
Creator:
Szymon Brandys
Created:
2009-10-20 06:11:57 EDT
Size:
33.57 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.core.resources >Index: src/org/eclipse/core/internal/resources/Filter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Filter.java,v >retrieving revision 1.2 >diff -u -r1.2 Filter.java >--- src/org/eclipse/core/internal/resources/Filter.java 5 Oct 2009 21:40:28 -0000 1.2 >+++ src/org/eclipse/core/internal/resources/Filter.java 20 Oct 2009 10:14:18 -0000 >@@ -7,6 +7,7 @@ > * > * Contributors: > * Serge Beauchamp (Freescale Semiconductor) - initial API and implementation >+ * IBM Corporation - ongoing implementation > *******************************************************************************/ > package org.eclipse.core.internal.resources; > >@@ -64,7 +65,7 @@ > return false; > } > >- public String getArguments() { >+ public Object getArguments() { > return description.getArguments(); > } > >Index: src/org/eclipse/core/internal/resources/FilterDescription.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/FilterDescription.java,v >retrieving revision 1.2 >diff -u -r1.2 FilterDescription.java >--- src/org/eclipse/core/internal/resources/FilterDescription.java 5 Oct 2009 21:40:29 -0000 1.2 >+++ src/org/eclipse/core/internal/resources/FilterDescription.java 20 Oct 2009 10:14:18 -0000 >@@ -7,27 +7,23 @@ > * > * Contributors: > * Serge Beauchamp (Freescale Semiconductor) - initial API and implementation >+ * IBM Corporation - ongoing implementation > *******************************************************************************/ > package org.eclipse.core.internal.resources; > > import java.util.Iterator; >- > import java.util.LinkedList; >-import org.eclipse.core.runtime.IPath; >- >-import org.eclipse.core.resources.IResourceFilter; >- >-import org.eclipse.core.resources.IResource; >+import org.eclipse.core.resources.*; > import org.eclipse.core.runtime.*; > > /** > * Class for describing the characteristics of filters that are stored > * in the project description. > */ >-public class FilterDescription implements Comparable { >+public class FilterDescription implements Comparable, IResourceFilter { > > private String id; >- private String arguments; >+ private Object arguments; > > /** > * The project relative path. >@@ -45,7 +41,7 @@ > this.arguments = null; > } > >- public FilterDescription(IResource resource, int type, String filterID, String arguments) { >+ public FilterDescription(IResource resource, int type, String filterID, Object arguments) { > super(); > Assert.isNotNull(resource); > Assert.isNotNull(filterID); >@@ -55,7 +51,7 @@ > this.arguments = arguments; > } > >- public FilterDescription(IPath projectRelativePath, int type, String filterID, String arguments) { >+ private FilterDescription(IPath projectRelativePath, int type, String filterID, Object arguments) { > super(); > Assert.isNotNull(projectRelativePath); > Assert.isNotNull(filterID); >@@ -69,17 +65,14 @@ > if (!(o.getClass() == FilterDescription.class)) > return false; > FilterDescription other = (FilterDescription) o; >- return path.equals(other.path) && >- type == other.type && >- id.equals(other.id)&& >- ((arguments == null) ? (arguments == other.arguments) : (arguments.equals(other.arguments))); >+ return path.equals(other.path) && type == other.type && id.equals(other.id) && ((arguments == null) ? (arguments == other.arguments) : (arguments.equals(other.arguments))); > } > > public String getFilterID() { > return id; > } > >- public String getArguments() { >+ public Object getArguments() { > return arguments; > } > >@@ -103,7 +96,7 @@ > this.id = id; > } > >- public void setArguments(String arguments) { >+ public void setArguments(Object arguments) { > this.arguments = arguments; > } > >@@ -148,4 +141,16 @@ > } > return copy; > } >+ >+ public String getId() { >+ return id; >+ } >+ >+ public IPath getPath() { >+ return path; >+ } >+ >+ public IProject getProject() { >+ return null; >+ } > } >Index: src/org/eclipse/core/internal/resources/ModelObjectWriter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ModelObjectWriter.java,v >retrieving revision 1.32 >diff -u -r1.32 ModelObjectWriter.java >--- src/org/eclipse/core/internal/resources/ModelObjectWriter.java 13 Oct 2009 09:28:08 -0000 1.32 >+++ src/org/eclipse/core/internal/resources/ModelObjectWriter.java 20 Oct 2009 10:14:18 -0000 >@@ -20,8 +20,7 @@ > import org.eclipse.core.internal.events.BuildCommand; > import org.eclipse.core.internal.localstore.SafeFileOutputStream; > import org.eclipse.core.internal.utils.FileUtil; >-import org.eclipse.core.resources.IProject; >-import org.eclipse.core.resources.IncrementalProjectBuilder; >+import org.eclipse.core.resources.*; > import org.eclipse.core.runtime.IPath; > > // >@@ -76,10 +75,7 @@ > //cases to avoid dirtying .project files unnecessarily. > if (!command.isConfigurable()) > return false; >- return !command.isBuilding(IncrementalProjectBuilder.AUTO_BUILD) || >- !command.isBuilding(IncrementalProjectBuilder.CLEAN_BUILD) || >- !command.isBuilding(IncrementalProjectBuilder.FULL_BUILD) || >- !command.isBuilding(IncrementalProjectBuilder.INCREMENTAL_BUILD); >+ return !command.isBuilding(IncrementalProjectBuilder.AUTO_BUILD) || !command.isBuilding(IncrementalProjectBuilder.CLEAN_BUILD) || !command.isBuilding(IncrementalProjectBuilder.FULL_BUILD) || !command.isBuilding(IncrementalProjectBuilder.INCREMENTAL_BUILD); > } > > protected void write(LinkDescription description, XMLWriter writer) { >@@ -93,14 +89,27 @@ > writer.endTag(LINK); > } > >- protected void write(FilterDescription description, XMLWriter writer) { >+ protected void write(IResourceFilter description, XMLWriter writer) { > writer.startTag(FILTER, null); > if (description != null) { >- writer.printSimpleTag(NAME, description.getProjectRelativePath()); >+ writer.printSimpleTag(NAME, description.getPath()); > writer.printSimpleTag(TYPE, Integer.toString(description.getType())); >- writer.printSimpleTag(ID, description.getFilterID()); >- if (description.getArguments() != null) >- writer.printSimpleTag(ARGUMENTS, description.getArguments()); >+ writer.printSimpleTag(ID, description.getId()); >+ if (description.getArguments() != null) { >+ if (description.getArguments() instanceof String) { >+ writer.printSimpleTag(ARGUMENTS, description.getArguments()); >+ } else if (description.getArguments() instanceof IResourceFilter[]) { >+ writer.startTag(ARGUMENTS, null); >+ IResourceFilter[] array = (IResourceFilter[]) description.getArguments(); >+ for (int i = 0; i < array.length; i++) { >+ write(array[i], writer); >+ } >+ writer.endTag(ARGUMENTS); >+ } else >+ writer.printSimpleTag(ARGUMENTS, ""); //$NON-NLS-1$ >+ >+ } >+ > } > writer.endTag(FILTER); > } >@@ -176,8 +185,8 @@ > write((LinkDescription) obj, writer); > return; > } >- if (obj instanceof FilterDescription) { >- write((FilterDescription) obj, writer); >+ if (obj instanceof IResourceFilter) { >+ write((IResourceFilter) obj, writer); > return; > } > if (obj instanceof VariableDescription) { >@@ -237,19 +246,19 @@ > protected void write(String name, Map table, XMLWriter writer) { > writer.startTag(name, null); > if (table != null) { >- // ensure consistent order of map elements >- List sorted = new ArrayList(table.keySet()); >- Collections.sort(sorted); >- >- for (Iterator it = sorted.iterator(); it.hasNext();) { >- String key = (String) it.next(); >- Object value = table.get(key); >- writer.startTag(DICTIONARY, null); >- { >- writer.printSimpleTag(KEY, key); >- writer.printSimpleTag(VALUE, value); >- } >- writer.endTag(DICTIONARY); >+ // ensure consistent order of map elements >+ List sorted = new ArrayList(table.keySet()); >+ Collections.sort(sorted); >+ >+ for (Iterator it = sorted.iterator(); it.hasNext();) { >+ String key = (String) it.next(); >+ Object value = table.get(key); >+ writer.startTag(DICTIONARY, null); >+ { >+ writer.printSimpleTag(KEY, key); >+ writer.printSimpleTag(VALUE, value); >+ } >+ writer.endTag(DICTIONARY); > } > } > writer.endTag(name); >Index: src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java,v >retrieving revision 1.37 >diff -u -r1.37 ProjectDescriptionReader.java >--- src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java 5 Oct 2009 21:40:29 -0000 1.37 >+++ src/org/eclipse/core/internal/resources/ProjectDescriptionReader.java 20 Oct 2009 10:14:18 -0000 >@@ -474,7 +474,6 @@ > */ > private void endFilterElement(String elementName) { > if (elementName.equals(FILTER)) { >- state = S_FILTERED_RESOURCES; > // Pop off the filter description > FilterDescription filter = (FilterDescription) objectStack.pop(); > // Make sure that you have something reasonable >@@ -495,14 +494,23 @@ > return; > } > >- // The HashMap of filtered resources is the next thing on the stack >- HashMap map = ((HashMap) objectStack.peek()); >- LinkedList/*FilterDescription*/ list = (LinkedList/*FilterDescription*/) map.get(filter.getProjectRelativePath()); >- if (list == null) { >- list = new LinkedList/*FilterDescription*/(); >- map.put(filter.getProjectRelativePath(), list); >+ if (objectStack.peek() instanceof HashMap) { >+ state = S_FILTERED_RESOURCES; >+ // The HashMap of filtered resources is the next thing on the stack >+ HashMap map = ((HashMap) objectStack.peek()); >+ LinkedList/*FilterDescription*/list = (LinkedList/*FilterDescription*/) map.get(filter.getProjectRelativePath()); >+ if (list == null) { >+ list = new LinkedList/*FilterDescription*/(); >+ map.put(filter.getProjectRelativePath(), list); >+ } >+ list.add(filter); >+ } >+ >+ if (objectStack.peek() instanceof ArrayList) { >+ state = S_FILTER_ARGUMENTS; >+ ArrayList l = ((ArrayList) objectStack.peek()); >+ l.add(filter); > } >- list.add(filter); > } > } > >@@ -603,9 +611,13 @@ > > private void endFilterArguments(String elementName) { > if (elementName.equals(ARGUMENTS)) { >- String newArguments = charBuffer.toString(); >- // objectStack has a FilterDescription on it. Set the type on this FilterDescription. >- String oldArguments = ((FilterDescription) objectStack.peek()).getArguments(); >+ ArrayList filters = (ArrayList) objectStack.pop(); >+ Object newArguments = charBuffer.toString(); >+ >+ if (filters.size() > 0) >+ newArguments = filters.toArray(new IResourceFilter[filters.size()]); >+ >+ Object oldArguments = ((FilterDescription) objectStack.peek()).getArguments(); > if (oldArguments != null) { > parseProblem(NLS.bind(Messages.projRead_badArguments, oldArguments, newArguments)); > } else >@@ -958,7 +970,7 @@ > case S_FILTERED_RESOURCES : > if (elementName.equals(FILTER)) { > state = S_FILTER; >- // Push place holders for the name, type, id and argumkents of >+ // Push place holders for the name, type, id and arguments of > // this filter. > objectStack.push(new FilterDescription()); > } >@@ -972,6 +984,15 @@ > state = S_FILTER_ID; > } else if (elementName.equals(ARGUMENTS)) { > state = S_FILTER_ARGUMENTS; >+ objectStack.push(new ArrayList()); >+ } >+ break; >+ case S_FILTER_ARGUMENTS: >+ if (elementName.equals(FILTER)) { >+ state = S_FILTER; >+ // Push place holders for the name, type, id and arguments of >+ // this filter. >+ objectStack.push(new FilterDescription()); > } > break; > case S_VARIABLE: >Index: src/org/eclipse/core/internal/resources/RegexFilterFactory.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/RegexFilterFactory.java,v >retrieving revision 1.2 >diff -u -r1.2 RegexFilterFactory.java >--- src/org/eclipse/core/internal/resources/RegexFilterFactory.java 5 Oct 2009 21:40:29 -0000 1.2 >+++ src/org/eclipse/core/internal/resources/RegexFilterFactory.java 20 Oct 2009 10:14:18 -0000 >@@ -38,7 +38,7 @@ > } > } > >- public IFileInfoFilter instantiate(IProject project, String arguments) { >- return new RegexFilterType(project, arguments); >+ public IFileInfoFilter instantiate(IProject project, Object arguments) { >+ return new RegexFilterType(project, (String)arguments); > } > } >Index: src/org/eclipse/core/internal/resources/Resource.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/internal/resources/Resource.java,v >retrieving revision 1.172 >diff -u -r1.172 Resource.java >--- src/org/eclipse/core/internal/resources/Resource.java 9 Oct 2009 16:36:35 -0000 1.172 >+++ src/org/eclipse/core/internal/resources/Resource.java 20 Oct 2009 10:14:19 -0000 >@@ -707,9 +707,9 @@ > > > /* (non-Javadoc) >- * @see org.eclipse.core.resources.IContainer#addFilter(String, int, String, IProgressMonitor) >+ * @see org.eclipse.core.resources.IContainer#addFilter(String, int, Object, IProgressMonitor) > */ >- public void addFilter(String filterID, int type, String arguments, int updateFlags, IProgressMonitor monitor) throws CoreException { >+ public void addFilter(String filterID, int type, Object arguments, int updateFlags, IProgressMonitor monitor) throws CoreException { > Assert.isNotNull(filterID); > Assert.isNotNull(getProject()); > monitor = Policy.monitorFor(monitor); >@@ -754,9 +754,9 @@ > } > > /* (non-Javadoc) >- * @see org.eclipse.core.resources.IFolder#removeFilter(String, int, String, IProgressMonitor) >+ * @see org.eclipse.core.resources.IFolder#removeFilter(String, int, Object, IProgressMonitor) > */ >- public void removeFilter(String filterID, int type, String arguments, int updateFlags, IProgressMonitor monitor) throws CoreException { >+ public void removeFilter(String filterID, int type, Object arguments, int updateFlags, IProgressMonitor monitor) throws CoreException { > Assert.isNotNull(filterID); > monitor = Policy.monitorFor(monitor); > try { >Index: src/org/eclipse/core/resources/IContainer.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/IContainer.java,v >retrieving revision 1.37 >diff -u -r1.37 IContainer.java >--- src/org/eclipse/core/resources/IContainer.java 5 Oct 2009 21:40:29 -0000 1.37 >+++ src/org/eclipse/core/resources/IContainer.java 20 Oct 2009 10:14:19 -0000 >@@ -484,12 +484,12 @@ > * @exception OperationCanceledException if the operation is canceled. > * Cancelation can occur even if no progress monitor is provided. > * >- * @see IContainer#removeFilter(String, int, String, int, IProgressMonitor) >+ * @see IContainer#removeFilter(String, int, Object, int, IProgressMonitor) > * @see IContainer#getFilters() > * > * @since 3.6 > */ >- public void addFilter(String filterID, int type, String arguments, int updateFlags, IProgressMonitor monitor) throws CoreException; >+ public void addFilter(String filterID, int type, Object arguments, int updateFlags, IProgressMonitor monitor) throws CoreException; > > /** > * Remove the filter matching the arguments from this folder's filter list >@@ -508,12 +508,12 @@ > * @exception OperationCanceledException if the operation is canceled. > * Cancelation can occur even if no progress monitor is provided. > * >- * @see IContainer#addFilter(String, int, String, int, IProgressMonitor) >+ * @see IContainer#addFilter(String, int, Object, int, IProgressMonitor) > * @see IContainer#getFilters() > * > * @since 3.6 > */ >- public void removeFilter(String filterID, int type, String arguments, int updateFlags, IProgressMonitor monitor) throws CoreException; >+ public void removeFilter(String filterID, int type, Object arguments, int updateFlags, IProgressMonitor monitor) throws CoreException; > > /** > * Retrieve the filters for this folder. >@@ -524,8 +524,8 @@ > * <ul> > * <li> This resource is not a folder.</li> > * >- * @see IContainer#addFilter(String, int, String, int, IProgressMonitor) >- * @see IContainer#removeFilter(String, int, String, int, IProgressMonitor) >+ * @see IContainer#addFilter(String, int, Object, int, IProgressMonitor) >+ * @see IContainer#removeFilter(String, int, Object, int, IProgressMonitor) > * > * @since 3.6 > */ >Index: src/org/eclipse/core/resources/IFileInfoFilterFactory.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/IFileInfoFilterFactory.java,v >retrieving revision 1.2 >diff -u -r1.2 IFileInfoFilterFactory.java >--- src/org/eclipse/core/resources/IFileInfoFilterFactory.java 5 Oct 2009 21:40:29 -0000 1.2 >+++ src/org/eclipse/core/resources/IFileInfoFilterFactory.java 20 Oct 2009 10:14:19 -0000 >@@ -28,5 +28,5 @@ > * @param arguments the test arguments, or <code>null</code> if not applicable > * for this filter type. > */ >- public IFileInfoFilter instantiate(IProject project, String arguments); >+ public IFileInfoFilter instantiate(IProject project, Object arguments); > } >Index: src/org/eclipse/core/resources/IResource.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/IResource.java,v >retrieving revision 1.106 >diff -u -r1.106 IResource.java >--- src/org/eclipse/core/resources/IResource.java 9 Oct 2009 16:36:35 -0000 1.106 >+++ src/org/eclipse/core/resources/IResource.java 20 Oct 2009 10:14:20 -0000 >@@ -1716,8 +1716,8 @@ > * > * @return <code>true</code> if this resource has filters, and > * <code>false</code> otherwise >- * @see IContainer#addFilter(String, int, String, int, IProgressMonitor) >- * @see IContainer#removeFilter(String, int, String, int, IProgressMonitor) >+ * @see IContainer#addFilter(String, int, Object, int, IProgressMonitor) >+ * @see IContainer#removeFilter(String, int, Object, int, IProgressMonitor) > * @since 3.6 > */ > public boolean hasFilters(); >Index: src/org/eclipse/core/resources/IResourceFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.resources/src/org/eclipse/core/resources/IResourceFilter.java,v >retrieving revision 1.2 >diff -u -r1.2 IResourceFilter.java >--- src/org/eclipse/core/resources/IResourceFilter.java 5 Oct 2009 21:40:29 -0000 1.2 >+++ src/org/eclipse/core/resources/IResourceFilter.java 20 Oct 2009 10:14:20 -0000 >@@ -17,8 +17,8 @@ > * Interface for resource filters. A filter determines which file system > * objects will be visible when a local refresh is performed for an IContainer. > * >- * @see IFolder#addFilter(String, int, String, int, IProgressMonitor) >- * @see IFolder#removeFilter(String, int, String, int, IProgressMonitor) >+ * @see IFolder#addFilter(String, int, Object, int, IProgressMonitor) >+ * @see IFolder#removeFilter(String, int, Object, int, IProgressMonitor) > * @see IFolder#getFilters() > * @noimplement This interface is not intended to be implemented by clients. > * @since 3.6 >@@ -88,7 +88,7 @@ > * > * @return the argument string, or null > */ >- public String getArguments(); >+ public Object getArguments(); > > /** > * Returns the project which contains this filter. >#P org.eclipse.ui.ide >Index: src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java,v >retrieving revision 1.5 >diff -u -r1.5 ResourceFilterGroup.java >--- src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java 19 Oct 2009 13:09:42 -0000 1.5 >+++ src/org/eclipse/ui/internal/ide/dialogs/ResourceFilterGroup.java 20 Oct 2009 10:14:23 -0000 >@@ -91,7 +91,6 @@ > import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; > import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; > import org.eclipse.ui.internal.ide.IIDEHelpContextIds; >-import org.eclipse.ui.internal.ide.misc.CompoundResourceFilter; > import org.eclipse.ui.plugin.AbstractUIPlugin; > > /** >@@ -179,7 +178,10 @@ > } > > boolean changed = false; >- public LinkedList/* <IResourceFilter> */trash = new LinkedList/* <IResourceFilter> */(); >+ public LinkedList/* <IResourceFilter> */trash = new LinkedList/* >+ * <IResourceFilter >+ * > >+ */(); > > public void add(FilterCopy newFilter) { > super.addChild(newFilter); >@@ -347,9 +349,10 @@ > .bind( > IDEWorkbenchMessages.ResourceFilterPage_includeOnlyColumn, > null); >- return NLS.bind( >- IDEWorkbenchMessages.ResourceFilterPage_excludeAllColumn, >- null); >+ return NLS >+ .bind( >+ IDEWorkbenchMessages.ResourceFilterPage_excludeAllColumn, >+ null); > } > return getFilterTypeName(filter); > } >@@ -367,13 +370,15 @@ > IDEWorkbenchMessages.ResourceFilterPage_filesColumn, > null); > if (includeFolders) >- return NLS.bind( >- IDEWorkbenchMessages.ResourceFilterPage_foldersColumn, >- null); >+ return NLS >+ .bind( >+ IDEWorkbenchMessages.ResourceFilterPage_foldersColumn, >+ null); > } > if (column.equals(FilterTypeUtil.ARGUMENTS)) { > if (filter.hasStringArguments()) >- return filter.getArguments(); >+ return filter.getArguments() != null ? filter >+ .getArguments().toString() : ""; //$NON-NLS-1$ > if ((filter.getChildrenLimit() > 0) > && !filter.isUnderAGroupFilter()) > return "< " + getFilterTypeName(filter) + " >"; //$NON-NLS-1$ //$NON-NLS-2$ >@@ -1156,8 +1161,9 @@ > else > filter.setType(type); > } >- if (property.equals(FilterTypeUtil.ARGUMENTS)) >- filter.setArguments((String) value); >+ if (property.equals(FilterTypeUtil.ARGUMENTS)) { >+ filter.setArguments(value.equals("") ? null : value); //$NON-NLS-1$ >+ } > } > > static IFilterDescriptor getDescriptor(String id) { >@@ -1206,7 +1212,7 @@ > (filter.getType() & IResourceFilter.INHERITABLE) != 0); > > if (property.equals(ARGUMENTS)) >- return filter.getArguments(); >+ return filter.getArguments() != null ? filter.getArguments() : ""; //$NON-NLS-1$ > return null; > } > >@@ -1310,8 +1316,7 @@ > } > > class FilterCopy implements IResourceFilter { >- static String EMPTY = ""; //$NON-NLS-1$ >- String arguments = EMPTY; >+ Object arguments = null; > String id = null; > IPath path = null; > IProject project = null; >@@ -1366,8 +1371,6 @@ > path = filter.getPath(); > project = filter.getProject(); > type = filter.getType(); >- if (arguments == null) >- arguments = EMPTY; > } > > public boolean hasChanged() { >@@ -1387,7 +1390,7 @@ > id = FilterTypeUtil.getDefaultFilterID(); > } > >- public String getArguments() { >+ public Object getArguments() { > return arguments; > } > >@@ -1407,7 +1410,7 @@ > return type; > } > >- public void setArguments(String arguments) { >+ public void setArguments(Object arguments) { > this.arguments = arguments; > argumentsChanged(); > } >@@ -1487,13 +1490,13 @@ > if (children == null) { > if (getChildrenLimit() > 0) { > children = new LinkedList(); >- IResourceFilter[] filters = CompoundResourceFilter.unserialize( >- getProject(), getArguments()); >- for (int i = 0; i < filters.length; i++) { >- FilterCopy child = new FilterCopy(filters[i]); >- child.parent = this; >- children.add(child); >- } >+ IResourceFilter[] filters = (IResourceFilter[]) getArguments(); >+ if (filters != null) >+ for (int i = 0; i < filters.length; i++) { >+ FilterCopy child = new FilterCopy(filters[i]); >+ child.parent = this; >+ children.add(child); >+ } > } > } > } >@@ -1523,9 +1526,7 @@ > protected void argumentsChanged() { > initializeChildren(); > if (children != null) >- arguments = CompoundResourceFilter >- .serialize((FilterCopy[]) children >- .toArray(new FilterCopy[0])); >+ arguments = (FilterCopy[]) children.toArray(new FilterCopy[0]); > FilterCopy up = parent; > while (up != null) { > up.serializeChildren(); >@@ -1680,7 +1681,8 @@ > * > */ > private void setArgumentLabelEnabled() { >- Color color = argumentsLabel.getDisplay().getSystemColor(filter.hasStringArguments() ? SWT.COLOR_BLACK : SWT.COLOR_GRAY); >+ Color color = argumentsLabel.getDisplay().getSystemColor( >+ filter.hasStringArguments() ? SWT.COLOR_BLACK : SWT.COLOR_GRAY); > argumentsLabel.setForeground(color); > } > >@@ -1707,7 +1709,8 @@ > private void createIdArea(Font font, Composite composite) { > GridData data; > Group idComposite = createGroup(font, composite, NLS.bind( >- IDEWorkbenchMessages.ResourceFilterPage_columnFilterID, null), true); >+ IDEWorkbenchMessages.ResourceFilterPage_columnFilterID, null), >+ true); > idCombo = new Combo(idComposite, SWT.READ_ONLY); > idCombo.setItems(FilterTypeUtil.getFilterNames(filter > .getChildrenLimit() > 0)); >@@ -1797,7 +1800,8 @@ > * @param composite > * @return the group > */ >- private Group createGroup(Font font, Composite composite, String text, boolean grabExcessVerticalSpace) { >+ private Group createGroup(Font font, Composite composite, String text, >+ boolean grabExcessVerticalSpace) { > GridLayout layout; > GridData data; > Group modeComposite = new Group(composite, SWT.NONE); >Index: src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java,v >retrieving revision 1.2 >diff -u -r1.2 AndResourceFilter.java >--- src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java 15 Oct 2009 08:12:16 -0000 1.2 >+++ src/org/eclipse/ui/internal/ide/misc/AndResourceFilter.java 20 Oct 2009 10:14:23 -0000 >@@ -37,7 +37,7 @@ > } > } > >- public IFileInfoFilter instantiate(IProject project, String arguments) { >- return new AndFileInfoFilter(project, unserialize(project, arguments)); >+ public IFileInfoFilter instantiate(IProject project, Object arguments) { >+ return new AndFileInfoFilter(project,(IResourceFilter[])arguments); > } > } >Index: src/org/eclipse/ui/internal/ide/misc/CompoundResourceFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/CompoundResourceFilter.java,v >retrieving revision 1.2 >diff -u -r1.2 CompoundResourceFilter.java >--- src/org/eclipse/ui/internal/ide/misc/CompoundResourceFilter.java 15 Oct 2009 08:12:16 -0000 1.2 >+++ src/org/eclipse/ui/internal/ide/misc/CompoundResourceFilter.java 20 Oct 2009 10:14:23 -0000 >@@ -11,27 +11,16 @@ > *******************************************************************************/ > package org.eclipse.ui.internal.ide.misc; > >-import java.io.IOException; >-import java.io.StringReader; >-import java.io.StringWriter; >-import java.util.LinkedList; >- > import org.eclipse.core.filesystem.IFileInfoFilter; > import org.eclipse.core.resources.IFilterDescriptor; > import org.eclipse.core.resources.IProject; > import org.eclipse.core.resources.IResourceFilter; >-import org.eclipse.core.runtime.IPath; >-import org.eclipse.ui.IMemento; >-import org.eclipse.ui.WorkbenchException; >-import org.eclipse.ui.XMLMemento; > > /** > * Resource Filter Type allowing serializing sub filters as the arguments > */ > public class CompoundResourceFilter { > >- private static final String T_FILTERS = "filters"; //$NON-NLS-1$ >- > protected IFileInfoFilter instantiate(IProject project, > IResourceFilter filter) { > IFilterDescriptor desc = project.getWorkspace().getFilterDescriptor( >@@ -42,98 +31,14 @@ > return null; > } > >- private static final String T_FILTER = "filter"; //$NON-NLS-1$ >- private static final String T_TYPE = "type"; //$NON-NLS-1$ >- private static final String T_ID = "id"; //$NON-NLS-1$ >- private static final String T_ARGUMENTS = "arguments"; //$NON-NLS-1$ >- >- /** >- * Unserialize the filters stored in a memento >- * >- * @param project >- * @param memento >- * @return the filter array >- */ >- public static IResourceFilter[] unserialize(final IProject project, >- String memento) { >- LinkedList filters = new LinkedList(); >- XMLMemento mementoObject = null; >- try { >- mementoObject = XMLMemento >- .createReadRoot(new StringReader(memento)); >- } catch (WorkbenchException e) { >- return new IResourceFilter[0]; >- } >- IMemento childMem = mementoObject.getChild(T_FILTERS); >- if (childMem != null) { >- IMemento[] elementMem = childMem.getChildren(T_FILTER); >- for (int i = 0; i < elementMem.length; i++) { >- final String id = elementMem[i].getString(T_ID); >- final int type = elementMem[i].getInteger(T_TYPE).intValue(); >- IMemento argumentMem = elementMem[i].getChild(T_ARGUMENTS); >- final String arguments = argumentMem != null ? argumentMem >- .getTextData() : ""; //$NON-NLS-1$ >- filters.add(new IResourceFilter() { >- public String getArguments() { >- return arguments; >- } >- >- public String getId() { >- return id; >- } >- >- public IPath getPath() { >- return null; >- } >- >- public IProject getProject() { >- return project; >- } >- >- public int getType() { >- return type; >- } >- }); >- } >- } >- return (IResourceFilter[]) filters.toArray(new IResourceFilter[0]); >- } >- >- /** >- * Serialize filters into in a memento >- * >- * @param filters >- * @return the memento >- */ >- public static String serialize(IResourceFilter[] filters) { >- XMLMemento memento = XMLMemento.createWriteRoot("memento"); //$NON-NLS-1$ >- >- IMemento expandedMem = memento.createChild(T_FILTERS); >- for (int i = 0; i < filters.length; i++) { >- IMemento elementMem = expandedMem.createChild(T_FILTER); >- elementMem.putString(T_ID, filters[i].getId()); >- elementMem.putInteger(T_TYPE, filters[i].getType()); >- IMemento argumentMem = elementMem.createChild(T_ARGUMENTS); >- argumentMem.putTextData(filters[i].getArguments()); >- } >- >- StringWriter writer = new StringWriter(); >- try { >- memento.save(writer); >- } catch (IOException e) { >- return ""; //$NON-NLS-1$ >- } >- return writer.toString(); >- } >- > protected abstract class FileInfoFilter implements IFileInfoFilter { > protected IFileInfoFilter[] filterTypes; > protected IResourceFilter[] filters; > > public FileInfoFilter(IProject project, IResourceFilter[] filters) { > this.filters = filters; >- filterTypes = new IFileInfoFilter[filters.length]; >- for (int i = 0; i < filters.length; i++) >+ filterTypes = new IFileInfoFilter[filters!=null ? filters.length : 0]; >+ for (int i = 0; i < filterTypes.length; i++) > filterTypes[i] = instantiate(project, filters[i]); > } > } >Index: src/org/eclipse/ui/internal/ide/misc/NotResourceFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/NotResourceFilter.java,v >retrieving revision 1.2 >diff -u -r1.2 NotResourceFilter.java >--- src/org/eclipse/ui/internal/ide/misc/NotResourceFilter.java 15 Oct 2009 08:12:16 -0000 1.2 >+++ src/org/eclipse/ui/internal/ide/misc/NotResourceFilter.java 20 Oct 2009 10:14:23 -0000 >@@ -37,7 +37,7 @@ > } > } > >- public IFileInfoFilter instantiate(IProject project, String arguments) { >- return new NotFileInfoFilter(project, unserialize(project, arguments)); >+ public IFileInfoFilter instantiate(IProject project, Object arguments) { >+ return new NotFileInfoFilter(project, (IResourceFilter[])arguments); > } > } >Index: src/org/eclipse/ui/internal/ide/misc/OrResourceFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/OrResourceFilter.java,v >retrieving revision 1.2 >diff -u -r1.2 OrResourceFilter.java >--- src/org/eclipse/ui/internal/ide/misc/OrResourceFilter.java 15 Oct 2009 08:12:16 -0000 1.2 >+++ src/org/eclipse/ui/internal/ide/misc/OrResourceFilter.java 20 Oct 2009 10:14:23 -0000 >@@ -40,7 +40,7 @@ > } > } > >- public IFileInfoFilter instantiate(IProject project, String arguments) { >- return new OrFileInfoFilter(project, unserialize(project, arguments)); >+ public IFileInfoFilter instantiate(IProject project, Object arguments) { >+ return new OrFileInfoFilter(project, (IResourceFilter[])arguments); > } > } >Index: src/org/eclipse/ui/internal/ide/misc/StringMatcherFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/StringMatcherFilter.java,v >retrieving revision 1.2 >diff -u -r1.2 StringMatcherFilter.java >--- src/org/eclipse/ui/internal/ide/misc/StringMatcherFilter.java 15 Oct 2009 08:12:16 -0000 1.2 >+++ src/org/eclipse/ui/internal/ide/misc/StringMatcherFilter.java 20 Oct 2009 10:14:23 -0000 >@@ -51,8 +51,8 @@ > > } > >- public IFileInfoFilter instantiate(IProject project, String arguments) { >- return new FilterType(arguments); >+ public IFileInfoFilter instantiate(IProject project, Object arguments) { >+ return new FilterType((String)arguments); > } > > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 291755
:
149853
|
149866
| 149964