提交 31f637fe 编写于 作者: S Serge Rider

Preference pages refactoring

上级 693aa4be
......@@ -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
......@@ -212,6 +212,8 @@
<page category="org.jkiss.dbeaver.preferences.main.resultset" id="org.jkiss.dbeaver.preferences.main.dataformat" class="org.jkiss.dbeaver.ui.preferences.PrefPageDataFormat" name="%pref.page.name.data.formats">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.db.dataformat"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnections" name="%pref.page.name.connections">
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.meta" class="org.jkiss.dbeaver.ui.preferences.PrefPageMetaData" name="%pref.page.name.meta">
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.misc.qm" class="org.jkiss.dbeaver.ui.preferences.PrefPageQueryManager" name="%pref.page.name.query.manager">
......
......@@ -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
......@@ -53,6 +53,8 @@
<page category="org.jkiss.dbeaver.preferences.main.resultset" id="org.jkiss.dbeaver.preferences.main.dataformat" class="org.jkiss.dbeaver.ui.preferences.PrefPageDataFormat" name="%pref.page.name.data.formats">
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.db.dataformat"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnections" name="%pref.page.name.connections">
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.main.meta" class="org.jkiss.dbeaver.ui.preferences.PrefPageMetaData" name="%pref.page.name.meta">
</page>
<page category="org.jkiss.dbeaver.preferences.main" id="org.jkiss.dbeaver.preferences.misc.qm" class="org.jkiss.dbeaver.ui.preferences.PrefPageQueryManager" name="%pref.page.name.query.manager">
......
......@@ -2185,6 +2185,14 @@
</or>
</enabledWhen>
</page>
<page id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnections" name="Connections">
<enabledWhen>
<or>
<instanceof value="org.jkiss.dbeaver.model.navigator.DBNDataSource"/>
<adapt type="org.jkiss.dbeaver.model.DBPDataSourceContainer"/>
</or>
</enabledWhen>
</page>
<page id="org.jkiss.dbeaver.preferences.main.meta" class="org.jkiss.dbeaver.ui.preferences.PrefPageMetaData" name="Metadata">
<enabledWhen>
<or>
......
/*
* 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
......@@ -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);
......
......@@ -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());
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册