Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin SCHREIBER2014-10-20 06:28:58 +0000
committerMartin SCHREIBER2017-12-20 12:55:43 +0000
commitd895c1a28181b69514a8e37bbf5d93cbd5cd1d29 (patch)
tree2dc495a058e6f51700032241ea88bc01b5822288
parent763566f34dc0e3e67e277bb847b61f306ea2b331 (diff)
downloadeclipse.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>
-rw-r--r--bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorFilterService.java22
-rw-r--r--tests/org.eclipse.ui.tests.navigator/plugin.xml13
-rw-r--r--tests/org.eclipse.ui.tests.navigator/src/org/eclipse/ui/tests/navigator/FilterTest.java16
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));
+ }
+
}

Back to the top