X-Git-Url: http://secure.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 new file mode 100644 index 0000000..93dd10b --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/AddDriverWizard.java @@ -0,0 +1,275 @@ +package com.quantum.wizards; + +import com.quantum.Messages; +import com.quantum.QuantumPlugin; +import com.quantum.adapters.AdapterFactory; +import com.quantum.adapters.DatabaseAdapter; +import com.quantum.model.BookmarkCollection; +import com.quantum.model.JDBCDriver; +import com.quantum.ui.dialog.SimpleSelectionDialog; +import com.quantum.util.JarUtil; +import com.quantum.view.widget.ComboViewer; + +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.ILabelProviderListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +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.Text; + +/** + * @author BC Holmes + */ +public class AddDriverWizard extends Wizard { + + public class PageImpl extends WizardPage { + + private FileDialog fileDialog; + + private Text driverFileName; + private Text driverClassName; + private ComboViewer type; + private DatabaseAdapter[] adapters = AdapterFactory.getInstance().getDriverList(); + + public PageImpl() { + super(""); + } + public void createControl(Composite parent) { + setPageComplete(false); + + 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); + + + this.fileDialog = new FileDialog(composite.getShell(), SWT.OPEN); + this.fileDialog.setFilterExtensions(new String[] { "*.jar", "*.zip", "*.*" }); + this.fileDialog.setFilterNames(new String[] { + Messages.getString("BookmarkWizard.JarFiles"), + Messages.getString("BookmarkWizard.ZipFiles"), + 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); + + this.driverFileName.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent event) { + updateButtons(); + } + + }); + + Button button = new Button(composite, SWT.PUSH); + button.setText(Messages.getString(getClass(), "browse")); + + button.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); + QuantumPlugin.getDefault().getPreferenceStore().setValue( + "quantum.dialogs.bookmarkwizard.path", filename); + AddDriverWizard.this.setDriverFileName(filename); + updateButtons(); + } + } + }); + + label = new Label(composite, SWT.NULL); + label.setText(Messages.getString(getClass(), "driverClassName")); + this.driverClassName = new Text(composite, SWT.BORDER | SWT.SINGLE); + fullHorizontal = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + this.driverClassName.setLayoutData(fullHorizontal); + + this.driverClassName.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent event) { + AddDriverWizard.this.setDriverClassName(((Text) event.getSource()).getText()); + updateButtons(); + } + + }); + button = new Button(composite, SWT.PUSH); + button.setText(Messages.getString(getClass(), "browse")); + + button.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent event) { + SimpleSelectionDialog dialog = new SimpleSelectionDialog( + getShell(), "Select a Driver", JarUtil.getAllDriverNames( + getDriverFile()), QuantumPlugin.getImage("class.gif")); + if (dialog.open() == SimpleSelectionDialog.OK) { + IStructuredSelection selection = dialog.getSelection(); + if (!selection.isEmpty()) { + String className = (String) selection.getFirstElement(); + PageImpl.this.driverClassName.setText( + className); + AddDriverWizard.this.setDriverClassName(className); + updateButtons(); + } + + + } + } + }); + 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.setLabelProvider(new ILabelProvider() { + public Image getImage(Object element) { + return null; + } + public String getText(Object element) { + if (element != null && element instanceof DatabaseAdapter) { + return ((DatabaseAdapter) element).getDisplayName(); + } else { + return ""; + } + } + public void addListener(ILabelProviderListener listener) { + } + public void dispose() { + } + public boolean isLabelProperty(Object element, String property) { + return false; + } + public void removeListener(ILabelProviderListener listener) { + } + }); + + type.setInput(this); + fullHorizontal = new GridData(); + fullHorizontal.horizontalAlignment = GridData.FILL; + type.getControl().setLayoutData(fullHorizontal); + + type.setSelection(new StructuredSelection( + AdapterFactory.getInstance().getAdapter(AdapterFactory.GENERIC))); + + setControl(composite); + } + protected void updateButtons() { + Class driver = JarUtil.loadDriverClass(getDriverFile(), getDriverClassName()); + setPageComplete(driver != null); + + String adapterType = AdapterFactory.getInstance().getAdapterType(getDriverClassName()); + if (adapterType != null) { + this.type.setSelection(new StructuredSelection( + 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(); + return (driverInfo == null) ? null : driverInfo.getType(); + } + } + private PageImpl page; + + private String driverClassName; + private String driverFileName; + private String driverType; + + + public void addPages() { + this.page = new PageImpl(); + addPage(page); + } + + public AddDriverWizard() { + super(); + setWindowTitle(Messages.getString(getClass(), "windowTitle")); + } + + public boolean performFinish() { + JDBCDriver driver = new JDBCDriver( + getDriverClassName(), + getDriverFileName(), + this.page.getDriverType()); + BookmarkCollection.getInstance().addDriver(driver); + return true; + } + + + /** + * @return Returns the driverClassName. + */ + public String getDriverClassName() { + return this.driverClassName; + } + /** + * @param driverClassName The driverClassName to set. + */ + public void setDriverClassName(String driverClassName) { + this.driverClassName = driverClassName; + } + /** + * @return Returns the driverType. + */ + public String getDriverType() { + return this.driverType; + } + /** + * @param driverType The driverType to set. + */ + 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; + } +} \ No newline at end of file