X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/AddDriverWizard.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/AddDriverWizard.java index e3cb426..6525e05 100644 --- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/AddDriverWizard.java +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/AddDriverWizard.java @@ -1,5 +1,10 @@ package com.quantum.wizards; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + import com.quantum.ImageStore; import com.quantum.Messages; import com.quantum.QuantumPlugin; @@ -13,9 +18,13 @@ import com.quantum.view.widget.ComboViewer; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardPage; @@ -31,20 +40,45 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.Text; /** * @author BC Holmes + * @author Sirkware */ public class AddDriverWizard extends Wizard { + public class LabelProviderImpl extends LabelProvider { + + public Image getImage(Object element) { + return ImageStore.getImage(ImageStore.EXTERNAL_JAR); + } + } + + public class ContentProviderImpl implements IStructuredContentProvider { + public Object[] getElements(Object inputElement) { + if (inputElement instanceof List) { + return ((List) inputElement).toArray(); + } else if (inputElement instanceof Object[]){ + return (Object[]) inputElement; + } else { + return null; + } + } + public void dispose() { + } + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + } + public class PageImpl extends WizardPage { private FileDialog fileDialog; - private Text driverFileName; private Text driverClassName; private ComboViewer type; + private TableViewer driverFiles; private DatabaseAdapter[] adapters = AdapterFactory.getInstance().getDriverList(); public PageImpl() { @@ -56,16 +90,12 @@ public class AddDriverWizard extends Wizard { setTitle(Messages.getString(getClass(), "title")); setDescription(Messages.getString(getClass(), "description")); - parent.setLayout(new GridLayout()); Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); composite.setLayout(layout); layout.numColumns = 3; - GridData fullHorizontal = new GridData( - GridData.FILL_HORIZONTAL | - GridData.VERTICAL_ALIGN_BEGINNING); - composite.setLayoutData(fullHorizontal); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); this.fileDialog = new FileDialog(composite.getShell(), SWT.OPEN); @@ -76,41 +106,76 @@ public class AddDriverWizard extends Wizard { Messages.getString("BookmarkWizard.AllFiles") }); Label label = new Label(composite, SWT.NULL); - label.setText(Messages.getString(getClass(), "fileName")); - this.driverFileName = new Text(composite, SWT.BORDER | SWT.SINGLE); - fullHorizontal = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); - this.driverFileName.setLayoutData(fullHorizontal); + label.setText(Messages.getString(AddDriverWizard.class, "jars")); + GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + gridData.horizontalSpan = 3; + label.setLayoutData(gridData); - this.driverFileName.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent event) { - updateButtons(); - } - - }); - - Button button = new Button(composite, SWT.PUSH); - button.setText(Messages.getString(getClass(), "browse")); + Table table = new Table(composite, SWT.BORDER); + gridData = new GridData(GridData.FILL_BOTH); + gridData.horizontalSpan = 2; + table.setLayoutData(gridData); + this.driverFiles = new TableViewer(table); + this.driverFiles.setLabelProvider(new LabelProviderImpl()); + this.driverFiles.setContentProvider(new ContentProviderImpl()); + this.driverFiles.setInput(AddDriverWizard.this.driverFileNames); + + Composite buttonArea = new Composite(composite, SWT.NONE); + GridLayout gridLayout = new GridLayout(); + gridLayout.marginWidth = 0; + buttonArea.setLayout(gridLayout); + buttonArea.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + + Button addExternalJar = new Button(buttonArea, SWT.PUSH); + addExternalJar.setText(Messages.getString(AddDriverWizard.class, "addExternalJar")); + addExternalJar.setLayoutData( + new GridData(GridData.FILL_HORIZONTAL + | GridData.VERTICAL_ALIGN_BEGINNING)); - button.addSelectionListener(new SelectionAdapter() { + addExternalJar.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { PageImpl.this.fileDialog.setFilterPath(QuantumPlugin.getDefault() .getPreferenceStore().getString( "quantum.dialogs.bookmarkwizard.path")); String filename = PageImpl.this.fileDialog.open(); if (filename != null) { - PageImpl.this.driverFileName.setText(filename); + driverFileNames.add(filename); + PageImpl.this.driverFiles.refresh(); QuantumPlugin.getDefault().getPreferenceStore().setValue( "quantum.dialogs.bookmarkwizard.path", filename); - AddDriverWizard.this.setDriverFileName(filename); updateButtons(); } } }); - + + final Button removeJar = new Button(buttonArea, SWT.PUSH); + removeJar.setText(Messages.getString(AddDriverWizard.class, "removeJar")); + removeJar.setLayoutData( + new GridData(GridData.HORIZONTAL_ALIGN_FILL + | GridData.VERTICAL_ALIGN_BEGINNING)); + removeJar.setEnabled(false); + + this.driverFiles.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + removeJar.setEnabled(!event.getSelection().isEmpty()); + } + }); + + removeJar.addSelectionListener(new SelectionAdapter(){ + public void widgetSelected(SelectionEvent event) { + IStructuredSelection selection = + (IStructuredSelection) PageImpl.this.driverFiles.getSelection(); + for (Iterator i = selection.iterator(); i.hasNext();) { + driverFileNames.remove(i.next()); + } + PageImpl.this.driverFiles.refresh(); + } + }); + label = new Label(composite, SWT.NULL); - label.setText(Messages.getString(getClass(), "driverClassName")); + label.setText(Messages.getString(AddDriverWizard.class, "driverClassName")); this.driverClassName = new Text(composite, SWT.BORDER | SWT.SINGLE); - fullHorizontal = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + GridData fullHorizontal = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); this.driverClassName.setLayoutData(fullHorizontal); this.driverClassName.addModifyListener(new ModifyListener() { @@ -118,16 +183,18 @@ public class AddDriverWizard extends Wizard { AddDriverWizard.this.setDriverClassName(((Text) event.getSource()).getText()); updateButtons(); } - }); - button = new Button(composite, SWT.PUSH); - button.setText(Messages.getString(getClass(), "browse")); + + + Button browse = new Button(composite, SWT.PUSH); + browse.setText(Messages.getString(AddDriverWizard.class, "browse")); + browse.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - button.addSelectionListener(new SelectionAdapter() { + browse.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { SimpleSelectionDialog dialog = new SimpleSelectionDialog( getShell(), "Select a Driver", JarUtil.getAllDriverNames( - getDriverFile()), ImageStore.getImage(ImageStore.CLASS)); + getDriverFileNames()), ImageStore.getImage(ImageStore.CLASS)); if (dialog.open() == SimpleSelectionDialog.OK) { IStructuredSelection selection = dialog.getSelection(); if (!selection.isEmpty()) { @@ -137,23 +204,13 @@ public class AddDriverWizard extends Wizard { AddDriverWizard.this.setDriverClassName(className); updateButtons(); } - - } } }); - label = new Label(composite, SWT.NULL); + label = new Label(composite, SWT.NULL); label.setText(Messages.getString("BookmarkWizard.TypeAst")); //$NON-NLS-1$ this.type = new ComboViewer(composite); - this.type.setContentProvider(new IStructuredContentProvider() { - public void dispose() { - } - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - public Object[] getElements(Object inputElement) { - return PageImpl.this.adapters; - } - }); + this.type.setContentProvider(new ContentProviderImpl()); this.type.setLabelProvider(new ILabelProvider() { public Image getImage(Object element) { @@ -177,7 +234,7 @@ public class AddDriverWizard extends Wizard { } }); - type.setInput(this); + type.setInput(this.adapters); fullHorizontal = new GridData(); fullHorizontal.horizontalAlignment = GridData.FILL; type.getControl().setLayoutData(fullHorizontal); @@ -188,7 +245,9 @@ public class AddDriverWizard extends Wizard { setControl(composite); } protected void updateButtons() { - Class driver = JarUtil.loadDriverClass(getDriverFile(), getDriverClassName()); + Class driver = JarUtil.loadDriverClass( + getDriverFileNames(), + getDriverClassName()); setPageComplete(driver != null); String adapterType = AdapterFactory.getInstance().getAdapterType(getDriverClassName()); @@ -197,13 +256,6 @@ public class AddDriverWizard extends Wizard { AdapterFactory.getInstance().getAdapter(adapterType))); } } - protected String getDriverClassName() { - return this.driverClassName == null ? null : this.driverClassName.getText(); - } - protected String getDriverFile() { - return this.driverFileName == null ? null : this.driverFileName.getText(); - } - protected String getDriverType() { DatabaseAdapter driverInfo = (DatabaseAdapter) ((IStructuredSelection) this.type.getSelection()).getFirstElement(); @@ -213,8 +265,8 @@ public class AddDriverWizard extends Wizard { private PageImpl page; private String driverClassName; - private String driverFileName; private String driverType; + private List driverFileNames = Collections.synchronizedList(new ArrayList()); public void addPages() { @@ -230,7 +282,7 @@ public class AddDriverWizard extends Wizard { public boolean performFinish() { JDBCDriver driver = new JDBCDriver( getDriverClassName(), - getDriverFileName(), + getDriverFileNames(), this.page.getDriverType()); BookmarkCollection.getInstance().addDriver(driver); return true; @@ -261,16 +313,8 @@ public class AddDriverWizard extends Wizard { public void setDriverType(String driverType) { this.driverType = driverType; } - /** - * @return Returns the driverFileName. - */ - public String getDriverFileName() { - return this.driverFileName; - } - /** - * @param driverFileName The driverFileName to set. - */ - public void setDriverFileName(String driverFileName) { - this.driverFileName = driverFileName; + + public String[] getDriverFileNames() { + return (String[]) this.driverFileNames.toArray(new String[this.driverFileNames.size()]); } } \ No newline at end of file