package net.sourceforge.phpdt.sql.wizards; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; 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 net.sourceforge.phpdt.sql.Messages; import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin; import net.sourceforge.phpdt.sql.adapters.AdapterFactory; import net.sourceforge.phpdt.sql.adapters.DriverInfo; import net.sourceforge.phpdt.sql.view.BookmarkView; import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode; public class BookmarkWizard extends Wizard { BookmarkPage mainPage; private BookmarkNode current; public void init(BookmarkNode selection) { System.out.println("Initing workbench"); //$NON-NLS-1$ this.current = selection; 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$ 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; private IPreferenceStore fStore = PHPEclipseSQLPlugin.getDefault().getPreferenceStore(); BookmarkNode 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, BookmarkNode 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); 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) { String filename = dialog.open(); if (filename != null) { driverFile.setText(filename); } } }); if (initialData != null) { name.setText(initialData.getName()); username.setText(initialData.getUsername()); password.setText(initialData.getPassword()); schema.setText(initialData.getSchema()); connect.setText(initialData.getConnect()); driver.setText(initialData.getDriver()); String typeData = initialData.getType(); 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(); }else { username.setText(fStore.getString("phpeclipse.sql.username.connect")); connect.setText(fStore.getString("phpeclipse.sql.connect.connect")); driver.setText(fStore.getString("phpeclipse.sql.driver.connect")); String typeData = fStore.getString("phpeclipse.sql.type.connect"); int selectedIndex = 0; for (int i = 0; i < drivers.length; i++) { if (typeData.equals(drivers[i].getDisplayName())) { selectedIndex = i; } } type.select(selectedIndex); driverFile.setText(fStore.getString("phpeclipse.sql.filename.connect")); } 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 BookmarkNode(); } initialData.setName(name.getText()); initialData.setUsername(username.getText()); initialData.setPassword(password.getText()); initialData.setSchema(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()); BookmarkView.getInstance().addNewBookmark(initialData); //PHP Specific section fStore.putValue("phpeclipse.sql.username.connect", username.getText()); fStore.putValue("phpeclipse.sql.connect.connect", connect.getText()); fStore.putValue("phpeclipse.sql.driver.connect", driver.getText()); fStore.putValue("phpeclipse.sql.filename.connect",driverFile.getText()); } }