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 125342 Details for
Bug 263870
[context] preserve filters in the resource navigator when using resourceFilters
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
proposed solution
clipboard.txt (text/plain), 16.99 KB, created by
Mik Kersten
on 2009-02-10 20:29:59 EST
(
hide
)
Description:
proposed solution
Filename:
MIME Type:
Creator:
Mik Kersten
Created:
2009-02-10 20:29:59 EST
Size:
16.99 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.resources.ui >Index: META-INF/MANIFEST.MF >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.resources.ui/META-INF/MANIFEST.MF,v >retrieving revision 1.367 >diff -u -r1.367 MANIFEST.MF >--- META-INF/MANIFEST.MF 3 Nov 2008 04:38:04 -0000 1.367 >+++ META-INF/MANIFEST.MF 11 Feb 2009 01:29:23 -0000 >@@ -15,7 +15,8 @@ > org.eclipse.mylyn.context.core;bundle-version="[3.0.0,4.0.0)", > org.eclipse.mylyn.context.ui;bundle-version="[3.0.0,4.0.0)", > org.eclipse.mylyn.monitor.ui;bundle-version="[3.0.0,4.0.0)", >- org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)" >+ org.eclipse.mylyn.monitor.core;bundle-version="[3.0.0,4.0.0)", >+ org.eclipse.core.expressions > Bundle-ActivationPolicy: lazy > Bundle-Vendor: %Bundle-Vendor > Export-Package: org.eclipse.mylyn.internal.resources.ui;x-internal:=true, >Index: src/org/eclipse/mylyn/resources/ui/FocusCommonNavigatorAction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.resources.ui/src/org/eclipse/mylyn/resources/ui/FocusCommonNavigatorAction.java,v >retrieving revision 1.4 >diff -u -r1.4 FocusCommonNavigatorAction.java >--- src/org/eclipse/mylyn/resources/ui/FocusCommonNavigatorAction.java 5 Feb 2009 05:00:18 -0000 1.4 >+++ src/org/eclipse/mylyn/resources/ui/FocusCommonNavigatorAction.java 11 Feb 2009 01:29:23 -0000 >@@ -12,10 +12,13 @@ > package org.eclipse.mylyn.resources.ui; > > import java.lang.reflect.Constructor; >+import java.lang.reflect.Field; > import java.lang.reflect.Method; > import java.util.ArrayList; > import java.util.List; >+import java.util.Set; > >+import org.eclipse.core.expressions.Expression; > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.Status; >@@ -26,15 +29,20 @@ > import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.jface.viewers.StructuredViewer; >+import org.eclipse.jface.viewers.ViewerFilter; > import org.eclipse.mylyn.commons.core.StatusHandler; > import org.eclipse.mylyn.context.ui.AbstractAutoFocusViewAction; > import org.eclipse.mylyn.context.ui.InterestFilter; >+import org.eclipse.mylyn.internal.context.ui.ContextUiPlugin; > import org.eclipse.mylyn.internal.resources.ui.ResourcesUiBridgePlugin; > import org.eclipse.ui.IEditorInput; > import org.eclipse.ui.IEditorPart; > import org.eclipse.ui.IViewPart; > import org.eclipse.ui.internal.navigator.NavigatorContentService; > import org.eclipse.ui.internal.navigator.actions.LinkEditorAction; >+import org.eclipse.ui.internal.navigator.filters.CommonFilterDescriptor; >+import org.eclipse.ui.internal.navigator.filters.CommonFilterDescriptorManager; >+import org.eclipse.ui.internal.navigator.filters.CoreExpressionFilter; > import org.eclipse.ui.internal.navigator.filters.SelectFiltersAction; > import org.eclipse.ui.navigator.CommonNavigator; > import org.eclipse.ui.navigator.ILinkHelper; >@@ -53,20 +61,49 @@ > > private CommonNavigator commonNavigator; > >+ private CommonFilterDescriptor[] filterDescriptors; >+ >+ private Field filterExpressionField1; >+ >+ private Field filterExpressionField2; >+ > public FocusCommonNavigatorAction(InterestFilter interestFilter, boolean manageViewer, boolean manageFilters, > boolean manageLinking) { > super(interestFilter, manageViewer, manageFilters, manageLinking); > } > > @Override >+ protected boolean installInterestFilter(StructuredViewer viewer) { >+ if (commonNavigator == null) { >+ commonNavigator = (CommonNavigator) super.getPartForAction(); >+ } >+ >+ try { >+ // XXX: reflection >+ Class<?> clazz2 = CoreExpressionFilter.class; >+ filterExpressionField1 = clazz2.getDeclaredField("filterExpression"); >+ filterExpressionField1.setAccessible(true); >+ >+ Class<?> clazz1 = CommonFilterDescriptor.class; >+ filterExpressionField2 = clazz1.getDeclaredField("filterExpression"); >+ filterExpressionField2.setAccessible(true); >+ } catch (Exception e) { >+ StatusHandler.log(new Status(IStatus.ERROR, ResourcesUiBridgePlugin.ID_PLUGIN, >+ "Could not determine filter", e)); //$NON-NLS-1$ >+ } >+ >+ filterDescriptors = CommonFilterDescriptorManager.getInstance().findVisibleFilters( >+ commonNavigator.getNavigatorContentService()); >+ >+ return super.installInterestFilter(viewer); >+ } >+ >+ @Override > protected ISelection resolveSelection(IEditorPart editor, ITextSelection changedSelection, StructuredViewer viewer) > throws CoreException { > if (resolveFailed) { > return null; > } >- if (commonNavigator == null) { >- commonNavigator = (CommonNavigator) super.getPartForAction(); >- } > if (linkServiceMethod == null) { > // TODO e3.5 replace with call to CommonNavigator.getLinkHelperService() > try { >@@ -171,6 +208,40 @@ > return false; > } > >+ @Override >+ protected boolean isPreservedFilter(ViewerFilter filter) { >+ if (filter instanceof CoreExpressionFilter) { >+ CoreExpressionFilter expressionFilter = (CoreExpressionFilter) filter; >+ >+ Set<String> preservedIds = ContextUiPlugin.getDefault().getPreservedFilterIds(viewPart.getSite().getId()); >+ if (!preservedIds.isEmpty()) { >+ >+ Expression expression2; >+ try { >+ expression2 = (Expression) filterExpressionField1.get(expressionFilter); >+ >+ for (CommonFilterDescriptor commonFilterDescriptor : filterDescriptors) { >+ if (preservedIds.contains(commonFilterDescriptor.getId())) { >+ >+ Expression expression1 = (Expression) filterExpressionField2.get(commonFilterDescriptor); >+ >+ if (expression1 != null && expression1.equals(expression2)) { >+ return true; >+ } >+ } >+ } >+ } catch (IllegalArgumentException e) { >+ StatusHandler.log(new Status(IStatus.ERROR, ResourcesUiBridgePlugin.ID_PLUGIN, >+ "Could not determine filter", e)); //$NON-NLS-1$ >+ } catch (IllegalAccessException e) { >+ StatusHandler.log(new Status(IStatus.ERROR, ResourcesUiBridgePlugin.ID_PLUGIN, >+ "Could not determine filter", e)); //$NON-NLS-1$ >+ } >+ } >+ } >+ return false; >+ } >+ > /** > * Copied from > * >Index: .refactorings/2009/2/7/refactorings.history >=================================================================== >RCS file: .refactorings/2009/2/7/refactorings.history >diff -N .refactorings/2009/2/7/refactorings.history >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .refactorings/2009/2/7/refactorings.history 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<session version="1.0">
<refactoring comment="Rename local variable 'field1' in 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.isPreservedFilter(...)' to 'filterExpressionField1'
- Original project: 'org.eclipse.mylyn.resources.ui'
- Original element: 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.isPreservedFilter(ViewerFilter).field1'
- Renamed element: 'field1'
- Update references to refactored element" description="Rename local variable 'field1'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylyn.resources.ui{FocusCommonNavigatorAction.java[FocusCommonNavigatorAction~isPreservedFilter~QViewerFilter;@field1!7728!7786!7734!7739!QField;" name="filterExpressionField1" references="true" stamp="1234315572339" version="1.0"/>
<refactoring comment="Rename local variable 'filterExpressionField1' in 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.isPreservedFilter(...)' to 'filterExpressionField2'
- Original project: 'org.eclipse.mylyn.resources.ui'
- Original element: 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.isPreservedFilter(ViewerFilter).filterExpressionField1'
- Renamed element: 'filterExpressionField1'
- Update references to refactored element" description="Rename local variable 'filterExpressionField1'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylyn.resources.ui{FocusCommonNavigatorAction.java[FocusCommonNavigatorAction~isPreservedFilter~QViewerFilter;@filterExpressionField1!7728!7802!7734!7755!QField;" name="filterExpressionField2" references="true" stamp="1234315580336" version="1.0"/>
<refactoring comment="Rename local variable 'field2' in 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.isPreservedFilter(...)' to 'filterExpressionField1'
- Original project: 'org.eclipse.mylyn.resources.ui'
- Original element: 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.isPreservedFilter(ViewerFilter).field2'
- Renamed element: 'field2'
- Update references to refactored element" description="Rename local variable 'field2'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylyn.resources.ui{FocusCommonNavigatorAction.java[FocusCommonNavigatorAction~isPreservedFilter~QViewerFilter;@field2!8032!8090!8038!8043!QField;" name="filterExpressionField1" references="true" stamp="1234315592283" version="1.0"/>
<refactoring comment="Convert local variable 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.installInterestFilter().filterExpressionField2' in 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.installInterestFilter()' to field
- Original project: 'org.eclipse.mylyn.resources.ui'
- Original element: 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.installInterestFilter().filterExpressionField2'
- Field name: 'filterExpressionField2'
- Initialize field in method
- Declared visibility: 'private'" description="Convert local variable 'filterExpressionField2' to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src<org.eclipse.mylyn.resources.ui{FocusCommonNavigatorAction.java" name="filterExpressionField2" selection="3188 0" stamp="1234315657460" static="false" version="1.0" visibility="2"/>
<refactoring comment="Convert local variable 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.installInterestFilter().filterExpressionField1' in 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.installInterestFilter()' to field
- Original project: 'org.eclipse.mylyn.resources.ui'
- Original element: 'org.eclipse.mylyn.resources.ui.FocusCommonNavigatorAction.installInterestFilter().filterExpressionField1'
- Field name: 'filterExpressionField1'
- Initialize field in method
- Declared visibility: 'private'" description="Convert local variable 'filterExpressionField1' to field" final="false" flags="2" id="org.eclipse.jdt.ui.promote.temp" initialize="1" input="/src<org.eclipse.mylyn.resources.ui{FocusCommonNavigatorAction.java" name="filterExpressionField1" selection="3396 0" stamp="1234315664549" static="false" version="1.0" visibility="2"/> >+</session> >Index: .refactorings/2009/2/7/refactorings.index >=================================================================== >RCS file: .refactorings/2009/2/7/refactorings.index >diff -N .refactorings/2009/2/7/refactorings.index >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .refactorings/2009/2/7/refactorings.index 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+1234315572339 Rename local variable 'field1' >+1234315580336 Rename local variable 'filterExpressionField1' >+1234315592283 Rename local variable 'field2' >+1234315657460 Convert local variable 'filterExpressionField2' to field >+1234315664549 Convert local variable 'filterExpressionField1' to field >#P org.eclipse.mylyn.context.ui >Index: src/org/eclipse/mylyn/context/ui/AbstractFocusViewAction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.context.ui/src/org/eclipse/mylyn/context/ui/AbstractFocusViewAction.java,v >retrieving revision 1.38 >diff -u -r1.38 AbstractFocusViewAction.java >--- src/org/eclipse/mylyn/context/ui/AbstractFocusViewAction.java 3 Dec 2008 03:14:20 -0000 1.38 >+++ src/org/eclipse/mylyn/context/ui/AbstractFocusViewAction.java 11 Feb 2009 01:29:24 -0000 >@@ -466,9 +466,10 @@ > > if (viewPart != null && manageFilters) { > Set<ViewerFilter> toAdd = new HashSet<ViewerFilter>(); >- Set<Class<?>> excludedFilters = getPreservedFilterClasses(); >+ Set<Class<?>> preservedFilterClasses = getPreservedFilterClasses(); >+ > for (ViewerFilter filter : previousFilters.get(viewer)) { >- if (excludedFilters.contains(filter.getClass())) { >+ if (preservedFilterClasses.contains(filter.getClass()) || isPreservedFilter(filter)) { > toAdd.add(filter); > } > } >@@ -493,6 +494,15 @@ > return false; > } > >+ /** >+ * Subclasses can provide additional viewer filters that should not be removed when focusing. >+ * >+ * @since 3.1 >+ */ >+ protected boolean isPreservedFilter(ViewerFilter filter) { >+ return false; >+ } >+ > protected void uninstallInterestFilter(StructuredViewer viewer) { > if (viewer == null) { > // FIXME Assert.isNotNull(viewer) >Index: .refactorings/2009/2/7/refactorings.index >=================================================================== >RCS file: .refactorings/2009/2/7/refactorings.index >diff -N .refactorings/2009/2/7/refactorings.index >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .refactorings/2009/2/7/refactorings.index 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+1234309089116 Rename local variable 'excludedFilters' >+1234310374262 Rename local variable 'excludedFilterClasses' >+1234314997161 Rename method 'isCustomFilter' >Index: .refactorings/2009/2/7/refactorings.history >=================================================================== >RCS file: .refactorings/2009/2/7/refactorings.history >diff -N .refactorings/2009/2/7/refactorings.history >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ .refactorings/2009/2/7/refactorings.history 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<session version="1.0">
<refactoring comment="Rename local variable 'excludedFilters' in 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.installInterestFilter(...)' to 'excludedFilterClasses'
- Original project: 'org.eclipse.mylyn.context.ui'
- Original element: 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.installInterestFilter(StructuredViewer).excludedFilters'
- Renamed element: 'excludedFilters'
- Update references to refactored element" description="Rename local variable 'excludedFilters'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylyn.context.ui{AbstractFocusViewAction.java[AbstractFocusViewAction~installInterestFilter~QStructuredViewer;@excludedFilters!14974!15033!14988!15002!QSet" name="excludedFilterClasses" references="true" stamp="1234309089116" version="1.0"/>
<refactoring comment="Rename local variable 'excludedFilterClasses' in 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.installInterestFilter(...)' to 'preservedFilterClasses'
- Original project: 'org.eclipse.mylyn.context.ui'
- Original element: 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.installInterestFilter(StructuredViewer).excludedFilterClasses'
- Renamed element: 'excludedFilterClasses'
- Update references to refactored element" description="Rename local variable 'excludedFilterClasses'" id="org.eclipse.jdt.ui.rename.local.variable" input="/src<org.eclipse.mylyn.context.ui{AbstractFocusViewAction.java[AbstractFocusViewAction~installInterestFilter~QStructuredViewer;@excludedFilterClasses!15552!15617!15566!15586!QSet" name="preservedFilterClasses" references="true" stamp="1234310374262" version="1.0"/>
<refactoring comment="Rename method 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.isCustomFilter(...)' to 'isPreservedFilter'
- Original project: 'org.eclipse.mylyn.context.ui'
- Original element: 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.isCustomFilter(...)'
- Renamed element: 'org.eclipse.mylyn.context.ui.AbstractFocusViewAction.isPreservedFilter(...)'
- Update references to refactored element" delegate="false" deprecate="false" description="Rename method 'isCustomFilter'" flags="589830" id="org.eclipse.jdt.ui.rename.method" input="/src<org.eclipse.mylyn.context.ui{AbstractFocusViewAction.java[AbstractFocusViewAction~isCustomFilter~QViewerFilter;" name="isPreservedFilter" references="true" stamp="1234314997161" version="1.0"/> >+</session>
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 263870
: 125342 |
125343
|
125433
|
125434
|
127572