package com.quantum.wizards;
-import com.quantum.Messages;
-import com.quantum.QuantumPlugin;
-import com.quantum.adapters.AdapterFactory;
-import com.quantum.adapters.DriverInfo;
-import com.quantum.model.Bookmark;
-import com.quantum.model.BookmarkCollection;
-import com.quantum.view.bookmark.BookmarkNode;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-public class BookmarkWizard extends Wizard {
- BookmarkPage mainPage;
+import com.quantum.Messages;
+import com.quantum.model.Bookmark;
+import com.quantum.model.BookmarkCollection;
+import com.quantum.model.JDBCDriver;
+import com.quantum.model.Schema;
- private Bookmark current;
+public class BookmarkWizard extends Wizard implements PropertyChangeListener {
+ private JDBCDriverSelectionWizardPage page1;
+ private BookmarkConnectionWizardPage page2;
+ private BookmarkNameWizardPage page3;
+ private SchemaSelectionWizardPage page4;
- public void init(BookmarkNode selection) {
- System.out.println("Initing workbench"); //$NON-NLS-1$
- this.current = selection.getBookmark();
- setWindowTitle(Messages.getString("BookmarkWizard.NewBookmark")); //$NON-NLS-1$
- }
+ private Bookmark bookmark;
+
public void init() {
- System.out.println("Initing workbench"); //$NON-NLS-1$
- current = null;
setWindowTitle(Messages.getString("BookmarkWizard.NewBookmark")); //$NON-NLS-1$
+ this.bookmark = new Bookmark();
}
public boolean performFinish() {
- System.out.println("perform finish workbench"); //$NON-NLS-1$
- String bookmarkName = mainPage.name.getText();
- if ( BookmarkCollection.getInstance().find(bookmarkName) != null){
- MessageDialog.openInformation(
- this.getShell(),Messages.getString("BookmarkWizard.Error"),Messages.getString("BookmarkWizard.bookmarkAlreadyExists")); //$NON-NLS-1$ //$NON-NLS-2$
- return false;
- }
-
- mainPage.performFinish();
+ BookmarkCollection.getInstance().addBookmark(this.bookmark);
+
return true;
}
public void addPages() {
- System.out.println("adding pages"); //$NON-NLS-1$
- if (current != null) {
- mainPage = new BookmarkPage(Messages.getString("BookmarkWizard.Testing"), current); //$NON-NLS-1$
- } else {
- mainPage = new BookmarkPage(Messages.getString("BookmarkWizard.Testing")); //$NON-NLS-1$
- }
- addPage(mainPage);
- System.out.println("adding pages"); //$NON-NLS-1$
- }
-}
-
-class BookmarkPage extends WizardPage {
- public static final String ADD = "ADD"; //$NON-NLS-1$
- String action = ADD;
- Text name;
- Text username;
- Text password;
- Text schema;
- Text connect;
- Text driver;
- //List driverList;
- Combo type;
- Text driverFile;
- Button prompt;
-
- Bookmark initialData = null;
-
- FileDialog dialog;
-
- DriverInfo[] drivers = AdapterFactory.getInstance().getDriverList();
- /**
- * Constructor for BookmarkPage.
- * @param pageName
- */
- public BookmarkPage(String pageName) {
- super(pageName);
- initialData = null;
- }
- /**
- * Constructor for BookmarkPage.
- * @param pageName
- */
- public BookmarkPage(String pageName, Bookmark bookmark) {
- super(pageName);
- this.initialData = bookmark;
+ this.page1 = new JDBCDriverSelectionWizardPage("page1"); //$NON-NLS-1$
+ this.page1.addPropertyChangeListener(this);
+ addPage(this.page1);
+ this.page2 = new BookmarkConnectionWizardPage("page2"); //$NON-NLS-1$
+ this.page2.addPropertyChangeListener(this);
+ addPage(this.page2);
+ this.page3 = new BookmarkNameWizardPage("page3"); //$NON-NLS-1$
+ this.page3.addPropertyChangeListener(this);
+ addPage(this.page3);
+ this.page4 = new SchemaSelectionWizardPage("page4", this.bookmark); //$NON-NLS-1$
+ this.page4.addPropertyChangeListener(this);
+ addPage(this.page4);
}
-
- public void createControl(Composite parent) {
- System.out.println("page create control"); //$NON-NLS-1$
- dialog = new FileDialog(getContainer().getShell(), SWT.OPEN);
- dialog.setFilterExtensions(new String[]{"*.jar", "*.zip","*.*"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- dialog.setFilterNames(new String[]{Messages.getString("BookmarkWizard.JarFiles"),Messages.getString("BookmarkWizard.ZipFiles"), Messages.getString("BookmarkWizard.AllFiles")}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- Composite container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- layout.numColumns = 2;
- layout.verticalSpacing = 9;
-
-
- Label label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.BookmarkNameAst")); //$NON-NLS-1$
- name = new Text(container, SWT.BORDER | SWT.SINGLE);
- GridData fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- name.setLayoutData(fullHorizontal);
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.UsernameAst")); //$NON-NLS-1$
- username = new Text(container, SWT.BORDER | SWT.SINGLE);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- username.setLayoutData(fullHorizontal);
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.PasswordAst")); //$NON-NLS-1$
- password = new Text(container, SWT.BORDER | SWT.SINGLE);
- password.setEchoChar('*');
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- password.setLayoutData(fullHorizontal);
-
- this.prompt = new Button(container, SWT.CHECK);
- this.prompt.setText(Messages.getString("BookmarkWizard.Prompt")); //$NON-NLS-1$
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- fullHorizontal.horizontalSpan = 2;
- this.prompt.setLayoutData(fullHorizontal);
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.Schema")); //$NON-NLS-1$
- schema = new Text(container, SWT.BORDER | SWT.SINGLE);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- schema.setLayoutData(fullHorizontal);
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.ConnectAst")); //$NON-NLS-1$
- connect = new Text(container, SWT.BORDER | SWT.SINGLE);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- connect.setLayoutData(fullHorizontal);
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.DriverAst")); //$NON-NLS-1$
- driver = new Text(container, SWT.BORDER | SWT.SINGLE);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- driver.setLayoutData(fullHorizontal);
-
- //label = new Label(container, SWT.NULL);
- //fullHorizontal = new GridData();
- //fullHorizontal.verticalAlignment = GridData.VERTICAL_ALIGN_BEGINNING;
- //fullHorizontal.verticalSpan = 3;
- //label.setLayoutData(fullHorizontal);
- //label.setText("(Drivers Found in File)");
- /*driverList = new List(container, SWT.SINGLE);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- fullHorizontal.verticalAlignment = GridData.FILL;
- fullHorizontal.verticalSpan = 3;
- driverList.setLayoutData(fullHorizontal);
- driverList.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- public void widgetSelected(SelectionEvent e) {
- String[] selection = driverList.getSelection();
- if (selection != null && selection.length > 0) {
- driver.setText(selection[0]);
- }
- }
- });*/
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.TypeAst")); //$NON-NLS-1$
- type = new Combo(container, SWT.SIMPLE | SWT.DROP_DOWN | SWT.READ_ONLY);
- String driverNames[] = new String[drivers.length];
- for (int i = 0; i < drivers.length; i++) {
- driverNames[i] = drivers[i].getDisplayName();
- }
- type.setItems(driverNames);
- type.select(0);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- type.setLayoutData(fullHorizontal);
-
- label = new Label(container, SWT.NULL);
- label.setText(Messages.getString("BookmarkWizard.DriverFilenameAst")); //$NON-NLS-1$
- driverFile = new Text(container, SWT.BORDER | SWT.SINGLE);
- fullHorizontal = new GridData();
- fullHorizontal.horizontalAlignment = GridData.FILL;
- driverFile.setLayoutData(fullHorizontal);
-
- Button button = new Button(container, SWT.PUSH);
- button.setText(Messages.getString("BookmarkWizard.Browse")); //$NON-NLS-1$
+ public void propertyChange(PropertyChangeEvent event) {
- button.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- public void widgetSelected(SelectionEvent e) {
- // We retrieve the last saved path
- dialog.setFilterPath(QuantumPlugin.getDefault().getPreferenceStore().getString("quantum.dialogs.bookmarkwizard.path")); //$NON-NLS-1$
- String filename = dialog.open();
- if (filename != null) {
- driverFile.setText(filename);
- // We save the used path
- QuantumPlugin.getDefault().getPreferenceStore().setValue("quantum.dialogs.bookmarkwizard.path", filename); //$NON-NLS-1$
+ if ("driver".equals(event.getPropertyName())) {
+ JDBCDriver driver = (JDBCDriver) event.getNewValue();
+ this.bookmark.setJDBCDriver(driver);
+ this.page2.setDriver(driver);
+ } else if ("name".equals(event.getPropertyName())) {
+ this.bookmark.setName((String) event.getNewValue());
+ } else if ("userid".equals(event.getPropertyName())) {
+ this.bookmark.setUsername((String) event.getNewValue());
+ } else if ("password".equals(event.getPropertyName())) {
+ this.bookmark.setPassword((String) event.getNewValue());
+ } else if ("connectionURL".equals(event.getPropertyName())) {
+ this.bookmark.setConnect((String) event.getNewValue());
+ } else if ("prompt".equals(event.getPropertyName())) {
+ this.bookmark.setPromptForPassword(Boolean.TRUE.equals(event.getNewValue()));
+ } else if ("schemaRule".equals(event.getPropertyName())) {
+ this.bookmark.setSchemaRule(((Integer) event.getNewValue()).intValue());
+ } else if ("schemas".equals(event.getPropertyName())) {
+ this.bookmark.setSchemaSelections((Schema[]) event.getNewValue());
+ }
- }
- }
- });
-
-// if (initialData != null) {
-// name.setText(initialData.getName());
-// username.setText(initialData.getUsername());
-// if (initialData.getPromptForPassword()) {
-// this.password.setEditable(false);
-// } else {
-// password.setText(initialData.getPassword());
-// }
-// connect.setText(initialData.getConnect());
-// driver.setText(initialData.getDriver());
-// String typeData = initialData.getType();
-// this.prompt.setSelection(initialData.getPromptForPassword());
-// int selectedIndex = 0;
-// for (int i = 0; i < drivers.length; i++) {
-// if (typeData.equals(drivers[i].getDriverType())) {
-// selectedIndex = i;
-// }
-// }
-// type.select(selectedIndex);
-// driverFile.setText(initialData.getDriverFile());
-// updateDriverList();
-// }
-
- prompt.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- BookmarkPage.this.password.setEditable(!prompt.getSelection());
- }
- });
-
- setControl(container);
-
- setPageComplete(true);
}
- public void updateDriverList() {
- /*try {
- JarFile file = new JarFile(driverFile.getText());
- Enumeration enum = file.entries();
- while (enum.hasMoreElements()) {
- JarEntry entry = (JarEntry) enum.nextElement();
- String className = entry.getName().replace('/', '.');
- if (className.endsWith("Driver.class")) {
- className = className.substring(0, className.lastIndexOf('.'));
- //driverList.add(className);
- }
- }
- } catch (IOException ex) {
- //driverList.removeAll();
- }*/
+ public void dispose() {
+ this.page1.removePropertyChangeListener(this);
+ this.page2.removePropertyChangeListener(this);
+ this.page3.removePropertyChangeListener(this);
+ this.page4.removePropertyChangeListener(this);
+ super.dispose();
}
- public void performFinish() {
- if (initialData == null) {
- initialData = new Bookmark();
- }
- initialData.setName(name.getText());
- initialData.setUsername(username.getText());
- initialData.setPromptForPassword(this.prompt.getSelection());
- if (initialData.getPromptForPassword()) {
- initialData.setPassword(""); //$NON-NLS-1$
- } else {
- initialData.setPassword(password.getText());
- }
- initialData.addSchema(schema.getText());
- initialData.setConnect(connect.getText());
- initialData.setDriver(driver.getText());
- int selection = type.getSelectionIndex();
- if (selection >= 0) {
- initialData.setType(drivers[selection].getDriverType());
- }
- initialData.setDriverFile(driverFile.getText());
- BookmarkCollection.getInstance().addBookmark(initialData);
- }
-}
\ No newline at end of file
+}
+