--- /dev/null
+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 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;
+
+ private Bookmark current;
+
+ 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$
+ }
+ public void init() {
+ System.out.println("Initing workbench"); //$NON-NLS-1$
+ current = null;
+ setWindowTitle(Messages.getString("BookmarkWizard.NewBookmark")); //$NON-NLS-1$
+ }
+ 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();
+ 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;
+ }
+
+ 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$
+
+ 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 (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 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