initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / wizards / BookmarkWizard.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/BookmarkWizard.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/wizards/BookmarkWizard.java
new file mode 100644 (file)
index 0000000..da768ff
--- /dev/null
@@ -0,0 +1,297 @@
+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