JAL-3633 Added Preferences for Proxy Authentication. No jalview_properties yet
authorBen Soares <b.soares@dundee.ac.uk>
Tue, 21 Jul 2020 19:47:18 +0000 (20:47 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Thu, 12 Nov 2020 20:26:37 +0000 (20:26 +0000)
resources/lang/Messages.properties
resources/lang/Messages_es.properties
src/jalview/jbgui/GPreferences.java

index a74109a..44bff1d 100644 (file)
@@ -587,6 +587,9 @@ label.url_linkfrom_sequence_id = URL link from Sequence ID
 label.no_proxy = No proxy servers
 label.system_proxy = System proxy servers (http={0}; https={1})
 label.use_proxy_server = Use these proxy servers
+label.auth_required = Authentication required
+label.username = Username
+label.password = Password
 label.rendering_style = {0} rendering style
 label.append_start_end = Append /start-end (/15-380)
 label.full_sequence_id = Full Sequence Id
index d16e9d6..fdf4201 100644 (file)
@@ -541,6 +541,9 @@ label.url_linkfrom_sequence_id = URL del enlace del ID de la secuencia
 label.no_proxy = Sin servidores proxy
 label.system_proxy = Servidores proxy del sistema (http={0}; https={1})
 label.use_proxy_server = Utilizar estos servidores proxy
+label.auth_required = Autenticacion requerida
+label.username = Usario
+label.password = Contraseña
 label.rendering_style = Estilo de visualización {0}
 label.append_start_end = Añadir /inicio-fin (/15-380)
 label.full_sequence_id = ID de la secuencia completo
index 4ac1825..ca5b203 100755 (executable)
@@ -51,6 +51,7 @@ import javax.swing.JComboBox;
 import javax.swing.JFileChooser;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JPasswordField;
 import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
 import javax.swing.JSpinner;
@@ -241,6 +242,10 @@ public class GPreferences extends JPanel
 
   protected JLabel serverLabel2 = new JLabel();
 
+  protected JLabel proxyAuthUsernameLabel = new JLabel();
+
+  protected JLabel proxyAuthPasswordLabel = new JLabel();
+
   protected JTextField proxyServerHttpTB = new JTextField();
 
   protected JTextField proxyPortHttpTB = new JTextField();
@@ -249,6 +254,12 @@ public class GPreferences extends JPanel
 
   protected JTextField proxyPortHttpsTB = new JTextField();
 
+  protected JCheckBox proxyAuth = new JCheckBox();
+
+  protected JTextField proxyAuthUsernameTB = new JTextField();
+
+  protected JTextField proxyAuthPasswordTB = new JPasswordField();
+
   protected JTextField defaultBrowser = new JTextField();
 
   protected ButtonGroup proxyType = new ButtonGroup();
@@ -914,6 +925,10 @@ public class GPreferences extends JPanel
     proxyServerHttpsTB.setColumns(40);
     proxyPortHttpsTB.setFont(LABEL_FONT);
     proxyPortHttpsTB.setColumns(4);
+    proxyAuthUsernameTB.setFont(LABEL_FONT);
+    proxyAuthUsernameTB.setColumns(30);
+    proxyAuthPasswordTB.setFont(LABEL_FONT);
+    proxyAuthPasswordTB.setColumns(30);
 
     // Label for Port text box
     portLabel.setFont(LABEL_FONT);
@@ -930,14 +945,21 @@ public class GPreferences extends JPanel
     httpsLabel.setFont(LABEL_FONT_BOLD);
     httpsLabel.setHorizontalAlignment(SwingConstants.LEFT);
 
+    proxyAuthUsernameLabel
+            .setText(MessageManager.getString("label.username") + ": ");
+    proxyAuthUsernameLabel.setFont(LABEL_FONT);
+    proxyAuthUsernameLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+    proxyAuthPasswordLabel
+            .setText(MessageManager.getString("label.password") + ": ");
+    proxyAuthPasswordLabel.setFont(LABEL_FONT);
+    proxyAuthPasswordLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+
     // Proxy type radio buttons
     noProxy.setFont(LABEL_FONT);
     noProxy.setHorizontalAlignment(SwingConstants.LEFT);
-    // noProxy.setHorizontalTextPosition(SwingConstants.LEADING);
     noProxy.setText(MessageManager.getString("label.no_proxy"));
     systemProxy.setFont(LABEL_FONT);
     systemProxy.setHorizontalAlignment(SwingConstants.LEFT);
-    // systemProxy.setHorizontalTextPosition(SwingConstants.LEADING);
     systemProxy.setText(MessageManager.formatMessage("label.system_proxy",
             displayHostPort(Cache.startupProxyProperties[0],
                     Cache.startupProxyProperties[1]),
@@ -945,21 +967,38 @@ public class GPreferences extends JPanel
                     Cache.startupProxyProperties[3])));
     customProxy.setFont(LABEL_FONT);
     customProxy.setHorizontalAlignment(SwingConstants.LEFT);
