From 32eb1091160402ac68b9c34ab8b4ded8a65f994b Mon Sep 17 00:00:00 2001 From: jurgen Date: Wed, 16 Sep 2015 10:22:37 +0000 Subject: [PATCH] Driver manager redesign --- .../dbeaver/core/CoreResources.properties | 2 +- .../connection/ConnectionPageDriver.java | 2 + .../ui/dialogs/driver/DriverEditDialog.java | 126 ++++++++++-------- 3 files changed, 75 insertions(+), 55 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties index 892d5528d7..8526d1f586 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/CoreResources.properties @@ -460,7 +460,7 @@ dialog_migrate_wizard_start_description=Select connection(s) you wish to migrate dialog_migrate_wizard_start_title=Select connections to migrate dialog_migrate_wizard_window_title=Migrate connection(s) to another driver dialog_new_connection_wizard_monitor_load_data_sources=Load data sources -dialog_new_connection_wizard_start_description=This wizard creates a new connection. +dialog_new_connection_wizard_start_description=Create new connection. If you don't see your database in the list\nthen you can create new database driver in the driver manager. dialog_new_connection_wizard_start_title=Select new connection type dialog_new_connection_wizard_title=Create new connection dialog_project_create_settings_description=Set project settings. diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageDriver.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageDriver.java index 9940f5b4b4..a295d742ce 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageDriver.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionPageDriver.java @@ -89,6 +89,8 @@ class ConnectionPageDriver extends ActiveWizardPage implements ISelectionChanged this.setMessage(selectedDriver.getDescription()); } else if (selectedObject instanceof DataSourceProviderDescriptor) { this.setMessage(((DataSourceProviderDescriptor) selectedObject).getDescription()); + } else if (selectedObject instanceof DriverTreeViewer.DriverCategory) { + this.setMessage(((DriverTreeViewer.DriverCategory) selectedObject).getName() + " drivers"); } } getWizard().getContainer().updateButtons(); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java index 7b840409cf..7339d0d34c 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverEditDialog.java @@ -42,15 +42,14 @@ import org.jkiss.dbeaver.core.DBeaverUI; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.model.DBPDataSource; import org.jkiss.dbeaver.model.DBPDriverFile; -import org.jkiss.dbeaver.registry.DataSourceProviderDescriptor; -import org.jkiss.dbeaver.registry.DriverDescriptor; -import org.jkiss.dbeaver.registry.DriverFileDescriptor; +import org.jkiss.dbeaver.registry.*; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.runtime.properties.PropertySourceCustom; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.IHelpContextIds; import org.jkiss.dbeaver.ui.UIIcon; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.controls.CImageCombo; import org.jkiss.dbeaver.ui.controls.ClientHomesPanel; import org.jkiss.dbeaver.ui.controls.ConnectionPropertiesControl; import org.jkiss.dbeaver.ui.controls.ListContentProvider; @@ -141,7 +140,8 @@ public class DriverEditDialog extends HelpEnabledDialog @Override protected Control createDialogArea(Composite parent) { - if (driver == null) { + boolean newDriver = driver == null; + if (newDriver) { getShell().setText(CoreMessages.dialog_edit_driver_title_create_driver); driver = provider.createDriver(); } else { @@ -158,16 +158,11 @@ public class DriverEditDialog extends HelpEnabledDialog group.setLayoutData(gd); { - Composite propsGroup = new Composite(group, SWT.NONE); - propsGroup.setLayout(new GridLayout(2, false)); + Group propsGroup = UIUtils.createControlGroup(group, "Settings", 4, -1, -1); propsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - UIUtils.createControlLabel(propsGroup, CoreMessages.dialog_edit_driver_label_driver_name); - final Composite namePlaceholder = UIUtils.createPlaceholder(propsGroup, 3, 5); - namePlaceholder.setLayoutData(new GridData(GridData.FILL_BOTH)); - - driverNameText = new Text(namePlaceholder, SWT.BORDER | advStyle); - driverNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + gd = new GridData(GridData.FILL_HORIZONTAL); + driverNameText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_driver_name + "*", driver.getName(), SWT.BORDER | advStyle, gd); driverNameText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) @@ -176,10 +171,31 @@ public class DriverEditDialog extends HelpEnabledDialog } }); - driverCategoryCombo = UIUtils.createLabelCombo(namePlaceholder, CoreMessages.dialog_edit_driver_label_category, SWT.BORDER | SWT.DROP_DOWN | advStyle); - driverDescText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_description, CommonUtils.notEmpty(driver.getDescription()), SWT.BORDER | advStyle); + UIUtils.createControlLabel(propsGroup, "Driver Type"); + final CImageCombo providerCombo = new CImageCombo(propsGroup, SWT.BORDER | SWT.READ_ONLY | SWT.DROP_DOWN); + providerCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + if (newDriver) { + for (DataSourceProviderDescriptor p : DataSourceProviderRegistry.getInstance().getDataSourceProviders()) { + if (p.isDriversManagable()) { + providerCombo.add(DBeaverIcons.getImage(p.getIcon()), p.getName(), null, p); + } + } + providerCombo.select(provider); + providerCombo.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + provider = (DataSourceProviderDescriptor) providerCombo.getItem(providerCombo.getSelectionIndex()).getData(); + driver = provider.createDriver(); + } + }); + } else { + providerCombo.add(DBeaverIcons.getImage(provider.getIcon()), provider.getName(), null, provider); + providerCombo.select(provider); + } - driverClassText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_class_name, CommonUtils.notEmpty(driver.getDriverClassName()), SWT.BORDER | advStyle); + gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 3; + driverClassText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_class_name + "*", CommonUtils.notEmpty(driver.getDriverClassName()), SWT.BORDER | advStyle, gd); driverClassText.addModifyListener(new ModifyListener() { @Override @@ -189,7 +205,7 @@ public class DriverEditDialog extends HelpEnabledDialog } }); - driverURLText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_sample_url, CommonUtils.notEmpty(driver.getSampleURL()), SWT.BORDER | advStyle); + driverURLText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_sample_url, CommonUtils.notEmpty(driver.getSampleURL()), SWT.BORDER | advStyle, gd); driverURLText.addModifyListener(new ModifyListener() { @Override @@ -199,13 +215,8 @@ public class DriverEditDialog extends HelpEnabledDialog } }); - boolean hasSite = !CommonUtils.isEmpty(driver.getWebURL()); - - UIUtils.createControlLabel(propsGroup, CoreMessages.dialog_edit_driver_label_default_port); - Composite ph = hasSite ? UIUtils.createPlaceholder(propsGroup, 3) : propsGroup; - ph.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - driverPortText = new Text(ph, SWT.BORDER | advStyle); - driverPortText.setText(driver.getDefaultPort() == null ? "" : driver.getDefaultPort()); //$NON-NLS-1$ + gd = new GridData(GridData.FILL_HORIZONTAL); + driverPortText = UIUtils.createLabelText(propsGroup, CoreMessages.dialog_edit_driver_label_default_port, driver.getDefaultPort() == null ? "" : driver.getDefaultPort(), SWT.BORDER | advStyle, gd); driverPortText.setLayoutData(new GridData(SWT.NONE)); driverPortText.addModifyListener(new ModifyListener() { @@ -215,23 +226,51 @@ public class DriverEditDialog extends HelpEnabledDialog onChangeProperty(); } }); - if (hasSite) { - GridLayout gl = (GridLayout)ph.getLayout(); - gl.horizontalSpacing = 5; - UIUtils.createControlLabel(ph, CoreMessages.dialog_edit_driver_label_website); - Link urlLabel = UIUtils.createLink(ph, "" + driver.getWebURL() + "", new SelectionAdapter() { + gd = new GridData(GridData.FILL_HORIZONTAL); + embeddedDriverCheck = UIUtils.createLabelCheckbox(propsGroup, "Embedded", "Embedded driver", driver.isEmbedded()); + embeddedDriverCheck.setLayoutData(gd); + } + + { + Group infoGroup = UIUtils.createControlGroup(group, "Description", 2, -1, -1); + infoGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + driverCategoryCombo = UIUtils.createLabelCombo(infoGroup, CoreMessages.dialog_edit_driver_label_category, SWT.BORDER | SWT.DROP_DOWN | advStyle); + driverCategoryCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); + + if (isReadOnly) { + driverCategoryCombo.setEnabled(false); + } + Set categories = new TreeSet(); + for (DataSourceProviderDescriptor p : DataSourceProviderRegistry.getInstance().getDataSourceProviders()) { + for (DriverDescriptor drv : p.getEnabledDrivers()) { + if (!CommonUtils.isEmpty(drv.getCategory())) { + categories.add(drv.getCategory()); + } + } + } + for (String category : categories) { + driverCategoryCombo.add(category); + } + if (!CommonUtils.isEmpty(driver.getCategory())) { + driverCategoryCombo.setText(driver.getCategory()); + } else if (!CommonUtils.isEmpty(defaultCategory)) { + driverCategoryCombo.setText(defaultCategory); + } + + driverDescText = UIUtils.createLabelText(infoGroup, CoreMessages.dialog_edit_driver_label_description, CommonUtils.notEmpty(driver.getDescription()), SWT.BORDER | advStyle); + + if (!CommonUtils.isEmpty(driver.getWebURL())) { + UIUtils.createControlLabel(infoGroup, CoreMessages.dialog_edit_driver_label_website); + Link urlLabel = UIUtils.createLink(infoGroup, "" + driver.getWebURL() + "", new SelectionAdapter() { @Override - public void widgetSelected(SelectionEvent e) - { + public void widgetSelected(SelectionEvent e) { RuntimeUtils.launchProgram(driver.getWebURL()); } }); urlLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - } - - embeddedDriverCheck = UIUtils.createLabelCheckbox(propsGroup, "Embedded", "Embedded driver", driver.isEmbedded()); } { @@ -625,27 +664,6 @@ public class DriverEditDialog extends HelpEnabledDialog (driver.getOrigDefaultPort() == null ? "" : driver.getOrigDefaultPort()) : //$NON-NLS-1$ (driver.getDefaultPort() == null ? "" : driver.getDefaultPort())); //$NON-NLS-1$ - { - driverCategoryCombo.removeAll(); - if (isReadOnly) { - driverCategoryCombo.setEnabled(false); - } - Set categories = new HashSet(); - for (DriverDescriptor drv : driver.getProviderDescriptor().getEnabledDrivers()) { - if (!CommonUtils.isEmpty(drv.getCategory())) { - categories.add(drv.getCategory()); - } - } - for (String category : categories) { - driverCategoryCombo.add(category); - } - if (!CommonUtils.isEmpty(driver.getCategory())) { - driverCategoryCombo.setText(driver.getCategory()); - } else if (!CommonUtils.isEmpty(defaultCategory)) { - driverCategoryCombo.setText(defaultCategory); - } - } - embeddedDriverCheck.setSelection(driver.isEmbedded()); // anonymousCheck.setSelection(driver.isAnonymousAccess()); -- GitLab