diff --git a/plugins/org.jkiss.dbeaver.core.application/plugin.properties b/plugins/org.jkiss.dbeaver.core.application/plugin.properties index f7b6213e8a9e3e14b822164ae827e5fbb647e224..3c3b7fdea2612c4369fb20defd8fb19d42a7d3c8 100644 --- a/plugins/org.jkiss.dbeaver.core.application/plugin.properties +++ b/plugins/org.jkiss.dbeaver.core.application/plugin.properties @@ -51,3 +51,4 @@ pref.page.name.resultset=Result Sets pref.page.name.resultset.binaries=Binaries pref.page.name.resultset.presentation=Presentation pref.page.name.meta=Metadata +pref.page.name.connections=Connections diff --git a/plugins/org.jkiss.dbeaver.core.application/plugin.xml b/plugins/org.jkiss.dbeaver.core.application/plugin.xml index 7b9f583817d6ef44f8d435ea16db76021ac58029..3f3adaa2e05d7bfa2f85c8d3e8f2a7f8b441740b 100644 --- a/plugins/org.jkiss.dbeaver.core.application/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core.application/plugin.xml @@ -212,6 +212,8 @@ + + diff --git a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties index 6539abe28769e8bd083cf263da1f955dd6c87897..8d2a254a117d3e5e436e1467ca3eeb1cd5c7e615 100644 --- a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties +++ b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.properties @@ -42,3 +42,4 @@ pref.page.name.resultset=Result Sets pref.page.name.resultset.binaries=Binaries pref.page.name.resultset.presentation=Presentation pref.page.name.meta=Metadata +pref.page.name.connections=Connections diff --git a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml index 7180dbdb7d70f05c988668f0ea59b28b6e00b464..a8a6585d9db6aee4a86b78b6107e7ff8fe91a28c 100644 --- a/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core.eclipse/plugin.xml @@ -53,6 +53,8 @@ + + diff --git a/plugins/org.jkiss.dbeaver.core/plugin.xml b/plugins/org.jkiss.dbeaver.core/plugin.xml index 234d430b0efef3b0aa99b81c9c772592fedc00fb..57e9fcfbb6ffd52b92ef0633730b2e8835743f1a 100644 --- a/plugins/org.jkiss.dbeaver.core/plugin.xml +++ b/plugins/org.jkiss.dbeaver.core/plugin.xml @@ -2185,6 +2185,14 @@ + + + + + + + + diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConnections.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConnections.java new file mode 100644 index 0000000000000000000000000000000000000000..1fd136732ecec0bbdb815143ac11443bd776be46 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageConnections.java @@ -0,0 +1,130 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2016 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.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.*; +import org.jkiss.dbeaver.ModelPreferences; +import org.jkiss.dbeaver.model.DBPDataSourceContainer; +import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.utils.PrefUtils; + +/** + * PrefPageConnections + */ +public class PrefPageConnections extends TargetPrefPage +{ + public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.connections"; //$NON-NLS-1$ + + private Button overrideClientApplicationNameCheck; + private Text clientApplicationNameText; + + public PrefPageConnections() + { + super(); + } + + @Override + protected boolean hasDataSourceSpecificOptions(DBPDataSourceContainer dataSourceDescriptor) + { + DBPPreferenceStore store = dataSourceDescriptor.getPreferenceStore(); + return + store.contains(ModelPreferences.META_CLIENT_NAME_OVERRIDE) || + store.contains(ModelPreferences.META_CLIENT_NAME_VALUE) + ; + } + + @Override + protected boolean supportsDataSourceSpecificOptions() + { + return true; + } + + @Override + protected Control createPreferenceContent(Composite parent) + { + Composite composite = UIUtils.createPlaceholder(parent, 1, 5); + { + Group clientNameGroup = UIUtils.createControlGroup(composite, "Client Application Name", 2, GridData.FILL_HORIZONTAL, 0); + + final Label label = UIUtils.createLabel(clientNameGroup, + "Client application name is passed to database server on connect to identify client connections.\n" + + "By default it is set to product name + product version. You can set it to any custom value."); + GridData gd = new GridData(); + gd.horizontalSpan = 2; + label.setLayoutData(gd); + overrideClientApplicationNameCheck = UIUtils.createCheckbox(clientNameGroup, "Override client application name", null, false, 2); + overrideClientApplicationNameCheck.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + updateClientAppEnablement(); + } + }); + clientApplicationNameText = UIUtils.createLabelText(clientNameGroup, "Client Application Name", ""); + } + + return composite; + } + + private void updateClientAppEnablement() { + clientApplicationNameText.setEnabled(overrideClientApplicationNameCheck.getSelection()); + } + + @Override + protected void loadPreferences(DBPPreferenceStore store) + { + try { + overrideClientApplicationNameCheck.setSelection(store.getBoolean(ModelPreferences.META_CLIENT_NAME_OVERRIDE)); + clientApplicationNameText.setText(store.getString(ModelPreferences.META_CLIENT_NAME_VALUE)); + + updateClientAppEnablement(); + } catch (Exception e) { + log.warn(e); + } + } + + @Override + protected void savePreferences(DBPPreferenceStore store) + { + try { + store.setValue(ModelPreferences.META_CLIENT_NAME_OVERRIDE, overrideClientApplicationNameCheck.getSelection()); + store.setValue(ModelPreferences.META_CLIENT_NAME_VALUE, clientApplicationNameText.getText()); + } catch (Exception e) { + log.warn(e); + } + PrefUtils.savePreferenceStore(store); + } + + @Override + protected void clearPreferences(DBPPreferenceStore store) + { + store.setToDefault(ModelPreferences.META_CLIENT_NAME_OVERRIDE); + store.setToDefault(ModelPreferences.META_CLIENT_NAME_VALUE); + } + + @Override + protected String getPropertyPageID() + { + return PAGE_ID; + } + +} \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java index dfb2a781b0c59ecc8720be9506a36be129d10232..a7200ebc47ae301c9140a07fb95a1ba473005fd8 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseGeneral.java @@ -50,7 +50,6 @@ public class PrefPageDatabaseGeneral extends AbstractPrefPage implements IWorkbe private Button keepEditorsOnRestart; private Button refreshEditorOnOpen; - private Button syncEditorDataSourceWithNavigator; private Combo defaultResourceEncoding; public PrefPageDatabaseGeneral() @@ -100,10 +99,6 @@ public class PrefPageDatabaseGeneral extends AbstractPrefPage implements IWorkbe refreshEditorOnOpen = UIUtils.createCheckbox(groupEditors, CoreMessages.pref_page_ui_general_refresh_editor_on_open, false); refreshEditorOnOpen.setToolTipText("Refreshes object from database every time you open this object's editor.\nYou may need this option if your database structure changes frequently (e.g. by SQL scripts)."); - - syncEditorDataSourceWithNavigator = UIUtils.createCheckbox(groupEditors, "Auto-sync editor connection with navigator selection", false); - syncEditorDataSourceWithNavigator.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, true, false, 2, 1)); - syncEditorDataSourceWithNavigator.setToolTipText("Automatically sets editor (e.g. SQL editor) connection from selected navigator node.\nMakes sense if you need to change active connection/schema frequently."); } { // Resources @@ -131,7 +126,6 @@ public class PrefPageDatabaseGeneral extends AbstractPrefPage implements IWorkbe keepEditorsOnRestart.setSelection(store.getBoolean(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS)); refreshEditorOnOpen.setSelection(store.getBoolean(DBeaverPreferences.NAVIGATOR_REFRESH_EDITORS_ON_OPEN)); - syncEditorDataSourceWithNavigator.setSelection(store.getBoolean(DBeaverPreferences.NAVIGATOR_SYNC_EDITOR_DATASOURCE)); defaultResourceEncoding.setText(store.getString(DBeaverPreferences.DEFAULT_RESOURCE_ENCODING)); } @@ -147,7 +141,6 @@ public class PrefPageDatabaseGeneral extends AbstractPrefPage implements IWorkbe store.setValue(DBeaverPreferences.UI_KEEP_DATABASE_EDITORS, keepEditorsOnRestart.getSelection()); store.setValue(DBeaverPreferences.NAVIGATOR_REFRESH_EDITORS_ON_OPEN, refreshEditorOnOpen.getSelection()); - store.setValue(DBeaverPreferences.NAVIGATOR_SYNC_EDITOR_DATASOURCE, syncEditorDataSourceWithNavigator.getSelection()); store.setValue(DBeaverPreferences.DEFAULT_RESOURCE_ENCODING, defaultResourceEncoding.getText()); PrefUtils.savePreferenceStore(store); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java index f0bf10434458c0da8eb0cbd576939abb72489951..9b82ce7e462bff1130e4ace27e8cee4e6bc1fdd5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageDatabaseNavigator.java @@ -47,6 +47,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork private Button sortFoldersFirstCheck; private Button groupByDriverCheck; private Button editorFullName; + private Button syncEditorDataSourceWithNavigator; private Combo doubleClickBehavior; public PrefPageDatabaseNavigator() @@ -85,6 +86,10 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork editorFullName = UIUtils.createCheckbox(navigatorGroup, "Show full object names in editors", false); editorFullName.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, true, false, 2, 1)); + syncEditorDataSourceWithNavigator = UIUtils.createCheckbox(navigatorGroup, "Auto-sync editor connection with navigator selection", false); + syncEditorDataSourceWithNavigator.setLayoutData(new GridData(GridData.BEGINNING, GridData.BEGINNING, true, false, 2, 1)); + syncEditorDataSourceWithNavigator.setToolTipText("Automatically sets editor (e.g. SQL editor) connection from selected navigator node.\nMakes sense if you need to change active connection/schema frequently."); + doubleClickBehavior = UIUtils.createLabelCombo(navigatorGroup, "Double-click on connection", SWT.DROP_DOWN | SWT.READ_ONLY); doubleClickBehavior.add("Open Properties", NavigatorViewBase.DoubleClickBehavior.EDIT.ordinal()); doubleClickBehavior.add("Connect / Disconnect", NavigatorViewBase.DoubleClickBehavior.CONNECT.ordinal()); @@ -107,6 +112,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork sortFoldersFirstCheck.setSelection(store.getBoolean(DBeaverPreferences.NAVIGATOR_SORT_FOLDERS_FIRST)); groupByDriverCheck.setSelection(store.getBoolean(DBeaverPreferences.NAVIGATOR_GROUP_BY_DRIVER)); editorFullName.setSelection(store.getBoolean(DBeaverPreferences.NAVIGATOR_EDITOR_FULL_NAME)); + syncEditorDataSourceWithNavigator.setSelection(store.getBoolean(DBeaverPreferences.NAVIGATOR_SYNC_EDITOR_DATASOURCE)); doubleClickBehavior.select( NavigatorViewBase.DoubleClickBehavior.valueOf(store.getString(DBeaverPreferences.NAVIGATOR_CONNECTION_DOUBLE_CLICK)).ordinal()); } @@ -121,6 +127,7 @@ public class PrefPageDatabaseNavigator extends AbstractPrefPage implements IWork store.setValue(DBeaverPreferences.NAVIGATOR_SORT_FOLDERS_FIRST, sortFoldersFirstCheck.getSelection()); store.setValue(DBeaverPreferences.NAVIGATOR_GROUP_BY_DRIVER, groupByDriverCheck.getSelection()); store.setValue(DBeaverPreferences.NAVIGATOR_EDITOR_FULL_NAME, editorFullName.getSelection()); + store.setValue(DBeaverPreferences.NAVIGATOR_SYNC_EDITOR_DATASOURCE, syncEditorDataSourceWithNavigator.getSelection()); store.setValue(DBeaverPreferences.NAVIGATOR_CONNECTION_DOUBLE_CLICK, CommonUtils.fromOrdinal(NavigatorViewBase.DoubleClickBehavior.class, doubleClickBehavior.getSelectionIndex()).name()); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java index 0bf942b118a650e9a7c106e68d94b6ecb039fa4a..236c4cfba4f04ba5f3e060cae5ebfbbaae5d4fe1 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/preferences/PrefPageMetaData.java @@ -18,10 +18,11 @@ */ package org.jkiss.dbeaver.ui.preferences; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.*; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Group; import org.jkiss.dbeaver.DBeaverPreferences; import org.jkiss.dbeaver.ModelPreferences; import org.jkiss.dbeaver.core.CoreMessages; @@ -41,9 +42,6 @@ public class PrefPageMetaData extends TargetPrefPage private Button separateMetaConnectionCheck; private Button caseSensitiveNamesCheck; - private Button overrideClientApplicationNameCheck; - private Text clientApplicationNameText; - public PrefPageMetaData() { super(); @@ -56,9 +54,7 @@ public class PrefPageMetaData extends TargetPrefPage return store.contains(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES) || store.contains(ModelPreferences.META_SEPARATE_CONNECTION) || - store.contains(ModelPreferences.META_CASE_SENSITIVE) || - store.contains(ModelPreferences.META_CLIENT_NAME_OVERRIDE) || - store.contains(ModelPreferences.META_CLIENT_NAME_VALUE) + store.contains(ModelPreferences.META_CASE_SENSITIVE) ; } @@ -80,32 +76,9 @@ public class PrefPageMetaData extends TargetPrefPage readExpensiveCheck = UIUtils.createCheckbox(metadataGroup, CoreMessages.pref_page_database_general_checkbox_show_row_count, false); } - { - Group clientNameGroup = UIUtils.createControlGroup(composite, "Client Application Name", 2, GridData.FILL_HORIZONTAL, 0); - - final Label label = UIUtils.createLabel(clientNameGroup, - "Client application name is passed to database server on connect to identify client connections.\n" + - "By default it is set to product name + product version. You can set it to any custom value."); - GridData gd = new GridData(); - gd.horizontalSpan = 2; - label.setLayoutData(gd); - overrideClientApplicationNameCheck = UIUtils.createCheckbox(clientNameGroup, "Override client application name", null, false, 2); - overrideClientApplicationNameCheck.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - updateClientAppEnablement(); - } - }); - clientApplicationNameText = UIUtils.createLabelText(clientNameGroup, "Client Application Name", ""); - } - return composite; } - private void updateClientAppEnablement() { - clientApplicationNameText.setEnabled(overrideClientApplicationNameCheck.getSelection()); - } - @Override protected void loadPreferences(DBPPreferenceStore store) { @@ -113,11 +86,6 @@ public class PrefPageMetaData extends TargetPrefPage readExpensiveCheck.setSelection(store.getBoolean(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES)); separateMetaConnectionCheck.setSelection(store.getBoolean(ModelPreferences.META_SEPARATE_CONNECTION)); caseSensitiveNamesCheck.setSelection(store.getBoolean(ModelPreferences.META_CASE_SENSITIVE)); - - overrideClientApplicationNameCheck.setSelection(store.getBoolean(ModelPreferences.META_CLIENT_NAME_OVERRIDE)); - clientApplicationNameText.setText(store.getString(ModelPreferences.META_CLIENT_NAME_VALUE)); - - updateClientAppEnablement(); } catch (Exception e) { log.warn(e); } @@ -130,9 +98,6 @@ public class PrefPageMetaData extends TargetPrefPage store.setValue(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES, readExpensiveCheck.getSelection()); store.setValue(ModelPreferences.META_SEPARATE_CONNECTION, separateMetaConnectionCheck.getSelection()); store.setValue(ModelPreferences.META_CASE_SENSITIVE, caseSensitiveNamesCheck.getSelection()); - - store.setValue(ModelPreferences.META_CLIENT_NAME_OVERRIDE, overrideClientApplicationNameCheck.getSelection()); - store.setValue(ModelPreferences.META_CLIENT_NAME_VALUE, clientApplicationNameText.getText()); } catch (Exception e) { log.warn(e); } @@ -145,9 +110,6 @@ public class PrefPageMetaData extends TargetPrefPage store.setToDefault(DBeaverPreferences.READ_EXPENSIVE_PROPERTIES); store.setToDefault(ModelPreferences.META_SEPARATE_CONNECTION); store.setToDefault(ModelPreferences.META_CASE_SENSITIVE); - - store.setToDefault(ModelPreferences.META_CLIENT_NAME_OVERRIDE); - store.setToDefault(ModelPreferences.META_CLIENT_NAME_VALUE); } @Override