// $Id: DatabaseChoser.java 3525 2006-03-12 14:57:43Z coelho $ import java.awt.*; import java.awt.event.*; import java.net.InetAddress; /** database choser dialog. * @author Fabien Coelho */ public class DatabaseChoser extends Dialog implements ActionListener { // ATTRIBUTS protected TextField driver; protected TextField drivername; protected TextField host; protected TextField port; protected TextField database; protected TextField username; protected TextField password; // protected TextField options; protected Button ok, cancel; protected boolean done; // CONSTRUCTOR /** full construtor. */ public DatabaseChoser(Frame owner, String title, String s_driver, String s_drivername, String s_database) { super(owner, title, true); // modal // this.setLayout(new GridLayout(0, 1)); Panel labels = new Panel(new GridLayout(0,1)); Panel texts = new Panel(new GridLayout(0,1)); Panel buttons = new Panel(new GridLayout(1,2)); this.add(labels,BorderLayout.WEST); this.add(texts,BorderLayout.CENTER); this.add(buttons,BorderLayout.SOUTH); driver = new TextField(s_driver, 30); drivername = new TextField(s_drivername, 10); // default hostname is current host String hostname = ""; try { hostname = InetAddress.getLocalHost().getHostName(); } catch (Exception e) { System.err.println(e); } host = new TextField(hostname, 20); port = new TextField("", 10); database = new TextField(s_database, 20); username = new TextField(System.getProperty("user.name"), 20); password = new TextField("", 20); password.setEchoChar('*'); labels.add(new Label("Driver", Label.RIGHT)); texts.add(driver); labels.add(new Label("Driver name", Label.RIGHT)); texts.add(drivername); labels.add(new Label("Host name", Label.RIGHT)); texts.add(host); labels.add(new Label("Port number", Label.RIGHT)); texts.add(port); labels.add(new Label("Database name", Label.RIGHT)); texts.add(database); labels.add(new Label("User name", Label.RIGHT)); texts.add(username); labels.add(new Label("Password", Label.RIGHT)); texts.add(password); ok = new Button("Okay"); cancel = new Button("Cancel"); buttons.add(ok); buttons.add(cancel); password.addActionListener(this); ok.addActionListener(this); cancel.addActionListener(this); this.pack(); } static protected final String DEFAULT_TITLE = "Chose Database", DEFAULT_DRIVER_CLASS = "org.postgresql.Driver", DEFAULT_DRIVER_NAME = "postgresql", DEFAULT_DATABASE_NAME = "comics"; public DatabaseChoser() { this(new Frame("")); // ... } public DatabaseChoser(Frame owner) { this(owner, DEFAULT_DATABASE_NAME); } public DatabaseChoser(Frame owner, String database) { this(owner, DEFAULT_TITLE, database); } public DatabaseChoser(Frame owner, String title, String database) { this(owner, title, DEFAULT_DRIVER_CLASS, DEFAULT_DRIVER_NAME, database); } // GRAPHICS public void actionPerformed(ActionEvent e) { done = e.getSource()!=cancel; this.setVisible(false); } // RESULTS public String getDriver() { return driver.getText(); } public String getURL() { // is this generic enough? StringBuffer b = new StringBuffer("jdbc:"); // I shoud have this from the Driver name? b.append(drivername.getText()); b.append(":"); if (!host.getText().equals("")) { b.append("//"); b.append(host.getText()); if (!port.getText().equals("")) { b.append(":"); b.append(port.getText()); } } b.append("/"); b.append(database.getText()); return b.toString(); } public String getUserName() { return username.getText(); } public String getPassword() { return password.getText(); } public boolean isOkay() { return done; } // TEST static public void main(String[] args) { Frame f = new Frame(); DatabaseChoser cd = new DatabaseChoser(f); cd.setVisible(true); if (cd.isOkay()) { System.out.println("driver=" + cd.getDriver()); System.out.println("url=" + cd.getURL()); System.out.println("username=" + cd.getUserName()); System.out.println("password=" + cd.getPassword()); } else { System.out.println("canceled"); } // clean f.dispose(); } }