提交 ab9728b1 编写于 作者: S Serge Rider

dbeaver/dbeaver-ee#808 Connection type and navigator settings defaults + pref page

上级 40fb30e4
......@@ -931,7 +931,7 @@
<page id="org.jkiss.dbeaver.preferences.main.errorHandle" class="org.jkiss.dbeaver.ui.preferences.PrefPageErrorHandle" name="%page.org.jkiss.dbeaver.preferences.main.errorHandle.name">
<enabledWhen><reference definitionId="org.jkiss.dbeaver.core.preferences.datasource"/></enabledWhen>
</page>
<page id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnections" name="%page.org.jkiss.dbeaver.preferences.main.connections.name">
<page id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionClient" name="%page.org.jkiss.dbeaver.preferences.main.connections.name">
<enabledWhen>
<or>
<instanceof value="org.jkiss.dbeaver.model.navigator.DBNDataSource"/>
......
......@@ -28,7 +28,6 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverActivator;
import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
......@@ -43,7 +42,6 @@ import org.jkiss.dbeaver.ui.dialogs.ActiveWizardPage;
import org.jkiss.dbeaver.ui.dialogs.driver.DriverSelectViewer;
import org.jkiss.dbeaver.ui.dialogs.driver.DriverTreeViewer;
import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
import org.jkiss.utils.CommonUtils;
/**
* Driver selection page
......@@ -51,11 +49,8 @@ import org.jkiss.utils.CommonUtils;
*/
class ConnectionPageDriver extends ActiveWizardPage implements ISelectionChangedListener, IDoubleClickListener {
private static final String DEFAULT_NAVIGATOR_SETTINGS_RESET = "navigator.settings.preset.default";
private NewConnectionWizard wizard;
private DBPDriver selectedDriver;
private DataSourceNavigatorSettings.Preset navigatorPreset;
private DriverSelectViewer driverSelectViewer;
private ProjectSelectorPanel projectSelector;
private Control filterIndentLabel;
......@@ -66,21 +61,6 @@ class ConnectionPageDriver extends ActiveWizardPage implements ISelectionChanged
this.wizard = wizard;
setTitle(CoreMessages.dialog_new_connection_wizard_start_title);
setDescription(CoreMessages.dialog_new_connection_wizard_start_description);
String defPreset = DBeaverActivator.getInstance().getPreferences().getString(DEFAULT_NAVIGATOR_SETTINGS_RESET);
if (CommonUtils.isEmpty(defPreset)) {
defPreset = DataSourceNavigatorSettings.PRESET_FULL.getId();
}
for (DataSourceNavigatorSettings.Preset p : DataSourceNavigatorSettings.PRESETS.values()) {
if (p.getId().equals(defPreset)) {
navigatorPreset = p;
break;
}
}
if (navigatorPreset == null) {
navigatorPreset = DataSourceNavigatorSettings.PRESET_FULL;
}
}
@Override
......@@ -93,33 +73,6 @@ class ConnectionPageDriver extends ActiveWizardPage implements ISelectionChanged
Composite controlsGroup = UIUtils.createComposite(placeholder, 4);
controlsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// Navigator view preset
if (false) {
Composite presetComposite = new Composite(controlsGroup, SWT.NONE);
presetComposite.setLayout(new RowLayout());
new Label(presetComposite, SWT.NONE).setImage(DBeaverIcons.getImage(UIIcon.CONFIGURATION));
new Label(presetComposite, SWT.NONE).setText("Connection view: ");
for (DataSourceNavigatorSettings.Preset p : DataSourceNavigatorSettings.PRESETS.values()) {
if (p != DataSourceNavigatorSettings.PRESET_CUSTOM) {
Button pButton = new Button(presetComposite, SWT.RADIO);
pButton.setText(p.getName());
pButton.setToolTipText(p.getDescription());
if (p == navigatorPreset) {
pButton.setSelection(true);
}
pButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (pButton.getSelection()) {
navigatorPreset = p;
DBeaverActivator.getInstance().getPreferences().setValue(DEFAULT_NAVIGATOR_SETTINGS_RESET, navigatorPreset.getId());
}
}
});
}
}
}
{
driverSelectViewer = new DriverSelectViewer(placeholder, this, wizard.getAvailableProvides(), true, DriverSelectViewer.SelectorViewType.browser) {
@Override
......@@ -214,7 +167,7 @@ class ConnectionPageDriver extends ActiveWizardPage implements ISelectionChanged
}
public DBNBrowseSettings getNavigatorSettings() {
return navigatorPreset.getSettings();
return DataSourceNavigatorSettings.getDefaultSettings();
}
@Override
......
......@@ -17,15 +17,13 @@
package org.jkiss.dbeaver.ui.dialogs.connection;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.core.CoreMessages;
......@@ -59,10 +57,20 @@ import java.util.StringTokenizer;
/**
* General connection page (common for all connection types)
*/
class ConnectionPageGeneral extends ConnectionWizardPage {
public class ConnectionPageGeneral extends ConnectionWizardPage implements NavigatorSettingsStorage {
static final String PAGE_NAME = ConnectionPageGeneral.class.getSimpleName();
@Override
public DBNBrowseSettings getNavigatorSettings() {
return navigatorSettings;
}
@Override
public void setNavigatorSettings(DBNBrowseSettings settings) {
this.navigatorSettings = settings;
}
private static class FilterInfo {
final Class<?> type;
final String title;
......@@ -155,7 +163,7 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
// Get settings from data source descriptor
final DBPConnectionConfiguration conConfig = dataSourceDescriptor.getConnectionConfiguration();
connectionTypeCombo.select(conConfig.getConnectionType());
updateNavigatorSettingsPreset();
updateNavigatorSettingsPreset(navigatorSettingsCombo, dataSourceDescriptor.getNavigatorSettings());
folderSelector.setFolder(dataSourceDescriptor.getFolder());
......@@ -169,7 +177,8 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
}
} else {
// Default settings
connectionTypeCombo.select(0);
connectionTypeCombo.select(DBPConnectionType.getDefaultConnectionType());
updateNavigatorSettingsPreset(navigatorSettingsCombo, getNavigatorSettings());
folderSelector.setFolder(curDataSourceFolder);
readOnlyConnection.setSelection(false);
......@@ -189,7 +198,7 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
filtersGroup.layout();
}
private void updateNavigatorSettingsPreset() {
public static void updateNavigatorSettingsPreset(Combo navigatorSettingsCombo, DBNBrowseSettings navigatorSettings) {
// Find first preset that matches current connection settings
boolean isPreset = false;
for (DataSourceNavigatorSettings.Preset nsEntry : DataSourceNavigatorSettings.PRESETS.values()) {
......@@ -288,12 +297,7 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
});
{
UIUtils.createControlLabel(miscGroup, CoreMessages.dialog_connection_wizard_final_label_connection_type);
Composite ctGroup = UIUtils.createComposite(miscGroup, 2);
connectionTypeCombo = new CSmartCombo<>(ctGroup, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY, new ConnectionTypeLabelProvider());
loadConnectionTypes();
connectionTypeCombo.select(0);
connectionTypeCombo = createConnectionTypeCombo(miscGroup);
connectionTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
......@@ -301,20 +305,19 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
getWizard().firePropertyChangeEvent(ConnectionWizard.PROP_CONNECTION_TYPE, getActiveDataSource().getConnectionConfiguration().getConnectionType(), type);
}
});
final GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.widthHint = UIUtils.getFontHeight(connectionTypeCombo) * 20;
connectionTypeCombo.setLayoutData(gd);
Composite ctGroup = connectionTypeCombo.getParent();
((GridLayout)ctGroup.getLayout()).numColumns++;
UIUtils.createDialogButton(ctGroup, CoreMessages.dialog_connection_wizard_final_label_connection_types_edit, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
DBPConnectionType curConType = connectionTypeCombo.getSelectedItem();
DataSourceDescriptor dataSource = getActiveDataSource();
UIUtils.showPreferencesFor(
getControl().getShell(),
ctGroup.getShell(),
dataSource.getConnectionConfiguration().getConnectionType(),
PrefPageConnectionTypes.PAGE_ID);
loadConnectionTypes();
loadConnectionTypes(connectionTypeCombo);
if (!connectionTypeCombo.getItems().contains(curConType)) {
curConType = connectionTypeCombo.getItems().get(0);
}
......@@ -325,38 +328,7 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
}
{
UIUtils.createControlLabel(miscGroup, CoreMessages.dialog_connection_wizard_final_label_navigator_settings);
Composite ctGroup = UIUtils.createComposite(miscGroup, 2);
navigatorSettingsCombo = new Combo(ctGroup, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY);
final GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.widthHint = UIUtils.getFontHeight(navigatorSettingsCombo) * 20;
navigatorSettingsCombo.setLayoutData(gd);
for (String ncPresetName : DataSourceNavigatorSettings.PRESETS.keySet()) {
navigatorSettingsCombo.add(ncPresetName);
}
navigatorSettingsCombo.select(0);
navigatorSettingsCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (navigatorSettingsCombo.getSelectionIndex() == navigatorSettingsCombo.getItemCount() - 1) {
// Custom - no changes
} else {
DataSourceNavigatorSettings.Preset newSettings = DataSourceNavigatorSettings.PRESETS.get(navigatorSettingsCombo.getText());
if (newSettings == null) {
throw new IllegalStateException("Invalid preset name: " + navigatorSettingsCombo.getText());
}
ConnectionPageGeneral.this.navigatorSettings = newSettings.getSettings();
}
}
});
UIUtils.createDialogButton(ctGroup, CoreMessages.dialog_connection_wizard_final_label_navigator_settings_customize, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
editNavigatorSettings();
}
});
navigatorSettingsCombo = createNavigatorSettingsCombo(miscGroup, this);
}
folderSelector = new ConnectionFolderSelector(miscGroup);
......@@ -476,12 +448,64 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
UIUtils.setHelp(group, IHelpContextIds.CTX_CON_WIZARD_FINAL);
}
private void editNavigatorSettings() {
EditConnectionNavigatorSettingsDialog dialog = new EditConnectionNavigatorSettingsDialog(getShell(), this.navigatorSettings);
public static Combo createNavigatorSettingsCombo(Composite composite, NavigatorSettingsStorage settingsStorage) {
UIUtils.createControlLabel(composite, CoreMessages.dialog_connection_wizard_final_label_navigator_settings);
Composite ctGroup = UIUtils.createComposite(composite, 2);
Combo navigatorSettingsCombo = new Combo(ctGroup, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY);
final GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.widthHint = UIUtils.getFontHeight(navigatorSettingsCombo) * 20;
navigatorSettingsCombo.setLayoutData(gd);
for (String ncPresetName : DataSourceNavigatorSettings.PRESETS.keySet()) {
navigatorSettingsCombo.add(ncPresetName);
}
navigatorSettingsCombo.select(0);
navigatorSettingsCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (navigatorSettingsCombo.getSelectionIndex() == navigatorSettingsCombo.getItemCount() - 1) {
// Custom - no changes
} else {
DataSourceNavigatorSettings.Preset newSettings = DataSourceNavigatorSettings.PRESETS.get(navigatorSettingsCombo.getText());
if (newSettings == null) {
throw new IllegalStateException("Invalid preset name: " + navigatorSettingsCombo.getText());
}
settingsStorage.setNavigatorSettings(newSettings.getSettings());
}
}
});
UIUtils.createDialogButton(ctGroup, CoreMessages.dialog_connection_wizard_final_label_navigator_settings_customize, new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
settingsStorage.setNavigatorSettings(editNavigatorSettings(navigatorSettingsCombo, settingsStorage.getNavigatorSettings()));
}
});
return navigatorSettingsCombo;
}
public static CSmartCombo<DBPConnectionType> createConnectionTypeCombo(Composite composite) {
UIUtils.createControlLabel(composite, CoreMessages.dialog_connection_wizard_final_label_connection_type);
Composite ctGroup = UIUtils.createComposite(composite, 1);
CSmartCombo<DBPConnectionType> connectionTypeCombo = new CSmartCombo<>(ctGroup, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY, new ConnectionTypeLabelProvider());
loadConnectionTypes(connectionTypeCombo);
connectionTypeCombo.select(DBPConnectionType.getDefaultConnectionType());
final GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
gd.widthHint = UIUtils.getFontHeight(connectionTypeCombo) * 20;
connectionTypeCombo.setLayoutData(gd);
return connectionTypeCombo;
}
private static DBNBrowseSettings editNavigatorSettings(Combo navigatorSettingsCombo, DBNBrowseSettings navigatorSettings) {
EditConnectionNavigatorSettingsDialog dialog = new EditConnectionNavigatorSettingsDialog(navigatorSettingsCombo.getShell(), navigatorSettings);
if (dialog.open() == IDialogConstants.OK_ID) {
this.navigatorSettings = dialog.getNavigatorSettings();
updateNavigatorSettingsPreset();
navigatorSettings = dialog.getNavigatorSettings();
updateNavigatorSettingsPreset(navigatorSettingsCombo, navigatorSettings);
}
return navigatorSettings;
}
private void editPermissions() {
......@@ -491,8 +515,7 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
}
}
private void loadConnectionTypes()
{
public static void loadConnectionTypes(CSmartCombo <DBPConnectionType> connectionTypeCombo) {
connectionTypeCombo.removeAll();
for (DBPConnectionType ct : DataSourceProviderRegistry.getInstance().getConnectionTypes()) {
connectionTypeCombo.addItem(ct);
......@@ -521,7 +544,7 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
dataSource.setFolder(folderSelector.getFolder());
if (connectionTypeCombo.getSelectionIndex() >= 0) {
confConfig.setConnectionType(connectionTypeCombo.getItem(connectionTypeCombo.getSelectionIndex()));
confConfig.setConnectionType(connectionTypeCombo.getSelectedItem());
}
DataSourceDescriptor dsDescriptor = (DataSourceDescriptor) dataSource;
......@@ -551,21 +574,4 @@ class ConnectionPageGeneral extends ConnectionWizardPage {
this.curDataSourceFolder = dataSourceFolder;
}
private static class ConnectionTypeLabelProvider extends LabelProvider implements IColorProvider {
@Override
public String getText(Object element) {
return ((DBPConnectionType)element).getName();
}
@Override
public Color getForeground(Object element) {
return null;
}
@Override
public Color getBackground(Object element) {
return UIUtils.getConnectionTypeColor((DBPConnectionType)element);
}
}
}
\ No newline at end of file
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2021 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ui.dialogs.connection;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Color;
import org.jkiss.dbeaver.model.connection.DBPConnectionType;
import org.jkiss.dbeaver.ui.UIUtils;
public class ConnectionTypeLabelProvider extends LabelProvider implements IColorProvider {
@Override
public String getText(Object element) {
return ((DBPConnectionType) element).getName();
}
@Override
public Color getForeground(Object element) {
return null;
}
@Override
public Color getBackground(Object element) {
return UIUtils.getConnectionTypeColor((DBPConnectionType) element);
}
}
......@@ -152,7 +152,7 @@ public class EditConnectionWizard extends ConnectionWizard
}
if (!embedded && pageSettings != null) {
PrefPageConnections pageClientSettings = new PrefPageConnections();
PrefPageConnectionClient pageClientSettings = new PrefPageConnectionClient();
pageSettings.addSubPage(
createPreferencePage(pageClientSettings, CoreMessages.dialog_connection_edit_wizard_connections, CoreMessages.dialog_connection_edit_wizard_connections_description));
}
......
package org.jkiss.dbeaver.ui.dialogs.connection;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
public interface NavigatorSettingsStorage {
DBNBrowseSettings getNavigatorSettings();
void setNavigatorSettings(DBNBrowseSettings settings);
}
......@@ -37,7 +37,7 @@ import org.jkiss.dbeaver.utils.SystemVariablesResolver;
/**
* PrefPageConnections
*/
public class PrefPageConnections extends TargetPrefPage
public class PrefPageConnectionClient extends TargetPrefPage
{
public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.client.connections"; //$NON-NLS-1$
......@@ -69,7 +69,7 @@ public class PrefPageConnections extends TargetPrefPage
private Button connUseEnvVariables;
public PrefPageConnections()
public PrefPageConnectionClient()
{
super();
}
......
......@@ -2,46 +2,72 @@ package org.jkiss.dbeaver.ui.preferences;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbenchPropertyPage;
import org.eclipse.ui.dialogs.PreferenceLinkArea;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.model.connection.DBPConnectionType;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
import org.jkiss.dbeaver.registry.DataSourceNavigatorSettings;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.controls.CSmartCombo;
import org.jkiss.dbeaver.ui.dialogs.connection.ConnectionPageGeneral;
import org.jkiss.dbeaver.ui.dialogs.connection.NavigatorSettingsStorage;
public class PrefPageGeneralConnections extends AbstractPrefPage implements IWorkbenchPreferencePage, IWorkbenchPropertyPage {
public class PrefPageConnectionsGeneral extends AbstractPrefPage implements IWorkbenchPreferencePage, IWorkbenchPropertyPage, NavigatorSettingsStorage {
public static final String PAGE_ID = "org.jkiss.dbeaver.preferences.main.connections";
public PrefPageGeneralConnections() {
private CSmartCombo<DBPConnectionType> connectionTypeCombo;
private Combo navigatorSettingsCombo;
private DBPConnectionType defaultConnectionType;
private DBNBrowseSettings defaultNavigatorSettings;
public PrefPageConnectionsGeneral() {
super();
setPreferenceStore(new PreferenceStoreDelegate(DBWorkbench.getPlatform().getPreferenceStore()));
defaultNavigatorSettings = DataSourceNavigatorSettings.PRESET_FULL.getSettings();
}
@Override
protected Control createContents(Composite parent) {
Composite composite = UIUtils.createPlaceholder(parent, 1, 5);
Group groupObjects = UIUtils.createControlGroup(composite, CoreMessages.pref_page_eclipse_ui_general_group_general, 1, GridData.VERTICAL_ALIGN_BEGINNING, 0);
Label descLabel = new Label(groupObjects, SWT.WRAP);
descLabel.setText(CoreMessages.pref_page_eclipse_ui_general_connections_group_label);
{
Group groupDefaults = UIUtils.createControlGroup(composite, "Default settings for new connections", 2, GridData.VERTICAL_ALIGN_BEGINNING, 0);
performDefaults();
connectionTypeCombo = ConnectionPageGeneral.createConnectionTypeCombo(groupDefaults);
connectionTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
defaultConnectionType = connectionTypeCombo.getSelectedItem();
}
});
navigatorSettingsCombo = ConnectionPageGeneral.createNavigatorSettingsCombo(groupDefaults, this);
}
{
Group groupObjects = UIUtils.createControlGroup(composite, CoreMessages.pref_page_eclipse_ui_general_group_general, 1, GridData.VERTICAL_ALIGN_BEGINNING, 0);
Label descLabel = new Label(groupObjects, SWT.WRAP);
descLabel.setText(CoreMessages.pref_page_eclipse_ui_general_connections_group_label);
// Link to secure storage config
addLinkToSettings(composite, PrefPageDrivers.PAGE_ID);
addLinkToSettings(composite, PrefPageErrorHandle.PAGE_ID);
addLinkToSettings(composite, PrefPageMetaData.PAGE_ID);
addLinkToSettings(composite, PrefPageTransactions.PAGE_ID);
addLinkToSettings(groupObjects, PrefPageDrivers.PAGE_ID);
addLinkToSettings(groupObjects, PrefPageErrorHandle.PAGE_ID);
addLinkToSettings(groupObjects, PrefPageMetaData.PAGE_ID);
addLinkToSettings(groupObjects, PrefPageTransactions.PAGE_ID);
}
performDefaults();
return composite;
}
......@@ -66,4 +92,39 @@ public class PrefPageGeneralConnections extends AbstractPrefPage implements IWor
"<a>''{0}''</a> " + CoreMessages.pref_page_ui_general_label_settings,
(IWorkbenchPreferenceContainer) getContainer(), null); //$NON-NLS-1$
}
@Override
public DBNBrowseSettings getNavigatorSettings() {
return defaultNavigatorSettings;
}
@Override
public void setNavigatorSettings(DBNBrowseSettings settings) {
this.defaultNavigatorSettings = settings;
}
@Override
protected void performDefaults()
{
defaultConnectionType = DBPConnectionType.getDefaultConnectionType();
connectionTypeCombo.select(defaultConnectionType);
defaultNavigatorSettings = DataSourceNavigatorSettings.getDefaultSettings();
ConnectionPageGeneral.updateNavigatorSettingsPreset(navigatorSettingsCombo, defaultNavigatorSettings);
super.performDefaults();
}
@Override
public boolean performOk() {
if (defaultConnectionType != DBPConnectionType.getDefaultConnectionType()) {
DBPConnectionType.setDefaultConnectionType(defaultConnectionType);
}
if (!defaultNavigatorSettings.equals(DataSourceNavigatorSettings.getDefaultSettings())) {
DataSourceNavigatorSettings.setDefaultSettings(defaultNavigatorSettings);
}
return super.performOk();
}
}
package org.jkiss.dbeaver.model.connection;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.DBPDataSourcePermission;
import org.jkiss.dbeaver.model.DBPDataSourcePermissionOwner;
import org.jkiss.dbeaver.model.messages.ModelMessages;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
......@@ -202,4 +204,20 @@ public class DBPConnectionType implements DBPDataSourcePermissionOwner {
public int hashCode() {
return id.hashCode();
}
private static final String DEFAULT_CONNECTION_TYPE_PREF = "default.connection.type";
public static DBPConnectionType getDefaultConnectionType() {
String defTypeName = ModelPreferences.getPreferences().getString(DEFAULT_CONNECTION_TYPE_PREF);
if (CommonUtils.isEmpty(defTypeName)) {
defTypeName = DEV.getName();
}
return DBWorkbench.getPlatform().getDataSourceProviderRegistry().getConnectionType(defTypeName, DEV);
}
public static void setDefaultConnectionType(DBPConnectionType connectionType) {
ModelPreferences.getPreferences().setValue(DEFAULT_CONNECTION_TYPE_PREF, connectionType.getId());
}
}
......@@ -186,7 +186,7 @@ public class DataSourceDescriptor
this.connectionInfo = connectionInfo;
this.preferenceStore = new DataSourcePreferenceStore(this);
this.virtualModel = new DBVModel(this);
this.navigatorSettings = new DataSourceNavigatorSettings(DataSourceNavigatorSettings.PRESET_FULL.getSettings());
this.navigatorSettings = new DataSourceNavigatorSettings(DataSourceNavigatorSettings.getDefaultSettings());
}
// Copy constructor
......
......@@ -16,7 +16,10 @@
*/
package org.jkiss.dbeaver.registry;
import org.jkiss.dbeaver.ModelPreferences;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.utils.CommonUtils;
import java.util.LinkedHashMap;
import java.util.Map;
......@@ -172,4 +175,64 @@ public class DataSourceNavigatorSettings implements DBNBrowseSettings {
this.hideVirtualModel == source.hideVirtualModel;
}
public static final String DEFAULT_NAVIGATOR_SETTINGS_PRESET = "navigator.settings.default.preset";
private static final String DEFAULT_SHOW_SYSTEM_OBJECTS = "navigator.settings.default.showSystemObjects";
private static final String DEFAULT_SHOW_UTILITY_OBJECTS = "navigator.settings.default.showUtilityObjects";
private static final String DEFAULT_SHOW_ONLY_ENTITIES = "navigator.settings.default.showOnlyEntities";
private static final String DEFAULT_MERGE_ENTITIES = "navigator.settings.default.mergeEntities";
private static final String DEFAULT_HIDE_FOLDERS = "navigator.settings.default.hideFolders";
private static final String DEFAULT_HIDE_SCHEMAS = "navigator.settings.default.hideSchemas";
private static final String DEFAULT_HIDE_VIRTUAL_MODEL = "navigator.settings.default.hideVirtualModel";
public static DBNBrowseSettings getDefaultSettings() {
DBPPreferenceStore preferences = ModelPreferences.getPreferences();
String defPreset = preferences.getString(DEFAULT_NAVIGATOR_SETTINGS_PRESET);
if (!CommonUtils.isEmpty(defPreset)) {
for (DataSourceNavigatorSettings.Preset p : DataSourceNavigatorSettings.PRESETS.values()) {
if (p.getId().equals(defPreset)) {
return p.getSettings();
}
}
}
// Custom settings
DataSourceNavigatorSettings settings = new DataSourceNavigatorSettings();
settings.setShowSystemObjects(preferences.getBoolean(DEFAULT_SHOW_SYSTEM_OBJECTS));
settings.setShowUtilityObjects(preferences.getBoolean(DEFAULT_SHOW_UTILITY_OBJECTS));
settings.setShowOnlyEntities(preferences.getBoolean(DEFAULT_SHOW_ONLY_ENTITIES));
settings.setMergeEntities(preferences.getBoolean(DEFAULT_MERGE_ENTITIES));
settings.setHideFolders(preferences.getBoolean(DEFAULT_HIDE_FOLDERS));
settings.setHideSchemas(preferences.getBoolean(DEFAULT_HIDE_SCHEMAS));
settings.setHideVirtualModel(preferences.getBoolean(DEFAULT_HIDE_VIRTUAL_MODEL));
return settings;
}
public static void setDefaultSettings(DBNBrowseSettings settings) {
// Save preset
DBPPreferenceStore preferences = ModelPreferences.getPreferences();
String presetId = null;
for (DataSourceNavigatorSettings.Preset p : DataSourceNavigatorSettings.PRESETS.values()) {
if (p.getSettings().equals(settings)) {
presetId = p.getId();
break;
}
}
if (CommonUtils.isEmptyTrimmed(presetId)) {
preferences.setValue(DEFAULT_NAVIGATOR_SETTINGS_PRESET, "");
} else {
preferences.setValue(DEFAULT_NAVIGATOR_SETTINGS_PRESET, presetId);
}
// Save custom settings
preferences.setValue(DEFAULT_SHOW_SYSTEM_OBJECTS, settings.isShowSystemObjects());
preferences.setValue(DEFAULT_SHOW_UTILITY_OBJECTS, settings.isShowUtilityObjects());
preferences.setValue(DEFAULT_SHOW_ONLY_ENTITIES, settings.isShowOnlyEntities());
preferences.setValue(DEFAULT_MERGE_ENTITIES, settings.isMergeEntities());
preferences.setValue(DEFAULT_HIDE_FOLDERS, settings.isHideFolders());
preferences.setValue(DEFAULT_HIDE_SCHEMAS, settings.isHideSchemas());
preferences.setValue(DEFAULT_HIDE_VIRTUAL_MODEL, settings.isHideVirtualModel());
}
}
......@@ -78,12 +78,12 @@
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.db.dataformat"/>
<keywordReference id="org.jkiss.dbeaver.core.keyword.dbeaver"/>
</page>
<page category="org.jkiss.dbeaver.preferences.eclipse.main" id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageGeneralConnections" name="%pref.page.name.connections">
<page category="org.jkiss.dbeaver.preferences.eclipse.main" id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionsGeneral" name="%pref.page.name.connections">
<keywordReference id="org.jkiss.dbeaver.core.keyword.connection"/>
<keywordReference id="org.jkiss.dbeaver.core.keyword.database.connection"/>
<keywordReference id="org.jkiss.dbeaver.core.keyword.dbeaver"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main.connections" id="org.jkiss.dbeaver.preferences.client.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnections" name="%pref.page.name.client.connections">
<page category="org.jkiss.dbeaver.preferences.main.connections" id="org.jkiss.dbeaver.preferences.client.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionClient" name="%pref.page.name.client.connections">
<keywordReference id="org.jkiss.dbeaver.core.keyword.connection"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main.connections" id="org.jkiss.dbeaver.preferences.main.transactions" class="org.jkiss.dbeaver.ui.preferences.PrefPageTransactions" name="%pref.page.name.transactions">
......
......@@ -313,12 +313,12 @@
<keywordReference id="org.jkiss.dbeaver.core.keyword.pref.db.dataformat"/>
<keywordReference id="org.jkiss.dbeaver.core.keyword.dbeaver"/>
</page>
<page id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageGeneralConnections" name="%pref.page.name.connections">
<page id="org.jkiss.dbeaver.preferences.main.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionsGeneral" name="%pref.page.name.connections">
<keywordReference id="org.jkiss.dbeaver.core.keyword.connection"/>
<keywordReference id="org.jkiss.dbeaver.core.keyword.database.connection"/>
<keywordReference id="org.jkiss.dbeaver.core.keyword.dbeaver"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main.connections" id="org.jkiss.dbeaver.preferences.client.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnections" name="%pref.page.name.client.connections">
<page category="org.jkiss.dbeaver.preferences.main.connections" id="org.jkiss.dbeaver.preferences.client.connections" class="org.jkiss.dbeaver.ui.preferences.PrefPageConnectionClient" name="%pref.page.name.client.connections">
<keywordReference id="org.jkiss.dbeaver.core.keyword.connection"/>
</page>
<page category="org.jkiss.dbeaver.preferences.main.connections" id="org.jkiss.dbeaver.preferences.main.transactions" class="org.jkiss.dbeaver.ui.preferences.PrefPageTransactions" name="%pref.page.name.transactions">
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册