deweese 2002/08/02 13:26:05 Modified: resources/org/apache/batik/apps/svgbrowser/resources GUI.properties sources/org/apache/batik/apps/svgbrowser Main.java Added: sources/org/apache/batik/apps/svgbrowser JAuthenticator.java Log: Squiggle now supports network authentication. This allows it to access content on sites that require a username and password, as well as traverse proxies that require a username and password. Revision Changes Path 1.55 +13 -1 xml-batik/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties Index: GUI.properties =================================================================== RCS file: /home/cvs/xml-batik/resources/org/apache/batik/apps/svgbrowser/resources/GUI.properties,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- GUI.properties 11 Jul 2002 16:42:45 -0000 1.54 +++ GUI.properties 2 Aug 2002 20:26:05 -0000 1.55 @@ -445,6 +445,18 @@ PreferenceDialog.icon.networkPref = \ org/apache/batik/apps/svgbrowser/resources/networkPref.gif + +# +# Authentication Requestion Dialog strings. +# +JAuthenticator.title = Network Authentication Requested +JAuthenticator.label.ok = OK +JAuthenticator.label.cancel = Cancel +JAuthenticator.label.site = Site: +JAuthenticator.label.req = Requests: +JAuthenticator.label.userID = User ID: +JAuthenticator.label.password = Password: + # # Main string constants for confirmation messages # 1.42 +4 -1 xml-batik/sources/org/apache/batik/apps/svgbrowser/Main.java Index: Main.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/Main.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- Main.java 11 Jul 2002 16:42:45 -0000 1.41 +++ Main.java 2 Aug 2002 20:26:05 -0000 1.42 @@ -25,6 +25,7 @@ import java.net.URLDecoder; import java.net.URLEncoder; +import java.net.Authenticator; import java.util.HashMap; import java.util.Iterator; @@ -295,6 +296,8 @@ securityEnforcer = new ApplicationSecurityEnforcer(this.getClass(), SQUIGGLE_SECURITY_POLICY); + + Authenticator.setDefault(new JAuthenticator()); try { preferenceManager = new XMLPreferenceManager(SQUIGGLE_CONFIGURATION_FILE, 1.1 xml-batik/sources/org/apache/batik/apps/svgbrowser/JAuthenticator.java Index: JAuthenticator.java =================================================================== package org.apache.batik.apps.svgbrowser; import java.net.Authenticator; import java.net.PasswordAuthentication; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JPasswordField; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JComponent; import javax.swing.SwingConstants; import java.awt.BorderLayout; import java.awt.Container; import java.awt.EventQueue; import java.awt.Frame; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * This class is resposible for providing authentication information * when needed by network protocols. It does this by poping up a small * window that asks for User ID and password for the system. */ public class JAuthenticator extends Authenticator { /** * Internationalization message string */ public static final String TITLE = "JAuthenticator.title"; public static final String LABEL_SITE = "JAuthenticator.label.site"; public static final String LABEL_REQ = "JAuthenticator.label.req"; public static final String LABEL_USERID = "JAuthenticator.label.userID"; public static final String LABEL_PASSWORD = "JAuthenticator.label.password"; public static final String LABEL_CANCEL = "JAuthenticator.label.cancel"; public static final String LABEL_OK = "JAuthenticator.label.ok"; protected JDialog window; protected JButton cancelButton; protected JButton okButton; protected JLabel label1; protected JLabel label2; protected JTextField JUserID; protected JPasswordField JPassword; Object lock = new Object(); private boolean result; private String userID; private char [] password; public JAuthenticator() { initWindow(); } protected void initWindow() { String title = Resources.getString(TITLE); window = new JDialog((Frame)null, title, true); Container mainPanel = window.getContentPane(); mainPanel.setLayout(new BorderLayout()); mainPanel.add(buildAuthPanel(), BorderLayout.CENTER); mainPanel.add(buildButtonPanel(), BorderLayout.SOUTH); window.pack(); window.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { cancelListener.actionPerformed (new ActionEvent(e.getWindow(), ActionEvent.ACTION_PERFORMED, "Close")); } }); } protected JComponent buildAuthPanel() { GridBagLayout gridBag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); JPanel proxyPanel = new JPanel(gridBag); c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; c.gridwidth = 1; JLabel labelS = new JLabel(Resources.getString(LABEL_SITE)); labelS.setHorizontalAlignment(SwingConstants.LEFT); gridBag.setConstraints(labelS, c); proxyPanel.add(labelS); c.gridwidth = GridBagConstraints.REMAINDER; label1 = new JLabel(""); label1.setHorizontalAlignment(SwingConstants.LEFT); gridBag.setConstraints(label1, c); proxyPanel.add(label1); c.gridwidth = 1; JLabel labelR = new JLabel(Resources.getString(LABEL_REQ)); labelR.setHorizontalAlignment(SwingConstants.LEFT); gridBag.setConstraints(labelR, c); proxyPanel.add(labelR); c.gridwidth = GridBagConstraints.REMAINDER; label2 = new JLabel(""); label2.setHorizontalAlignment(SwingConstants.LEFT); gridBag.setConstraints(label2, c); proxyPanel.add(label2); c.gridwidth = 1; JLabel labelUserID = new JLabel(Resources.getString(LABEL_USERID)); labelUserID.setHorizontalAlignment(SwingConstants.LEFT); gridBag.setConstraints(labelUserID, c); proxyPanel.add(labelUserID); c.gridwidth = GridBagConstraints.REMAINDER; JUserID = new JTextField(20); gridBag.setConstraints(JUserID, c); proxyPanel.add(JUserID); c.gridwidth = 1; JLabel labelPassword = new JLabel(Resources.getString(LABEL_PASSWORD)); labelPassword.setHorizontalAlignment(SwingConstants.LEFT); gridBag.setConstraints(labelPassword, c); proxyPanel.add(labelPassword); c.gridwidth = GridBagConstraints.REMAINDER; JPassword = new JPasswordField(20); JPassword.setEchoChar('*'); JPassword.addActionListener(okListener); gridBag.setConstraints(JPassword, c); proxyPanel.add(JPassword); return proxyPanel; } protected JComponent buildButtonPanel() { JPanel buttonPanel = new JPanel(); cancelButton = new JButton(Resources.getString(LABEL_CANCEL)); cancelButton.addActionListener(cancelListener); buttonPanel.add(cancelButton); okButton = new JButton(Resources.getString(LABEL_OK)); okButton.addActionListener( okListener); buttonPanel.add(okButton); return buttonPanel; } /** * This is called by the protocol stack when authentication is * required. We then show the dialog in the Swing event thread, * and block waiting for the user to select either cancel or ok, * at which point we get notified. */ public PasswordAuthentication getPasswordAuthentication() { synchronized (lock) { EventQueue.invokeLater(new Runnable() { public void run() { label1.setText(getRequestingSite().getHostName()); label2.setText(getRequestingPrompt()); window.setVisible(true); } }); try { lock.wait(); } catch(InterruptedException ie) { } if (!result) return null; return new PasswordAuthentication(userID, password); } } ActionListener okListener = new ActionListener() { public void actionPerformed(ActionEvent e) { synchronized (lock) { window.setVisible(false); userID = JUserID.getText(); password = JPassword.getPassword(); JPassword.setText(""); result = true; lock.notifyAll(); } } }; ActionListener cancelListener = new ActionListener() { public void actionPerformed(ActionEvent e) { synchronized (lock) { window.setVisible(false); userID = null; JUserID.setText(""); password = null; JPassword.setText(""); result = false; lock.notifyAll(); } } }; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]