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