diff --git a/plugins/org.jkiss.dbeaver.core/plugin.properties b/plugins/org.jkiss.dbeaver.core/plugin.properties
index 65438f85e129ff18a17444a0351edd1c86bbd2a4..99fe7656ea50126769d40d96f44f5a9ea1838d45 100644
--- a/plugins/org.jkiss.dbeaver.core/plugin.properties
+++ b/plugins/org.jkiss.dbeaver.core/plugin.properties
@@ -96,6 +96,8 @@ command.org.jkiss.dbeaver.core.object.filter.config.name=Configure filter
command.org.jkiss.dbeaver.core.object.filter.config.description=Configure objects filter
command.org.jkiss.dbeaver.core.object.filter.clear.name=Clear filter
command.org.jkiss.dbeaver.core.object.filter.clear.description=Clear filter settings
+command.org.jkiss.dbeaver.core.object.filter.toggle.name=Toggle filter
+command.org.jkiss.dbeaver.core.object.filter.toggle.description=Toggles (enables/disables) defined filter
command.org.jkiss.dbeaver.core.object.filter.add.exclude.name=Hide selected object(s)
command.org.jkiss.dbeaver.core.object.filter.add.exclude.description=Hide selected object(s)
command.org.jkiss.dbeaver.core.object.filter.add.include.name=Show only selected objects
diff --git a/plugins/org.jkiss.dbeaver.core/plugin.xml b/plugins/org.jkiss.dbeaver.core/plugin.xml
index a383b4e6a4e76464877492c00f8674d899ab1ff3..234d430b0efef3b0aa99b81c9c772592fedc00fb 100644
--- a/plugins/org.jkiss.dbeaver.core/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.core/plugin.xml
@@ -225,6 +225,7 @@
+
@@ -753,6 +754,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1771,6 +1785,9 @@
+
+
+
diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/ObjectPropertyTester.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/ObjectPropertyTester.java
index 07a1ba9dafe67179cff5c39594a01bd71aea0360..e49475827a21098452bdad314a77b7d7b54e53c3 100644
--- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/ObjectPropertyTester.java
+++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/ObjectPropertyTester.java
@@ -180,7 +180,11 @@ public class ObjectPropertyTester extends PropertyTester
}
if (node instanceof DBNDatabaseFolder && ((DBNDatabaseFolder) node).getItemsMeta() != null) {
DBSObjectFilter filter = ((DBNDatabaseFolder) node).getNodeFilter(((DBNDatabaseFolder) node).getItemsMeta(), true);
- return filter != null && !filter.isNotApplicable();
+ if ("defined".equals(expectedValue)) {
+ return filter != null && !filter.isEmpty();
+ } else {
+ return filter != null && !filter.isNotApplicable();
+ }
}
break;
}
diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerFilterToggle.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerFilterToggle.java
new file mode 100644
index 0000000000000000000000000000000000000000..3664ae360c67ace3284fe2c4ccfae71a999b2929
--- /dev/null
+++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/actions/navigator/NavigatorHandlerFilterToggle.java
@@ -0,0 +1,58 @@
+/*
+ * DBeaver - Universal Database Manager
+ * Copyright (C) 2010-2016 Serge Rieder (serge@jkiss.org)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License (version 2)
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+package org.jkiss.dbeaver.ui.actions.navigator;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder;
+import org.jkiss.dbeaver.model.navigator.DBNDatabaseItem;
+import org.jkiss.dbeaver.model.navigator.DBNNode;
+import org.jkiss.dbeaver.model.navigator.meta.DBXTreeItem;
+import org.jkiss.dbeaver.model.struct.DBSObjectFilter;
+import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
+
+import java.util.Collections;
+
+public class NavigatorHandlerFilterToggle extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ final ISelection selection = HandlerUtil.getCurrentSelection(event);
+ DBNNode node = NavigatorUtils.getSelectedNode(selection);
+ if (node instanceof DBNDatabaseItem) {
+ node = node.getParentNode();
+ }
+ if (node instanceof DBNDatabaseFolder) {
+ final DBNDatabaseFolder folder = (DBNDatabaseFolder) node;
+ DBXTreeItem itemsMeta = folder.getItemsMeta();
+ if (itemsMeta != null) {
+ final DBSObjectFilter nodeFilter = folder.getNodeFilter(itemsMeta, true);
+ if (nodeFilter != null) {
+ nodeFilter.setEnabled(!nodeFilter.isEnabled());
+ NavigatorHandlerRefresh.refreshNavigator(Collections.singleton(folder));
+ }
+ }
+
+ }
+ return null;
+ }
+
+}
\ No newline at end of file