### Eclipse Workspace Patch 1.0 #P org.eclipse.mylyn.ide.ui Index: src/org/eclipse/mylyn/internal/ide/ui/actions/FocusResourceNavigatorAction.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.ide.ui/src/org/eclipse/mylyn/internal/ide/ui/actions/FocusResourceNavigatorAction.java,v retrieving revision 1.10 diff -u -r1.10 FocusResourceNavigatorAction.java --- src/org/eclipse/mylyn/internal/ide/ui/actions/FocusResourceNavigatorAction.java 12 Sep 2008 04:22:26 -0000 1.10 +++ src/org/eclipse/mylyn/internal/ide/ui/actions/FocusResourceNavigatorAction.java 11 Feb 2009 19:11:01 -0000 @@ -12,24 +12,34 @@ package org.eclipse.mylyn.internal.ide.ui.actions; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.Platform; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.ViewerFilter; 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.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IViewPart; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; import org.eclipse.ui.views.navigator.FilterSelectionAction; import org.eclipse.ui.views.navigator.IResourceNavigator; import org.eclipse.ui.views.navigator.ResourceNavigator; +import org.eclipse.ui.views.navigator.ResourcePatternFilter; import org.eclipse.ui.views.navigator.ToggleLinkingAction; /** @@ -111,4 +121,46 @@ return false; } + private Set getPreservedFilterPatterns() { + IExtensionPoint extension = Platform.getExtensionRegistry().getExtensionPoint( + IDEWorkbenchPlugin.IDE_WORKBENCH + '.' + "resourceFilters"); + Set preservedIds = ContextUiPlugin.getDefault().getPreservedFilterIds(viewPart.getSite().getId()); + Set filters = new HashSet(); + if (extension != null) { + IExtension[] extensions = extension.getExtensions(); + for (IExtension extension2 : extensions) { + IConfigurationElement[] configElements = extension2.getConfigurationElements(); + if (extension2.getUniqueIdentifier() != null && preservedIds.contains(extension2.getUniqueIdentifier())) { + for (IConfigurationElement configElement : configElements) { + String pattern = configElement.getAttribute("pattern");//$NON-NLS-1$ + if (pattern != null) { + filters.add(pattern); + } + String selected = configElement.getAttribute("selected");//$NON-NLS-1$ + if (selected != null && selected.equalsIgnoreCase("true")) { //$NON-NLS-1$ + //defaultFilters.add(pattern); + } + } + } + + } + } + return filters; + } + + @Override + protected boolean isPreservedFilter(ViewerFilter filter) { + if (filter instanceof ResourcePatternFilter) { + Set preservedFilterPatterns = getPreservedFilterPatterns(); + //NOTE: since the resource filters are all contained in one filter, if one is preserved, then we preserve all filters + for (String pattern : ((ResourcePatternFilter) filter).getPatterns()) { + if (preservedFilterPatterns.contains(pattern)) { + return true; + } + } + return true; + } + return super.isPreservedFilter(filter); + } + }