You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by mj...@apache.org on 2009/08/15 00:22:03 UTC

svn commit: r804396 - /mina/sandbox/vysper/trunk/demo/pubsub/client/src/main/java/org/apache/vysper/demo/pubsub/client/PubsubClientGUI.java

Author: mjakl
Date: Fri Aug 14 22:22:02 2009
New Revision: 804396

URL: http://svn.apache.org/viewvc?rev=804396&view=rev
Log:
Dialog for login credentials (prefilled with our demo user) added.

Modified:
    mina/sandbox/vysper/trunk/demo/pubsub/client/src/main/java/org/apache/vysper/demo/pubsub/client/PubsubClientGUI.java

Modified: mina/sandbox/vysper/trunk/demo/pubsub/client/src/main/java/org/apache/vysper/demo/pubsub/client/PubsubClientGUI.java
URL: http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/demo/pubsub/client/src/main/java/org/apache/vysper/demo/pubsub/client/PubsubClientGUI.java?rev=804396&r1=804395&r2=804396&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/demo/pubsub/client/src/main/java/org/apache/vysper/demo/pubsub/client/PubsubClientGUI.java (original)
+++ mina/sandbox/vysper/trunk/demo/pubsub/client/src/main/java/org/apache/vysper/demo/pubsub/client/PubsubClientGUI.java Fri Aug 14 22:22:02 2009
@@ -19,6 +19,8 @@
  */
 package org.apache.vysper.demo.pubsub.client;
 
+import java.awt.BorderLayout;
+import java.awt.GridLayout;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -26,9 +28,13 @@
 
 import javax.swing.JButton;
 import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JPasswordField;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
+import javax.swing.JTextField;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.event.TableModelEvent;
@@ -51,18 +57,23 @@
  * @author The Apache MINA Project (http://mina.apache.org)
  */
 public class PubsubClientGUI implements Runnable, TableModelListener {
+    private JFrame frame;
     private PubsubTableModel dtm = new PubsubTableModel();
     private XMPPConnection connection;
     private PubSubManager pubsubMgr;
-    private String jid = "user1@vysper.org";
+    private String username;
+    private String hostname;
+    private String password;
+    private String jid;
 
     private void createAndShowGUI() {
         setUpLookAndFeel();
 
-        JFrame frame = new JFrame("Vysper Publish/Subscribe Client");
+        frame = new JFrame("Vysper Publish/Subscribe Client");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
         JPanel panel = new JPanel();
+        panel.setLayout(new BorderLayout());
 
         JTable nodeTable = new JTable(dtm);
         JScrollPane scrollPane = new JScrollPane(nodeTable);
@@ -72,14 +83,17 @@
         JButton create = new JButton("Create");
 
         JButton delete = new JButton("Delete");
+        
+        JPanel buttons = new JPanel();
+        buttons.add(create);
+        buttons.add(delete);
 
         frame.add(panel);
 
-        panel.add(scrollPane);
-        panel.add(create);
-        panel.add(delete);
+        panel.add(scrollPane, BorderLayout.NORTH);
+        panel.add(buttons, BorderLayout.SOUTH);
 
-        frame.pack();//setSize(200,200);
+        frame.pack();
         frame.setVisible(true);
     }
 
@@ -97,7 +111,9 @@
     }
 
     private void logout() {
-        connection.disconnect();
+        if(connection != null && connection.isConnected()) {
+            connection.disconnect();
+        }
     }
 
     public void run() {
@@ -174,14 +190,68 @@
     }
 
     private void login() {
-        try {
-            connection = connect("user1", "password1", "localhost");
-        } catch (XMPPException e) {
-            e.printStackTrace();
-        }
+        boolean loginOK = false;
+        
+        do {
+            askForCredentials();
+            try {
+                connection = connect(username, password, hostname);
+                loginOK = true;
+            } catch (XMPPException e) {
+                e.printStackTrace();
+            }
+        } while(loginOK == false);
+        
         pubsubMgr = new PubSubManager(connection);
     }
 
+    private void askForCredentials() {
+        JLabel jidLab = new JLabel("JID");
+        JTextField jidTxt = new JTextField("user1@vysper.org");
+        jidLab.setLabelFor(jidTxt);
+        
+        JLabel usernameLab = new JLabel("Username");
+        JTextField usernameTxt = new JTextField("user1");
+        usernameLab.setLabelFor(usernameTxt);
+        
+        JLabel hostLab = new JLabel("Host");
+        JTextField hostTxt = new JTextField("localhost");
+        hostLab.setLabelFor(hostTxt);
+        
+        JLabel passwordLab = new JLabel("Password");
+        JTextField passwordTxt = new JPasswordField("password1");
+        passwordLab.setLabelFor(passwordTxt);
+        
+        JPanel panel = new JPanel();
+        panel.setLayout(new GridLayout(4,2));
+        panel.add(jidLab);
+        panel.add(jidTxt);
+        panel.add(usernameLab);
+        panel.add(usernameTxt);
+        panel.add(hostLab);
+        panel.add(hostTxt);
+        panel.add(passwordLab);
+        panel.add(passwordTxt);
+        
+        int answer = JOptionPane.showOptionDialog(frame,
+                panel,
+                "Login",
+                JOptionPane.OK_CANCEL_OPTION,
+                JOptionPane.QUESTION_MESSAGE,
+                null,
+                new String[] {"Login", "Exit"},
+                "Login");
+
+        if(answer != 0) {
+            System.exit(0);
+        }
+        
+        this.username = usernameTxt.getText();
+        this.hostname = hostTxt.getText();
+        this.password = passwordTxt.getText();
+        this.jid = jidTxt.getText();
+    }
+
     private XMPPConnection connect(String username, String password, String host) throws XMPPException {
         XMPPConnection connection = new XMPPConnection(host);
         connection.connect();