--- /dev/null
+// AuthPanel.java\r
+// $Id: AuthPanel.java,v 1.1 2010/06/15 12:21:49 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1998.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.jigadmin.gui; \r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.JTextField;\r
+import javax.swing.JPasswordField;\r
+import javax.swing.JButton;\r
+import javax.swing.JLabel;\r
+import javax.swing.BorderFactory;\r
+\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.ActionEvent;\r
+\r
+import java.awt.GridLayout;\r
+import java.awt.GridBagLayout;\r
+import java.awt.GridBagConstraints;\r
+import java.awt.Insets;\r
+\r
+import org.w3c.www.http.HttpCredential;\r
+import org.w3c.www.http.HttpFactory;\r
+\r
+import org.w3c.tools.codec.Base64Encoder;\r
+\r
+/**\r
+ * The Authentication dialog.\r
+ * @version $Revision: 1.1 $\r
+ * @author Benoît Mahé (bmahe@w3.org)\r
+ */\r
+public class AuthPanel extends JPanel {\r
+\r
+ protected boolean ok;\r
+ protected ServerBrowser sb;\r
+ protected JTextField user;\r
+ protected JPasswordField passwd;\r
+\r
+ /**\r
+ * Constructor.\r
+ * @param sb The ServerBrowser\r
+ * @param name the realm name.\r
+ */\r
+ protected AuthPanel(ServerBrowser sb, String name) {\r
+ this.sb = sb;\r
+ this.ok = false;\r
+\r
+ ActionListener al = new ActionListener() {\r
+ public void actionPerformed(ActionEvent ae) {\r
+ if( ae.getActionCommand().equals("Ok") || \r
+ ae.getSource().equals(passwd)) \r
+ {\r
+ if(! user.getText().equals("")) {\r
+ HttpCredential credential;\r
+ credential = HttpFactory.makeCredential("Basic");\r
+ String password = new String(passwd.getPassword());\r
+ Base64Encoder encoder = \r
+ new Base64Encoder(user.getText()\r
+ +":"\r
+ +password);\r
+ credential.setAuthParameter("cookie", \r
+ encoder.processString());\r
+ AuthPanel.this.sb.getAdminContext().setCredential(\r
+ credential);\r
+ AuthPanel.this.sb.dispose(true);\r
+ done();\r
+ } else {\r
+ user.requestFocus();\r
+ }\r
+ } else if ( ae.getActionCommand().equals("Cancel")) {\r
+ AuthPanel.this.sb.dispose(false);\r
+ done();\r
+ } else if(ae.getSource().equals(user)) {\r
+ passwd.requestFocus();\r
+ }\r
+ }\r
+ };\r
+\r
+ GridBagLayout gbl = new GridBagLayout();\r
+ GridBagConstraints gbc = new GridBagConstraints();\r
+ GridBagLayout mgbl = new GridBagLayout();\r
+ GridBagConstraints mgbc = new GridBagConstraints();\r
+ JLabel l; JButton b;\r
+ JPanel p = new JPanel(gbl);\r
+\r
+ user = new JTextField(10);\r
+\r
+ passwd = new JPasswordField(10);\r
+ passwd.addActionListener(al);\r
+\r
+ gbc.fill = GridBagConstraints.HORIZONTAL;\r
+ gbc.weightx = 0;\r
+ gbc.weighty = 0;\r
+ mgbc.fill = GridBagConstraints.NONE;\r
+ mgbc.weightx = 0;\r
+ mgbc.weighty = 0;\r
+ mgbc.insets = new Insets(16, 10, 16, 5);\r
+ setLayout(mgbl);\r
+\r
+ l = new JLabel("User name: ", JLabel.RIGHT);\r
+ gbc.gridwidth = 1;\r
+ gbl.setConstraints(l, gbc);\r
+ p.add(l);\r
+ gbc.gridwidth = GridBagConstraints.REMAINDER;\r
+ gbl.setConstraints(user, gbc);\r
+ p.add(user);\r
+\r
+ l = new JLabel("Password: ", JLabel.RIGHT);\r
+ gbc.gridwidth = 1;\r
+ gbl.setConstraints(l, gbc);\r
+ p.add(l);\r
+ gbc.gridwidth = GridBagConstraints.REMAINDER;\r
+ gbl.setConstraints(passwd, gbc);\r
+ p.add(passwd);\r
+ mgbc.gridwidth = GridBagConstraints.REMAINDER;\r
+ mgbl.setConstraints(p, mgbc);\r
+ add(p);\r
+ \r
+ // and now the usual button bar\r
+ p = new JPanel(new GridLayout(1, 2, 20, 20));\r
+ b = new JButton("Ok");\r
+ b.addActionListener(al);\r
+ p.add(b);\r
+ b = new JButton("Cancel");\r
+ b.addActionListener(al);\r
+ p.add(b);\r
+ mgbl.setConstraints(p, mgbc);\r
+ add(p);\r
+ if (name != null)\r
+ setBorder(BorderFactory.createTitledBorder("Realm: "+name));\r
+ else\r
+ setBorder(BorderFactory.createTitledBorder("Authentication"));\r
+ }\r
+\r
+ /**\r
+ * Request the focus on the user TextField.\r
+ */\r
+ protected void getFocus() {\r
+ user.requestFocus();\r
+ }\r
+\r
+ /**\r
+ * Notify All thread that the username/password are entered.\r
+ */\r
+ protected synchronized void done() {\r
+ ok = true;\r
+ notifyAll();\r
+ }\r
+\r
+ /**\r
+ * Wait until it's done.\r
+ */\r
+ public synchronized boolean waitForCompletion() {\r
+ try { \r
+ wait(); \r
+ } catch (InterruptedException ex) {\r
+ //nothing to do\r
+ }\r
+ return ok;\r
+ }\r
+\r
+}\r