diff --git a/plugins/org.jkiss.dbeaver.core/icons/misc/filter_save.png b/plugins/org.jkiss.dbeaver.core/icons/misc/filter_save.png new file mode 100644 index 0000000000000000000000000000000000000000..b08686dfeb962d34f5ef84140dc79622adcdff9c Binary files /dev/null and b/plugins/org.jkiss.dbeaver.core/icons/misc/filter_save.png differ diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java index 5b61b6378f4c8328129315a7af02dd22e5800704..7142743d2da081dad56d83395c3d2ab8390be099 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIIcon.java @@ -100,6 +100,7 @@ public class UIIcon { public static final DBIcon FILTER_CLIPBOARD = new DBIcon("filter_clipboard", "misc/filter_clipboard.png"); //$NON-NLS-1$ //$NON-NLS-2$ public static final DBIcon FILTER_APPLY = new DBIcon("filter_apply", "misc/filter_apply.png"); //$NON-NLS-1$ //$NON-NLS-2$ public static final DBIcon FILTER_RESET = new DBIcon("filter_reset", "misc/filter_reset.png"); //$NON-NLS-1$ //$NON-NLS-2$ + public static final DBIcon FILTER_SAVE = new DBIcon("filter_save", "misc/filter_save.png"); //$NON-NLS-1$ //$NON-NLS-2$ public static final DBIcon EVENT = new DBIcon("event", "misc/event.png"); //$NON-NLS-1$ //$NON-NLS-2$ public static final DBIcon HOME = new DBIcon("home", "misc/home.png"); //$NON-NLS-1$ //$NON-NLS-2$ diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java index 27a83b1116d955cbc36974d6058cff372b07412f..5f40aaa3a11e4bd330fef144db34435e8164c492 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java @@ -94,6 +94,7 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider private final ToolBar filterToolbar; private final ToolItem filtersApplyButton; private final ToolItem filtersClearButton; + private final ToolItem filtersSaveButton; private final ToolItem autoRefreshButton; private final ToolItem historyBackButton; private final ToolItem historyForwardButton; @@ -226,7 +227,7 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider filtersClearButton = new ToolItem(filterToolbar, SWT.PUSH | SWT.NO_FOCUS); filtersClearButton.setImage(DBeaverIcons.getImage(UIIcon.FILTER_RESET)); - filtersClearButton.setToolTipText("Remove all filters"); + filtersClearButton.setToolTipText("Remove all filters/orderings"); filtersClearButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -235,6 +236,18 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider }); filtersClearButton.setEnabled(false); + + filtersSaveButton = new ToolItem(filterToolbar, SWT.PUSH | SWT.NO_FOCUS); + filtersSaveButton.setImage(DBeaverIcons.getImage(UIIcon.FILTER_SAVE)); + filtersSaveButton.setToolTipText("Save filter settings for current object"); + filtersSaveButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + viewer.saveDataFilter(); + } + }); + filtersSaveButton.setEnabled(false); + ToolItem filtersCustomButton = new ToolItem(filterToolbar, SWT.PUSH | SWT.NO_FOCUS); filtersCustomButton.setImage(DBeaverIcons.getImage(UIIcon.FILTER)); filtersCustomButton.setToolTipText("Custom Filters"); @@ -319,7 +332,8 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider String filterText = filtersText.getText(); filtersText.setEnabled(supportsDataFilter); filtersApplyButton.setEnabled(supportsDataFilter); - filtersClearButton.setEnabled(supportsDataFilter && !CommonUtils.isEmpty(filterText)); + filtersClearButton.setEnabled(viewer.getModel().getDataFilter().hasFilters()); + filtersSaveButton.setEnabled(true); // Update history buttons if (historyPosition > 0) { historyBackButton.setEnabled(true); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index 9f0d5a65ef9258ffd02d257386cd06839f5ef41a..c0d497a13adf1626cdfe54e159982dc8369abef1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -288,6 +288,11 @@ public class ResultSetViewer extends Viewer setDataFilter(model.createDataFilter(), refresh); } + public void saveDataFilter() + { + + } + void switchFilterFocus() { boolean filterFocused = filtersPanel.getEditControl().isFocusControl(); if (filterFocused) {