package com.quantum.wizards; 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; 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.model.JDBCDriver; public class BookmarkWizard extends Wizard { BookmarkPage mainPage; public void init() { System.out.println("Initing workbench"); //$NON-NLS-1$ 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$ // WizardPage page = new NewBookmarkPage1(Messages.getString("BookmarkWizard.Testing")); //$NON-NLS-1$ // addPage(page); 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; FileDialog dialog; DriverInfo[] drivers = AdapterFactory.getInstance().getDriverList(); /** * Constructor for BookmarkPage. * @param pageName */ public BookmarkPage(String pageName) { super(pageName); } 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); 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$ } } }); 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() { Bookmark 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()); JDBCDriver jdbcDriver = BookmarkCollection.getInstance().findDriver( driver.getText(), driverFile.getText()); initialData.setJDBCDriver(jdbcDriver); int selection = type.getSelectionIndex(); if (selection >= 0) { initialData.setType(drivers[selection].getDriverType()); } BookmarkCollection.getInstance().addBookmark(initialData); } }