-    // customProxy.setHorizontalTextPosition(SwingConstants.LEADING);
-    customProxy.addActionListener(new ActionListener()
+    customProxy.setText(
+            MessageManager.getString("label.use_proxy_server") + ":");
+    ActionListener al = new ActionListener()
     {
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        customProxy_actionPerformed();
+        proxyType_actionPerformed();
       }
-    });
-    customProxy.setText(
-            MessageManager.getString("label.use_proxy_server") + ":");
+    };
+    noProxy.addActionListener(al);
+    systemProxy.addActionListener(al);
+    customProxy.addActionListener(al);
     proxyType.add(noProxy);
     proxyType.add(systemProxy);
     proxyType.add(customProxy);
 
+    proxyAuth.setFont(LABEL_FONT);
+    proxyAuth.setHorizontalAlignment(SwingConstants.LEFT);
+    proxyAuth.setText(MessageManager.getString("label.auth_required"));
+    proxyAuth.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        proxyAuth_actionPerformed();
+      }
+    });
+
+    setCustomProxyEnabled();
+    setProxyAuthEnabled();
+
     // Make proxy server panel
     JPanel proxyPanel = new JPanel();
     TitledBorder titledBorder1 = new TitledBorder(
@@ -1036,28 +1075,34 @@ public class GPreferences extends JPanel
     gbc.weightx = 0.1;
     proxyPanel.add(proxyPortHttpsTB, gbc);
 
-    /*
-    proxyPanel.add(serverLabel,
-            new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
-                    GridBagConstraints.WEST, GridBagConstraints.NONE,
-                    new Insets(0, 2, 2, 0), 5, 0));
-    proxyPanel.add(portLabel,
-            new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
-                    GridBagConstraints.WEST, GridBagConstraints.NONE,
-                    new Insets(0, 0, 2, 0), 11, 0));
-    proxyPanel.add(useProxy,
-            new GridBagConstraints(0, 0, 2, 1, 0.0, 0.0,
-                    GridBagConstraints.WEST, GridBagConstraints.NONE,
-                    new Insets(0, 2, 5, 185), 2, -4));
-    proxyPanel.add(proxyPortTB,
-            new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0,
-                    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
-                    new Insets(0, 2, 2, 2), 54, 1));
-    proxyPanel.add(proxyServerTB,
-            new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0,
-                    GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
-                    new Insets(0, 2, 2, 0), 263, 1));
-                    */
+    gbc.gridy++;
+    gbc.gridx = 0;
+    gbc.gridwidth = 5;
+    gbc.anchor = GridBagConstraints.WEST;
+    gbc.weightx = 0.1;
+    proxyPanel.add(proxyAuth, gbc);
+
+    gbc.gridy++;
+    gbc.gridx = 0;
+    gbc.gridwidth = 1;
+    gbc.anchor = GridBagConstraints.EAST;
+    proxyPanel.add(proxyAuthUsernameLabel, gbc);
+
+    gbc.gridx++;
+    gbc.gridwidth = 4;
+    gbc.anchor = GridBagConstraints.WEST;
+    proxyPanel.add(proxyAuthUsernameTB, gbc);
+
+    gbc.gridy++;
+    gbc.gridx = 0;
+    gbc.gridwidth = 1;
+    gbc.anchor = GridBagConstraints.EAST;
+    proxyPanel.add(proxyAuthPasswordLabel, gbc);
+
+    gbc.gridx++;
+    gbc.gridwidth = 4;
+    gbc.anchor = GridBagConstraints.WEST;
+    proxyPanel.add(proxyAuthPasswordTB, gbc);
 
     return proxyPanel;
   }
@@ -2967,17 +3012,40 @@ public class GPreferences extends JPanel
 
   }
 
-  public void customProxy_actionPerformed()
+  public void setProxyAuthEnabled()
+  {
+    boolean enabled = proxyAuth.isSelected() && proxyAuth.isEnabled();
+    proxyAuthUsernameLabel.setEnabled(enabled);
+    proxyAuthPasswordLabel.setEnabled(enabled);
+    proxyAuthUsernameTB.setEnabled(enabled);
+    proxyAuthPasswordTB.setEnabled(enabled);
+  }
+
+  public void setCustomProxyEnabled()
   {
     boolean enabled = customProxy.isSelected();
     portLabel.setEnabled(enabled);
     serverLabel.setEnabled(enabled);
+    portLabel2.setEnabled(enabled);
+    serverLabel2.setEnabled(enabled);
     httpLabel.setEnabled(enabled);
     httpsLabel.setEnabled(enabled);
     proxyServerHttpTB.setEnabled(enabled);
     proxyPortHttpTB.setEnabled(enabled);
     proxyServerHttpsTB.setEnabled(enabled);
     proxyPortHttpsTB.setEnabled(enabled);
+    proxyAuth.setEnabled(enabled);
+    setProxyAuthEnabled();
+  }
+
+  public void proxyType_actionPerformed()
+  {
+    setCustomProxyEnabled();
+  }
+
+  public void proxyAuth_actionPerformed()
+  {
+    setProxyAuthEnabled();
   }
 
   /**