package com.quantum.ui.dialog; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; 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.Control; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import com.quantum.Messages; import com.quantum.QuantumPlugin; import com.quantum.util.JarUtil; /** * @author BC */ public class AddDriverDialog extends Dialog { private FileDialog fileDialog; private Text driverFileName; private Text driverClassName; /** * @param parentShell */ public AddDriverDialog(Shell parentShell) { super(parentShell); } protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText(Messages.getString(getClass(), "title")); } /* (non-Javadoc) * Method declared on Dialog */ protected Control createDialogArea(Composite parent) { parent.setLayout(new GridLayout()); Composite composite = (Composite) super.createDialogArea(parent); GridLayout layout = new GridLayout(); composite.setLayout(layout); layout.numColumns = 3; GridData fullHorizontal = new GridData( GridData.HORIZONTAL_ALIGN_BEGINNING, GridData.VERTICAL_ALIGN_BEGINNING, true, false); 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.HORIZONTAL_ALIGN_FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false); fullHorizontal.widthHint = 150; this.driverFileName.setLayoutData(fullHorizontal); Button button = new Button(composite, SWT.PUSH); button.setText(Messages.getString(getClass(), "browse")); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { AddDriverDialog.this.fileDialog.setFilterPath(QuantumPlugin.getDefault() .getPreferenceStore().getString( "quantum.dialogs.bookmarkwizard.path")); String filename = AddDriverDialog.this.fileDialog.open(); if (filename != null) { AddDriverDialog.this.driverFileName.setText(filename); QuantumPlugin.getDefault().getPreferenceStore().setValue( "quantum.dialogs.bookmarkwizard.path", filename); } } }); 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.HORIZONTAL_ALIGN_FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false); fullHorizontal.widthHint = 150; this.driverClassName.setLayoutData(fullHorizontal); 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) { AddDriverDialog.this.driverClassName.setText( dialog.getSelectedElement()); } } }); return composite; } protected String getDriverFile() { return this.driverFileName.getText(); } }