From 26252122862cb528ee7cbf01fae6c2fa46b82e02 Mon Sep 17 00:00:00 2001 From: chenson42 Date: Fri, 25 Jan 2008 17:15:51 +0000 Subject: [PATCH] Added ConnectionDialog --- .../symmetric/admin/AdminTreeControl.java | 10 +- .../jumpmind/symmetric/admin/AppFrame.java | 4 + .../symmetric/admin/ConnectionDialog.java | 110 ++++++++++++++++++ .../symmetric/admin/IAppController.java | 4 + 4 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 symmetric/src/main/java/org/jumpmind/symmetric/admin/ConnectionDialog.java diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/admin/AdminTreeControl.java b/symmetric/src/main/java/org/jumpmind/symmetric/admin/AdminTreeControl.java index da3f0db6e9..224dddb8d7 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/admin/AdminTreeControl.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/admin/AdminTreeControl.java @@ -60,9 +60,12 @@ public class AdminTreeControl extends JScrollPane { private IAppController appController; + private ConnectionDialog connectionDialog; + AbstractAction connectAction; protected AdminTreeControl(IAppController controller) throws Exception { + this.connectionDialog = new ConnectionDialog(); this.appController = controller; final DefaultMutableTreeNode top = new DefaultMutableTreeNode("Connections") { @@ -79,8 +82,11 @@ public boolean isLeaf() { private static final long serialVersionUID = -1L; public void actionPerformed(ActionEvent e) { - addSymmetricConnection(new SymmetricConnection("test connection"), top); - saveConnections(connections); + SymmetricConnection c = connectionDialog.activateConnectionDialog(appController.getFrame()); + if (c != null) { + addSymmetricConnection(c, top); + saveConnections(connections); + } } })); diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/admin/AppFrame.java b/symmetric/src/main/java/org/jumpmind/symmetric/admin/AppFrame.java index d27207cb74..b1e71227d7 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/admin/AppFrame.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/admin/AppFrame.java @@ -49,4 +49,8 @@ public void showError(String message, Exception ex) { logger.error(message, ex); } + public JFrame getFrame() { + return this; + } + } diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/admin/ConnectionDialog.java b/symmetric/src/main/java/org/jumpmind/symmetric/admin/ConnectionDialog.java new file mode 100644 index 0000000000..18ca5ff46a --- /dev/null +++ b/symmetric/src/main/java/org/jumpmind/symmetric/admin/ConnectionDialog.java @@ -0,0 +1,110 @@ +/* + * SymmetricDS is an open source database synchronization solution. + * + * Copyright (C) Chris Henson + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see + * . + */ +package org.jumpmind.symmetric.admin; + +import java.awt.Component; +import java.awt.GridLayout; + +import javax.swing.BoxLayout; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; + +public class ConnectionDialog extends JPanel { + + private static final long serialVersionUID = -4325767568474807143L; + + JLabel nameLabel; + + JTextField nameField; + + JLabel userNameLabel; + + JTextField userNameField; + + JLabel passwordLabel; + + JTextField passwordField; + + JLabel serverLabel; + + JTextField serverField; + + JLabel driverLabel; + + JTextField driverField; + + public ConnectionDialog() { + super(false); + + nameLabel = new JLabel("Connection name: ", JLabel.RIGHT); + nameField = new JTextField("My Symmetric"); + + userNameLabel = new JLabel("User name: ", JLabel.RIGHT); + userNameField = new JTextField(""); + + passwordLabel = new JLabel("Password: ", JLabel.RIGHT); + passwordField = new JPasswordField(""); + + serverLabel = new JLabel("Database URL: ", JLabel.RIGHT); + serverField = new JTextField("jdbc:derby:target/derby/root;create=true"); + + driverLabel = new JLabel("Driver: ", JLabel.RIGHT); + driverField = new JTextField("org.apache.derby.jdbc.EmbeddedDriver"); + + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + + JPanel namePanel = new JPanel(false); + namePanel.setLayout(new GridLayout(0, 1)); + namePanel.add(nameLabel); + namePanel.add(userNameLabel); + namePanel.add(passwordLabel); + namePanel.add(serverLabel); + namePanel.add(driverLabel); + + JPanel fieldPanel = new JPanel(false); + fieldPanel.setLayout(new GridLayout(0, 1)); + fieldPanel.add(nameField); + fieldPanel.add(userNameField); + fieldPanel.add(passwordField); + fieldPanel.add(serverField); + fieldPanel.add(driverField); + + add(namePanel); + add(fieldPanel); + } + + public SymmetricConnection activateConnectionDialog(Component parent) { + if (JOptionPane.showOptionDialog(parent, this, "Database Connection Info", JOptionPane.DEFAULT_OPTION, + JOptionPane.INFORMATION_MESSAGE, null, new String[] { "Apply", "Cancel" }, "Apply") == 0) { + SymmetricConnection c = new SymmetricConnection(nameField.getText()); + c.setDriverName(driverField.getText()); + c.setJdbcUrl(serverLabel.getText()); + c.setUsername(userNameField.getText()); + c.setPassword(passwordField.getText()); + return c; + } else { + return null; + } + } + +} diff --git a/symmetric/src/main/java/org/jumpmind/symmetric/admin/IAppController.java b/symmetric/src/main/java/org/jumpmind/symmetric/admin/IAppController.java index f2d8924c28..fb364375bd 100644 --- a/symmetric/src/main/java/org/jumpmind/symmetric/admin/IAppController.java +++ b/symmetric/src/main/java/org/jumpmind/symmetric/admin/IAppController.java @@ -19,7 +19,11 @@ */ package org.jumpmind.symmetric.admin; +import javax.swing.JFrame; + public interface IAppController { public void showError(String message, Exception ex); + + public JFrame getFrame(); }