From 0b09d38846fe0661bd188e9907ce52b93a19d787 Mon Sep 17 00:00:00 2001 From: jurgen Date: Fri, 21 Aug 2015 10:52:08 +0000 Subject: [PATCH] ResultSet presentation preferences. Plaintext column max length preference added --- .../plugin.properties | 1 + .../plugin.xml | 2 + .../plugin.properties | 1 + .../org.jkiss.dbeaver.core.eclipse/plugin.xml | 2 + plugins/org.jkiss.dbeaver.core/plugin.xml | 9 + .../connection/EditConnectionWizard.java | 1 + .../ui/preferences/PrefPageResultSetMain.java | 43 +---- .../PrefPageResultSetPresentation.java | 154 ++++++++++++++++++ 8 files changed, 172 insertions(+), 41 deletions(-) create mode 100644 plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetPresentation.java diff --git a/plugins/org.jkiss.dbeaver.core.application/plugin.properties b/plugins/org.jkiss.dbeaver.core.application/plugin.properties index 08861de82c..5b1a473f04 100644 --- a/plugins/org.jkiss.dbeaver.core.application/plugin.properties +++ b/plugins/org.jkiss.dbeaver.core.application/plugin.properties @@ -51,4 +51,5 @@ pref.page.name.confirmations=Confirmations pref.page.name.keys=Keys pref.page.name.resultset=Result Sets pref.page.name.resultset.binaries=Binaries +pref.page.name.resultset.presentation=Presentation pref.page.name.meta=Metadata diff --git a/plugins/org.jkiss.dbeaver.core.application/plugin.xml b/plugins/org.jkiss.dbeaver.core.application/plugin.xml index 2e62c7393c..0b8a1679b4 100644 --- a/plugins/org.jkiss.dbeaver.core.application/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core.application/plugin.xml @@ -220,6 +220,8 @@ + + diff --git a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties index 3af2b3b53c..c5954f88c6 100644 --- a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties +++ b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties @@ -33,4 +33,5 @@ pref.page.name.resources=Resources pref.page.name.confirmations=Confirmations pref.page.name.resultset=Result Sets pref.page.name.resultset.binaries=Binaries +pref.page.name.resultset.presentation=Presentation pref.page.name.meta=Metadata diff --git a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml index 2c58b58c99..90abe551ad 100644 --- a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml @@ -48,6 +48,8 @@ + + diff --git a/plugins/org.jkiss.dbeaver.core/plugin.xml b/plugins/org.jkiss.dbeaver.core/plugin.xml index 6c6d889052..1a75e303cb 100644 --- a/plugins/org.jkiss.dbeaver.core/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core/plugin.xml @@ -1847,6 +1847,15 @@ + + + + + + + + + diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditConnectionWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditConnectionWizard.java index a29943e3ea..5ee57c45ae 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditConnectionWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/EditConnectionWizard.java @@ -106,6 +106,7 @@ public class EditConnectionWizard extends ConnectionWizard WizardPrefPage rsPage = addPreferencePage(new PrefPageResultSetMain(), "Result Sets", "Result Set preferences"); rsPage.addSubPage(new PrefPageResultSetBinaries(), "Binaries", "Binary data representation"); rsPage.addSubPage(new PrefPageDataFormat(), "Data Formatting", "Data formatting preferences"); + rsPage.addSubPage(new PrefPageResultSetPresentation(), "Presentation", "ResultSets UI & presentation"); WizardPrefPage sqlPage = addPreferencePage(new PrefPageSQLEditor(), "SQL Editor", "SQL editor settings"); sqlPage.addSubPage(new PrefPageSQLExecute(), "SQL Processing", "SQL processing settings"); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetMain.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetMain.java index 121b9862fb..487d958654 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetMain.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetMain.java @@ -28,9 +28,7 @@ import org.jkiss.dbeaver.core.CoreMessages; import org.jkiss.dbeaver.model.DBPPreferenceStore; import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; import org.jkiss.dbeaver.ui.UIUtils; -import org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.Spreadsheet; import org.jkiss.dbeaver.utils.PrefUtils; -import org.jkiss.utils.CommonUtils; /** * PrefPageResultSetMain @@ -44,11 +42,6 @@ public class PrefPageResultSetMain extends TargetPrefPage private Button resultSetUseSQLCheck; private Button serverSideOrderingCheck; - private Button showOddRows; - private Button showCellIcons; - private Combo doubleClickBehavior; - private Button autoSwitchMode; - private Button keepStatementOpenCheck; private Button rollbackOnErrorCheck; private Button alwaysUseAllColumns; @@ -70,11 +63,7 @@ public class PrefPageResultSetMain extends TargetPrefPage store.contains(ModelPreferences.QUERY_ROLLBACK_ON_ERROR) || store.contains(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS) || store.contains(DBeaverPreferences.KEEP_STATEMENT_OPEN) || - store.contains(DBeaverPreferences.RESULT_SET_ORDER_SERVER_SIDE) || - store.contains(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS) || - store.contains(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS) || - store.contains(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK) || - store.contains(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE) + store.contains(DBeaverPreferences.RESULT_SET_ORDER_SERVER_SIDE) ; } @@ -119,18 +108,6 @@ public class PrefPageResultSetMain extends TargetPrefPage alwaysUseAllColumns = UIUtils.createLabelCheckbox(txnGroup, CoreMessages.pref_page_content_editor_checkbox_keys_always_use_all_columns, false); } - { - Group uiGroup = UIUtils.createControlGroup(composite, "UI", 2, SWT.NONE, 0); - - showOddRows = UIUtils.createLabelCheckbox(uiGroup, "Mark odd/even rows", false); - showCellIcons = UIUtils.createLabelCheckbox(uiGroup, "Show cell icons", false); - doubleClickBehavior = UIUtils.createLabelCombo(uiGroup, "Double-click behavior", SWT.READ_ONLY); - doubleClickBehavior.add("None", Spreadsheet.DoubleClickBehavior.NONE.ordinal()); - doubleClickBehavior.add("Editor", Spreadsheet.DoubleClickBehavior.EDITOR.ordinal()); - doubleClickBehavior.add("Inline Editor", Spreadsheet.DoubleClickBehavior.INLINE_EDITOR.ordinal()); - autoSwitchMode = UIUtils.createLabelCheckbox(uiGroup, "Switch to record/grid mode\non single/multiple row(s)", false); - } - return composite; } @@ -146,12 +123,6 @@ public class PrefPageResultSetMain extends TargetPrefPage keepStatementOpenCheck.setSelection(store.getBoolean(DBeaverPreferences.KEEP_STATEMENT_OPEN)); rollbackOnErrorCheck.setSelection(store.getBoolean(ModelPreferences.QUERY_ROLLBACK_ON_ERROR)); alwaysUseAllColumns.setSelection(store.getBoolean(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS)); - - showOddRows.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS)); - showCellIcons.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS)); - doubleClickBehavior.select( - Spreadsheet.DoubleClickBehavior.valueOf(store.getString(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK)).ordinal()); - autoSwitchMode.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE)); } catch (Exception e) { log.warn(e); } @@ -169,11 +140,6 @@ public class PrefPageResultSetMain extends TargetPrefPage store.setValue(DBeaverPreferences.KEEP_STATEMENT_OPEN, keepStatementOpenCheck.getSelection()); store.setValue(ModelPreferences.QUERY_ROLLBACK_ON_ERROR, rollbackOnErrorCheck.getSelection()); store.setValue(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS, alwaysUseAllColumns.getSelection()); - - store.setValue(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS, showOddRows.getSelection()); - store.setValue(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS, showCellIcons.getSelection()); - store.setValue(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK, CommonUtils.fromOrdinal(Spreadsheet.DoubleClickBehavior.class, doubleClickBehavior.getSelectionIndex()).name()); - store.setValue(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE, autoSwitchMode.getSelection()); } catch (Exception e) { log.warn(e); } @@ -186,16 +152,11 @@ public class PrefPageResultSetMain extends TargetPrefPage store.setToDefault(DBeaverPreferences.RESULT_SET_AUTO_FETCH_NEXT_SEGMENT); store.setToDefault(DBeaverPreferences.RESULT_SET_MAX_ROWS); store.setToDefault(ModelPreferences.RESULT_SET_MAX_ROWS_USE_SQL); + store.setToDefault(DBeaverPreferences.RESULT_SET_ORDER_SERVER_SIDE); store.setToDefault(DBeaverPreferences.KEEP_STATEMENT_OPEN); store.setToDefault(ModelPreferences.QUERY_ROLLBACK_ON_ERROR); store.setToDefault(DBeaverPreferences.RS_EDIT_USE_ALL_COLUMNS); - - store.setToDefault(DBeaverPreferences.RESULT_SET_ORDER_SERVER_SIDE); - store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS); - store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS); - store.setToDefault(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK); - store.setToDefault(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE); } @Override diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetPresentation.java new file mode 100644 index 0000000000..8be79f93fa --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageResultSetPresentation.java @@ -0,0 +1,154 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2015 Serge Rieder (serge@jkiss.org) + * Copyright (C) 2011-2012 Eugene Fradkin (eugene.fradkin@gmail.com) + * + * 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.preferences; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.*; +import org.jkiss.dbeaver.DBeaverPreferences; +import org.jkiss.dbeaver.model.DBPPreferenceStore; +import org.jkiss.dbeaver.model.struct.DBSDataSourceContainer; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.resultset.spreadsheet.Spreadsheet; +import org.jkiss.dbeaver.utils.PrefUtils; +import org.jkiss.utils.CommonUtils; + +/** + * PrefPageResultSetPresentation + */ +public class PrefPageResultSetPresentation extends TargetPrefPage +{ + public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.resultset.presentation"; //$NON-NLS-1$ + + private Button gridShowOddRows; + private Button gridShowCellIcons; + private Combo gridDoubleClickBehavior; + private Button autoSwitchMode; + + private Spinner textMaxColumnSize; + + public PrefPageResultSetPresentation() + { + super(); + } + + @Override + protected boolean hasDataSourceSpecificOptions(DBSDataSourceContainer dataSourceDescriptor) + { + DBPPreferenceStore store = dataSourceDescriptor.getPreferenceStore(); + return + store.contains(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS) || + store.contains(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS) || + store.contains(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK) || + store.contains(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE) || + + store.contains(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE) + ; + } + + @Override + protected boolean supportsDataSourceSpecificOptions() + { + return true; + } + + @Override + protected Control createPreferenceContent(Composite parent) + { + Composite composite = UIUtils.createPlaceholder(parent, 1, 5); + + { + Group uiGroup = UIUtils.createControlGroup(composite, "Behavior", 2, SWT.NONE, 0); + + autoSwitchMode = UIUtils.createLabelCheckbox(uiGroup, "Switch to record/grid mode on single/multiple row(s)", false); + } + + { + Group uiGroup = UIUtils.createControlGroup(composite, "Grid", 2, SWT.NONE, 0); + + gridShowOddRows = UIUtils.createLabelCheckbox(uiGroup, "Mark odd/even rows", false); + gridShowCellIcons = UIUtils.createLabelCheckbox(uiGroup, "Show cell icons", false); + gridDoubleClickBehavior = UIUtils.createLabelCombo(uiGroup, "Double-click behavior", SWT.READ_ONLY); + gridDoubleClickBehavior.add("None", Spreadsheet.DoubleClickBehavior.NONE.ordinal()); + gridDoubleClickBehavior.add("Editor", Spreadsheet.DoubleClickBehavior.EDITOR.ordinal()); + gridDoubleClickBehavior.add("Inline Editor", Spreadsheet.DoubleClickBehavior.INLINE_EDITOR.ordinal()); + } + + { + Group uiGroup = UIUtils.createControlGroup(composite, "Plain text", 2, SWT.NONE, 0); + + textMaxColumnSize = UIUtils.createLabelSpinner(uiGroup, "Maximum column length", 0, 10, Integer.MAX_VALUE); + } + + return composite; + } + + @Override + protected void loadPreferences(DBPPreferenceStore store) + { + try { + gridShowOddRows.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS)); + gridShowCellIcons.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS)); + gridDoubleClickBehavior.select( + Spreadsheet.DoubleClickBehavior.valueOf(store.getString(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK)).ordinal()); + autoSwitchMode.setSelection(store.getBoolean(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE)); + + textMaxColumnSize.setSelection(store.getInt(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE)); + } catch (Exception e) { + log.warn(e); + } + } + + @Override + protected void savePreferences(DBPPreferenceStore store) + { + try { + store.setValue(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS, gridShowOddRows.getSelection()); + store.setValue(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS, gridShowCellIcons.getSelection()); + store.setValue(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK, CommonUtils.fromOrdinal(Spreadsheet.DoubleClickBehavior.class, gridDoubleClickBehavior.getSelectionIndex()).name()); + store.setValue(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE, autoSwitchMode.getSelection()); + store.setValue(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE, textMaxColumnSize.getSelection()); + } catch (Exception e) { + log.warn(e); + } + PrefUtils.savePreferenceStore(store); + } + + @Override + protected void clearPreferences(DBPPreferenceStore store) + { + store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_ODD_ROWS); + store.setToDefault(DBeaverPreferences.RESULT_SET_SHOW_CELL_ICONS); + store.setToDefault(DBeaverPreferences.RESULT_SET_DOUBLE_CLICK); + store.setToDefault(DBeaverPreferences.RESULT_SET_AUTO_SWITCH_MODE); + store.setToDefault(DBeaverPreferences.RESULT_TEXT_MAX_COLUMN_SIZE); + } + + @Override + public void applyData(Object data) + { + super.applyData(data); + } + + @Override + protected String getPropertyPageID() + { + return PAGE_ID; + } + +} \ No newline at end of file -- GitLab