Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / jigadmin / gui / AuthPanel.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/jigadmin/gui/AuthPanel.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/jigadmin/gui/AuthPanel.java
new file mode 100644 (file)
index 0000000..3333fc2
--- /dev/null
@@ -0,0 +1,163 @@
+// 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