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;
protected JButton userOnly = new JButton();
+ protected JLabel httpLabel = new JLabel();
+
+ protected JLabel httpsLabel = new JLabel();
+
protected JLabel portLabel = new JLabel();
protected JLabel serverLabel = new JLabel();
- protected JTextField proxyServerTB = new JTextField();
+ protected JLabel portLabel2 = new JLabel();
+
+ 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();
- protected JTextField proxyPortTB = new JTextField();
+ protected JTextField proxyServerHttpsTB = new JTextField();
+
+ 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 JCheckBox useProxy = new JCheckBox();
+ protected ButtonGroup proxyType = new ButtonGroup();
+
+ protected JRadioButton noProxy = new JRadioButton();
+
+ protected JRadioButton systemProxy = new JRadioButton();
+
+ protected JRadioButton customProxy = new JRadioButton();
protected JCheckBox usagestats = new JCheckBox();
private JPanel initConnTabProxyPanel()
{
// Label for server text box
- serverLabel.setText(MessageManager.getString("label.address"));
+ serverLabel.setText(MessageManager.getString("label.host") + ": ");
serverLabel.setHorizontalAlignment(SwingConstants.RIGHT);
serverLabel.setFont(LABEL_FONT);
+ serverLabel2.setText(MessageManager.getString("label.host") + ": ");
+ serverLabel2.setHorizontalAlignment(SwingConstants.RIGHT);
+ serverLabel2.setFont(LABEL_FONT);
// Proxy server and port text boxes
- proxyServerTB.setFont(LABEL_FONT);
- proxyPortTB.setFont(LABEL_FONT);
+ proxyServerHttpTB.setFont(LABEL_FONT);
+ proxyServerHttpTB.setColumns(40);
+ proxyPortHttpTB.setFont(LABEL_FONT);
+ proxyPortHttpTB.setColumns(4);
+ proxyServerHttpsTB.setFont(LABEL_FONT);
+ 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);
portLabel.setHorizontalAlignment(SwingConstants.RIGHT);
- portLabel.setText(MessageManager.getString("label.port"));
-
- // Use proxy server checkbox
- useProxy.setFont(LABEL_FONT);
- useProxy.setHorizontalAlignment(SwingConstants.RIGHT);
- useProxy.setHorizontalTextPosition(SwingConstants.LEADING);
- useProxy.setText(MessageManager.getString("label.use_proxy_server"));
- useProxy.addActionListener(new ActionListener()
+ portLabel.setText(MessageManager.getString("label.port") + ": ");
+ portLabel2.setFont(LABEL_FONT);
+ portLabel2.setHorizontalAlignment(SwingConstants.RIGHT);
+ portLabel2.setText(MessageManager.getString("label.port") + ": ");
+
+ httpLabel.setText("HTTP");
+ httpLabel.setFont(LABEL_FONT_BOLD);
+ httpLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ httpsLabel.setText("HTTPS");
+ 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.setText(MessageManager.getString("label.no_proxy"));
+ systemProxy.setFont(LABEL_FONT);
+ systemProxy.setHorizontalAlignment(SwingConstants.LEFT);
+ systemProxy.setText(MessageManager.formatMessage("label.system_proxy",
+ displayUserHostPort(Cache.startupProxyProperties[4],
+ Cache.startupProxyProperties[0],
+ Cache.startupProxyProperties[1]),
+ displayUserHostPort(Cache.startupProxyProperties[6],
+ Cache.startupProxyProperties[2],
+ Cache.startupProxyProperties[3])));
+ customProxy.setFont(LABEL_FONT);
+ customProxy.setHorizontalAlignment(SwingConstants.LEFT);
+ customProxy.setText(
+ MessageManager.getString("label.use_proxy_server") + ":");
+ ActionListener al = new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ proxyType_actionPerformed();
+ }
+ };
+ 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)
{
- useProxy_actionPerformed();
+ proxyAuth_actionPerformed();
}
});
+ setCustomProxyEnabled();
+
// Make proxy server panel
JPanel proxyPanel = new JPanel();
TitledBorder titledBorder1 = new TitledBorder(
- MessageManager.getString("label.proxy_server"));
+ MessageManager.getString("label.proxy_servers"));
proxyPanel.setBorder(titledBorder1);
+ GridBagConstraints gbc = new GridBagConstraints();
proxyPanel.setLayout(new GridBagLayout());
- 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.gridx = 0;
+ gbc.gridy = 0;
+ gbc.weightx = 1.0;
+ gbc.gridheight = 1;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.BOTH;
+
+ gbc.gridwidth = 5;
+ proxyPanel.add(noProxy, gbc);
+
+ gbc.gridy++;
+ proxyPanel.add(systemProxy, gbc);
+
+ gbc.gridy++;
+ proxyPanel.add(customProxy, gbc);
+
+ gbc.gridwidth = 1;
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.weightx = 0.1;
+ proxyPanel.add(httpLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(serverLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.5;
+ proxyPanel.add(proxyServerHttpTB, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(portLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(proxyPortHttpTB, gbc);
+
+ gbc.gridy++;
+ gbc.gridx = 0;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(httpsLabel, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(serverLabel2, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.5;
+ proxyPanel.add(proxyServerHttpsTB, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.EAST;
+ gbc.weightx = 0.15;
+ proxyPanel.add(portLabel2, gbc);
+
+ gbc.gridx++;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.weightx = 0.1;
+ proxyPanel.add(proxyPortHttpsTB, gbc);
+
+ 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;
}
+ private String displayUserHostPort(String user, String host, String port)
+ {
+ boolean hostBlank = (host == null || host.isEmpty());
+ boolean portBlank = (port == null || port.isEmpty());
+ if (hostBlank && portBlank)
+ {
+ return MessageManager.getString("label.none");
+ }
+
+ StringBuilder sb = new StringBuilder();
+ if (user != null)
+ {
+ sb.append(user.isEmpty() || user.indexOf(" ") > -1 ? '"' + user + '"'
+ : user);
+ sb.append("@");
+ }
+ sb.append(hostBlank ? "" : host);
+ if (!portBlank)
+ {
+ sb.append(":");
+ sb.append(port);
+ }
+ return sb.toString();
+ }
+
/**
* Initialises the checkboxes in the Connections tab
*/
}
- public void useProxy_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 = useProxy.isSelected();
+ boolean enabled = customProxy.isSelected();
portLabel.setEnabled(enabled);
serverLabel.setEnabled(enabled);
- proxyServerTB.setEnabled(enabled);
- proxyPortTB.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();
}
/**