From 1587aefdb2b8303cbc99f8e94cc974c2ffaed1bf Mon Sep 17 00:00:00 2001 From: jurgen Date: Sun, 13 Sep 2015 20:31:25 +0000 Subject: [PATCH] Driver files download wizard --- .../driver/DriverDownloadAutoPage.java | 40 +--------- .../dialogs/driver/DriverDownloadDialog.java | 1 + .../driver/DriverDownloadManualPage.java | 79 ++++++++----------- .../ui/dialogs/driver/DriverDownloadPage.java | 53 +++++++++++++ 4 files changed, 86 insertions(+), 87 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java index 34ac24b255..bea85492dd 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java @@ -77,45 +77,7 @@ class DriverDownloadAutoPage extends DriverDownloadPage { infoText.setText(message.toString()); infoText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - //UIUtils.createHorizontalLine(composite); - UIUtils.createPlaceholder(composite, 1).setLayoutData(new GridData(GridData.FILL_BOTH)); - - { - Composite linksGroup = UIUtils.createPlaceholder(composite, 2); - ((GridLayout)linksGroup.getLayout()).makeColumnsEqualWidth = true; - linksGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // Vendor site - if (!CommonUtils.isEmpty(driver.getWebURL())) { - Link link = UIUtils.createLink( - linksGroup, - "Vendor's website", - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - RuntimeUtils.openWebBrowser(driver.getWebURL()); - } - }); - link.setToolTipText(driver.getWebURL()); - link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); - } else { - UIUtils.createPlaceholder(linksGroup, 1).setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - } - - Link link = UIUtils.createLink( - linksGroup, - "Download configuration", - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - UIUtils.showPreferencesFor( - DBeaverUI.getActiveWorkbenchShell(), - null, - PrefPageDrivers.PAGE_ID); - } - }); - link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END)); - } + createLinksPanel(composite); setControl(composite); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java index dd8bd7d9ea..2c5b8047f0 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java @@ -92,6 +92,7 @@ public class DriverDownloadDialog extends WizardDialog public static boolean downloadDriverFiles(Shell shell, DriverDescriptor driver, List files) { DriverDownloadDialog dialog = new DriverDownloadDialog(shell, driver, files); + //dialog.setPageSize(1,1); dialog.open(); return dialog.doDownload; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java index adcb728f6f..1cd5c16442 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java @@ -22,17 +22,16 @@ 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.core.DBeaverUI; import org.jkiss.dbeaver.registry.DriverDescriptor; import org.jkiss.dbeaver.registry.DriverFileSource; import org.jkiss.dbeaver.runtime.RuntimeUtils; import org.jkiss.dbeaver.ui.UIUtils; -import org.jkiss.dbeaver.ui.preferences.PrefPageDrivers; import org.jkiss.utils.CommonUtils; class DriverDownloadManualPage extends DriverDownloadPage { private DriverFileSource fileSource; + private Table filesTable; DriverDownloadManualPage() { super("Configure driver files", "Download driver files", null); @@ -42,7 +41,6 @@ class DriverDownloadManualPage extends DriverDownloadPage { @Override public void createControl(Composite parent) { final DriverDescriptor driver = getWizard().getDriver(); - fileSource = driver.getDriverFileSources().get(0); setMessage("Download & configure " + driver.getFullName() + " driver files"); @@ -54,9 +52,6 @@ class DriverDownloadManualPage extends DriverDownloadPage { message.append(" driver files missing.\n\n" + "According to vendor policy this driver isn't publicly available and you have to download it manually from vendor's web site.\n\n" + "After successful driver download you will need to add JAR files in DBeaver libraries list."); - if (!CommonUtils.isEmpty(fileSource.getInstructions())) { - message.append("\n").append(fileSource.getInstructions()); - } Text infoText = new Text(composite, SWT.MULTI | SWT.READ_ONLY | SWT.WRAP); infoText.setText(message.toString()); @@ -68,61 +63,49 @@ class DriverDownloadManualPage extends DriverDownloadPage { gd = new GridData(GridData.FILL_HORIZONTAL); gd.verticalIndent = 10; filesGroup.setLayoutData(gd); - Table filesTable = new Table(filesGroup, SWT.BORDER | SWT.FULL_SELECTION); + + final Combo sourceCombo = new Combo(filesGroup, SWT.DROP_DOWN | SWT.READ_ONLY); + sourceCombo.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + selectFileSource(driver.getDriverFileSources().get(sourceCombo.getSelectionIndex())); + } + }); + for (DriverFileSource source : driver.getDriverFileSources()) { + sourceCombo.add(source.getName()); + } + + filesTable = new Table(filesGroup, SWT.BORDER | SWT.FULL_SELECTION); filesTable.setHeaderVisible(true); filesTable.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); UIUtils.createTableColumn(filesTable, SWT.LEFT, "File"); UIUtils.createTableColumn(filesTable, SWT.LEFT, "Required"); UIUtils.createTableColumn(filesTable, SWT.LEFT, "Description"); + + sourceCombo.select(0); + selectFileSource(driver.getDriverFileSources().get(0)); + UIUtils.packColumns(filesTable, true); + + createLinksPanel(composite); + + setControl(composite); + } + + private void selectFileSource(DriverFileSource source) { + fileSource = source; + filesTable.removeAll(); for (DriverFileSource.FileInfo file : fileSource.getFiles()) { new TableItem(filesTable, SWT.NONE).setText(new String[] { file.getName(), !file.isOptional() ? "Yes" : "No", CommonUtils.notEmpty(file.getDescription()) }); } - UIUtils.packColumns(filesTable, true); - - { - Composite linksGroup = UIUtils.createPlaceholder(composite, 2); - gd = new GridData(GridData.FILL_HORIZONTAL); - gd.verticalIndent = 10; - linksGroup.setLayoutData(gd); - - // Vendor site - if (!CommonUtils.isEmpty(driver.getWebURL())) { - Link link = UIUtils.createLink( - linksGroup, - "Vendor's website", - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - RuntimeUtils.openWebBrowser(driver.getWebURL()); - } - }); - link.setToolTipText(driver.getWebURL()); - link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); - } else { - UIUtils.createPlaceholder(linksGroup, 1).setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - } - - Link link = UIUtils.createLink( - linksGroup, - "Download configuration", - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - UIUtils.showPreferencesFor( - DBeaverUI.getActiveWorkbenchShell(), - null, - PrefPageDrivers.PAGE_ID); - } - }); - link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END)); - } - - setControl(composite); } + @Override + public boolean isPageComplete() { + return fileSource != null; + } @Override void performFinish() { diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java index 03827a57ff..87e71cb19a 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java @@ -19,6 +19,17 @@ package org.jkiss.dbeaver.ui.dialogs.driver; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.WizardPage; +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.Link; +import org.jkiss.dbeaver.core.DBeaverUI; +import org.jkiss.dbeaver.registry.DriverDescriptor; +import org.jkiss.dbeaver.runtime.RuntimeUtils; +import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.preferences.PrefPageDrivers; +import org.jkiss.utils.CommonUtils; abstract class DriverDownloadPage extends WizardPage { @@ -32,4 +43,46 @@ abstract class DriverDownloadPage extends WizardPage { abstract void performFinish(); + protected void createLinksPanel(Composite composite) { + final DriverDescriptor driver = getWizard().getDriver(); + + UIUtils.createPlaceholder(composite, 1).setLayoutData(new GridData(GridData.FILL_BOTH)); + + Composite linksGroup = UIUtils.createPlaceholder(composite, 2); + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.verticalIndent = 10; + linksGroup.setLayoutData(gd); + + // Vendor site + if (!CommonUtils.isEmpty(driver.getWebURL())) { + Link link = UIUtils.createLink( + linksGroup, + "Vendor's website", + new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + RuntimeUtils.openWebBrowser(driver.getWebURL()); + } + }); + link.setToolTipText(driver.getWebURL()); + link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); + } else { + UIUtils.createPlaceholder(linksGroup, 1).setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + } + + Link link = UIUtils.createLink( + linksGroup, + "Download configuration", + new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + UIUtils.showPreferencesFor( + DBeaverUI.getActiveWorkbenchShell(), + null, + PrefPageDrivers.PAGE_ID); + } + }); + link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END)); + } + } \ No newline at end of file -- GitLab