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 892d5528d7af140f13b1a2d225eb55c04b6a3d6f..8526d1f58648a9880aa2a17956853e28a44c2d67 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 9940f5b4b423b76a4f64f84a7485f48f66f330a3..a295d742cedacfbab3e4315185d99f4fcaac1405 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 7b840409cf2197de7b2f3674aff2896902b5288c..7339d0d34c8f9d458babc50328c476ae0a6543c2 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());