/** * Title: JSqlIde<p> * Description: A Java SQL Integrated Development Environment * <p> * Copyright: Copyright (c) David Martinez<p> * Company: <p> * @author David Martinez * @version 1.0 */ package com.hackerdude.apps.sqlide.wizards; import java.awt.Dimension; import java.io.File; import java.util.HashMap; import javax.swing.JFrame; import com.hackerdude.apps.sqlide.ProgramConfig; import com.hackerdude.apps.sqlide.SqlIdeApplication; import com.hackerdude.apps.sqlide.xml.HostConfigFactory; import com.hackerdude.apps.sqlide.xml.hostconfig.SqlideHostConfig; import com.hackerdude.lib.ui.Wizard; import com.hackerdude.lib.ui.WizardPage; /** * This is a server Wizard used to create new servers. */ public class NewServerWizard extends Wizard { NewServerWizSelectServerType pageNewServer; ServerDetailsWizardPage pageServerDetails; SelectClassPathWizardPage pageSelectClassPath; SqlideHostConfig databaseSpec; public NewServerWizard(JFrame owner, boolean modal) { super(owner, "New Server Profile", "Add a new server profile to your environment", modal ); databaseSpec = HostConfigFactory.createHostConfig(); pageNewServer = new NewServerWizSelectServerType(); pageServerDetails = new ServerDetailsWizardPage(); pageSelectClassPath = new SelectClassPathWizardPage(); pageServerDetails.setWizard(this); pageSelectClassPath.setWizard(this); pageNewServer.setWizard(this); pageNewServer.setDatabaseSpec(databaseSpec); // pageNewServer.cmbServerType.setSelectedIndex(0); pageSelectClassPath.setDatabaseSpec(databaseSpec); WizardPage[] pages = new WizardPage[3]; pages[0] = pageSelectClassPath; pages[1] = pageNewServer; pages[2] = pageServerDetails; File defaultFile = new File(HostConfigFactory.DEFAULT_DBSPEC); if ( ! defaultFile.exists() ) { setFileName(HostConfigFactory.DEFAULT_DBSPEC); pageNewServer.setFileNameEnabled(false); } setPages(pages); } public SqlideHostConfig getDBSpec() { return databaseSpec; } public void setFileName(String fileName) { pageNewServer.fFileName.setText(fileName); } public void setServerType(String serverType) { pageServerDetails.setServerType(serverType); } public void setJDBCURL(String URL) { pageNewServer.setURL(URL); } public void setClassName(String className) { pageNewServer.setClassName(className); } public void setProperties(HashMap properties) { pageServerDetails.setServerProperties(properties); } public void setServerTitle(String title) { pageNewServer.setServerTitle(title); } public void doneWizard() { /** @todo Resolve this correctly. fFileName is only a base filename. It no longer has a path or anything. */ String baseFileName = pageNewServer.fFileName.getText(); String fileName = ProgramConfig.getUserProfilePath()+baseFileName+".db.xml"; databaseSpec.setFileName(fileName); databaseSpec.getJdbc().setUrl(pageNewServer.fURL.getText()); databaseSpec.setName(pageNewServer.cmbServerType.getSelectedItem().toString()+" on "+pageNewServer.fHostName.getText()); databaseSpec.getJdbc().setDriver(pageNewServer.fClassName.getText()); databaseSpec.getJdbc().setConnectionProperties(HostConfigFactory.mapToConnectionProperties(pageServerDetails.propertiesModel.getProperties())); // databaseSpec.setDefaultCatalog(pageNewServer.fCatalogName.getText()); setVisible(false); } public String getFileName() { return pageNewServer.fFileName.getText(); } public static NewServerWizard showWizard(boolean modal) { NewServerWizard wiz = new NewServerWizard(SqlIdeApplication.getFrame(), modal); wiz.setEnabled(true); wiz.pack(); Dimension screen = wiz.getToolkit().getScreenSize(); wiz.setLocation( ( screen.getSize().width - wiz.getSize().width) / 2,(screen.getSize().height - wiz.getSize().height) / 2); wiz.show(); return wiz; } public static void main(String[] args) { showWizard(true); } }