diff options
| author | Martin SCHREIBER | 2014-10-20 06:28:58 +0000 |
|---|---|---|
| committer | Martin SCHREIBER | 2017-12-20 12:55:43 +0000 |
| commit | d895c1a28181b69514a8e37bbf5d93cbd5cd1d29 (patch) | |
| tree | 2dc495a058e6f51700032241ea88bc01b5822288 | |
| parent | 763566f34dc0e3e67e277bb847b61f306ea2b331 (diff) | |
| download | eclipse.platform.ui-d895c1a28181b69514a8e37bbf5d93cbd5cd1d29.tar.gz eclipse.platform.ui-d895c1a28181b69514a8e37bbf5d93cbd5cd1d29.tar.xz eclipse.platform.ui-d895c1a28181b69514a8e37bbf5d93cbd5cd1d29.zip | |
Bug 447530 - [CommonNavigator] activebydefault nonvisible commonfilterI20171223-1500I20171222-2000I20171221-2000I20171220-2000
will no longer be activated once persistFilterActivationState() is
called
When restoring the filters, add "visibleInUi=false;activeByDefault=true"
filters to the active filter. After that handle all "visibleInUi=true"
filters by checking the preferences or add all of them in case the
preference key does not exist.
Change-Id: I1b892607809dd1e2e9ab21818f55b9938e15d771
Signed-off-by: Martin SCHREIBER <m.schreiber@bachmann.info>
3 files changed, 47 insertions, 4 deletions
diff --git a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java index c54b2e06450..908c4c6b668 100644 --- a/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java +++ b/bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Bachmann electronic GmbH - Bug 447530 - persist the id of active non visible filters ******************************************************************************/ package org.eclipse.ui.internal.navigator; @@ -67,9 +68,22 @@ public class NavigatorFilterService implements INavigatorFilterService { SafeRunner.run(new NavigatorSafeRunnable() { @Override public void run() throws Exception { + + CommonFilterDescriptor[] visibleFilterDescriptors = CommonFilterDescriptorManager.getInstance() + .findVisibleFilters(contentService); + + // add the non visible in ui active by default filters + for (CommonFilterDescriptor filterDescription : visibleFilterDescriptors) { + if (!filterDescription.isVisibleInUi() && filterDescription.isActiveByDefault()) { + activeFilters.add(filterDescription.getId()); + } + + } + IEclipsePreferences prefs = NavigatorContentService.getPreferencesRoot(); if (prefs.get(getFilterActivationPreferenceKey(), null) != null) { + // add all visible ui filters that had been activated by the user String activatedFiltersPreferenceValue = prefs.get( getFilterActivationPreferenceKey(), null); String[] activeFilterIds = activatedFiltersPreferenceValue.split(DELIM); @@ -81,10 +95,10 @@ public class NavigatorFilterService implements INavigatorFilterService { } } else { - ICommonFilterDescriptor[] visibleFilterDescriptors = getVisibleFilterDescriptors(); - for (ICommonFilterDescriptor visibleFilterDescriptor : visibleFilterDescriptors) { - if (visibleFilterDescriptor.isActiveByDefault()) { - activeFilters.add(visibleFilterDescriptor.getId()); + // add all visible in ui filters + for (CommonFilterDescriptor filterDescription : visibleFilterDescriptors) { + if (filterDescription.isVisibleInUi() && filterDescription.isActiveByDefault()) { + activeFilters.add(filterDescription.getId()); } } } diff --git a/tests/org.eclipse.ui.tests.navigator/plugin.xml b/tests/org.eclipse.ui.tests.navigator/plugin.xml index 57727750b1c..311fedb2c81 100644 --- a/tests/org.eclipse.ui.tests.navigator/plugin.xml +++ b/tests/org.eclipse.ui.tests.navigator/plugin.xml @@ -1459,6 +1459,19 @@ <adapt type="org.eclipse.core.resources.IResource" /> </enablement> </commonWizard> + <commonFilter + activeByDefault="true" + id="org.eclipse.ui.tests.navigator.filters.nonvisibleactive" + name="Non visible active filter" + visibleInUI="false"> + <filterExpression> + <not> + <instanceof + value="java.lang.Object"> + </instanceof> + </not> + </filterExpression> + </commonFilter> </extension> diff --git a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/FilterTest.java b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/FilterTest.java index a14d1ce4919..7339680e228 100644 --- a/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/FilterTest.java +++ b/tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/FilterTest.java @@ -8,17 +8,22 @@ * Contributors: * Oakland Software Incorporated - initial API and implementation * Thibault Le Ouay <thibaultleouay@gmail.com> - Bug 457870 + * Bachmann electronic GmbH - Bug 447530 - adding a test for active non visible filters *******************************************************************************/ package org.eclipse.ui.tests.navigator; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.internal.navigator.NavigatorContentService; +import org.eclipse.ui.internal.navigator.NavigatorFilterService; import org.junit.Test; public class FilterTest extends NavigatorTestBase { + private static final String TEST_FILTER_ACTIVE_NOT_VISIBLE = "org.eclipse.ui.tests.navigator.filters.nonvisibleactive"; + public FilterTest() { _navigatorInstanceId = TEST_VIEWER_FILTER; } @@ -68,4 +73,15 @@ public class FilterTest extends NavigatorTestBase { } + // bug 447530, when a filter is active by default but not visible in the ui, + // it must still be active after + // restoring the active filters from the preferences. + @Test + public void testNonVisibleFilters() { + _contentService.getFilterService().persistFilterActivationState(); + // "restore" by creating a new instance of the serivce + NavigatorFilterService filterService = new NavigatorFilterService((NavigatorContentService) _contentService); + assertTrue(filterService.isActive(TEST_FILTER_ACTIVE_NOT_VISIBLE)); + } + } |
