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); } }