X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGPreferences.java;h=40dc4df1cf3e09d921b8808345d9ee6c8b4ed410;hb=9092d9f4c2231645b58968e964c858e010be14e2;hp=fb0b2a4039d35e9669cfc2850ba569fc6682b3f0;hpb=7664ccad29d55ad2355d72feeac23d8bdd49a2a7;p=jalview.git diff --git a/src/jalview/jbgui/GPreferences.java b/src/jalview/jbgui/GPreferences.java index fb0b2a4..40dc4df 100755 --- a/src/jalview/jbgui/GPreferences.java +++ b/src/jalview/jbgui/GPreferences.java @@ -69,6 +69,8 @@ import javax.swing.border.EtchedBorder; import javax.swing.border.TitledBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; @@ -262,7 +264,7 @@ public class GPreferences extends JPanel protected JTextField proxyAuthUsernameTB = new JTextField(); - protected JPasswordField proxyAuthPasswordTB = new JPasswordField(); + protected JPasswordField proxyAuthPasswordPB = new JPasswordField(); protected JTextField defaultBrowser = new JTextField(); @@ -274,6 +276,8 @@ public class GPreferences extends JPanel protected JRadioButton customProxy = new JRadioButton(); + protected JButton applyProxyButton = new JButton(); + protected JCheckBox usagestats = new JCheckBox(); protected JCheckBox questionnaire = new JCheckBox(); @@ -373,24 +377,18 @@ public class GPreferences extends JPanel protected JTextArea backupfilesExampleLabel = new JTextArea(); + private final JTabbedPane tabbedPane = new JTabbedPane(); + + private JLabel messageLabel = new JLabel("", JLabel.CENTER); + /** * Creates a new GPreferences object. */ public GPreferences() { - new GPreferences(0); - } - - public GPreferences(int selectTab) - { - new GPreferences(selectTab, null); - } - - public GPreferences(int selectTab, String message) - { try { - jbInit(selectTab, message); + jbInit(); } catch (Exception ex) { ex.printStackTrace(); @@ -404,28 +402,11 @@ public class GPreferences extends JPanel */ private void jbInit() throws Exception { - jbInit(0); - } - - private void jbInit(int selectTab) throws Exception - { - jbInit(selectTab, null); - } - - public final static int CONNECTIONS_TAB = 5; - - private void jbInit(int selectTab, String message) throws Exception - { - final JTabbedPane tabbedPane = new JTabbedPane(); + // final JTabbedPane tabbedPane = new JTabbedPane(); this.setLayout(new BorderLayout()); - if (message != null) - { - JLabel messageLabel = new JLabel(message, JLabel.CENTER); - messageLabel.setFont(LABEL_FONT_BOLD); - messageLabel.setForeground(Color.RED.darker()); - this.add(messageLabel, BorderLayout.NORTH); - } + // message label at top + this.add(messageLabel, BorderLayout.NORTH); JPanel okCancelPanel = initOkCancelPanel(); this.add(tabbedPane, BorderLayout.CENTER); @@ -473,6 +454,7 @@ public class GPreferences extends JPanel /* * Handler to validate a tab before leaving it - currently only for * Structure. + * Adding a clearMessage() so messages are cleared when changing tabs. */ tabbedPane.addChangeListener(new ChangeListener() { @@ -491,10 +473,47 @@ public class GPreferences extends JPanel } } lastTab = tabbedPane.getSelectedComponent(); + + clearMessage(); } }); + } + + public void setMessage(String message) + { + if (message != null) + { + messageLabel.setText(message); + messageLabel.setFont(LABEL_FONT_BOLD); + messageLabel.setForeground(Color.RED.darker()); + messageLabel.revalidate(); + messageLabel.repaint(); + } + // note message not cleared if message is null. call clearMessage() + // directly. + this.revalidate(); + this.repaint(); + } + + public void clearMessage() + { + // only repaint if message exists + if (messageLabel.getText() != null + && messageLabel.getText().length() > 0) + { + messageLabel.setText(""); + messageLabel.revalidate(); + messageLabel.repaint(); + this.revalidate(); + this.repaint(); + } + } + public final static int CONNECTIONS_TAB = 5; + + public void selectTab(int selectTab) + { // select a given tab - currently only for Connections switch (selectTab) { @@ -503,7 +522,6 @@ public class GPreferences extends JPanel break; default: } - } /** @@ -972,8 +990,60 @@ public class GPreferences extends JPanel proxyPortHttpsTB.setColumns(4); proxyAuthUsernameTB.setFont(LABEL_FONT); proxyAuthUsernameTB.setColumns(30); - proxyAuthPasswordTB.setFont(LABEL_FONT); - proxyAuthPasswordTB.setColumns(30); + + // check for any change to enable applyProxyButton + DocumentListener d = new DocumentListener() + { + @Override + public void changedUpdate(DocumentEvent e) + { + applyProxyButtonEnabled(true); + } + + @Override + public void insertUpdate(DocumentEvent e) + { + applyProxyButtonEnabled(true); + } + + @Override + public void removeUpdate(DocumentEvent e) + { + applyProxyButtonEnabled(true); + } + }; + proxyServerHttpTB.getDocument().addDocumentListener(d); + proxyPortHttpTB.getDocument().addDocumentListener(d); + proxyServerHttpsTB.getDocument().addDocumentListener(d); + proxyPortHttpsTB.getDocument().addDocumentListener(d); + proxyAuthUsernameTB.getDocument().addDocumentListener(d); + proxyAuthPasswordPB.setFont(LABEL_FONT); + proxyAuthPasswordPB.setColumns(30); + proxyAuthPasswordPB.getDocument() + .addDocumentListener(new DocumentListener() + { + @Override + public void changedUpdate(DocumentEvent e) + { + proxyAuthPasswordCheckHighlight(true); + applyProxyButtonEnabled(true); + } + + @Override + public void insertUpdate(DocumentEvent e) + { + proxyAuthPasswordCheckHighlight(true); + applyProxyButtonEnabled(true); + } + + @Override + public void removeUpdate(DocumentEvent e) + { + proxyAuthPasswordCheckHighlight(true); + applyProxyButtonEnabled(true); + } + + }); // Label for Port text box portLabel.setFont(LABEL_FONT); @@ -1165,7 +1235,7 @@ public class GPreferences extends JPanel c.gridx++; c.weightx = 1.0; c.anchor = GridBagConstraints.LINE_START; - upPanel.add(proxyAuthPasswordTB, c); + upPanel.add(proxyAuthPasswordPB, c); c.gridx++; c.weightx = 0.4; @@ -1175,9 +1245,51 @@ public class GPreferences extends JPanel gbc.gridy++; proxyPanel.add(upPanel, gbc); + applyProxyButton.setText(MessageManager.getString("action.apply")); + applyProxyButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + saveProxySettings(); + applyProxyButton.setEnabled(false); + } + }); + gbc.gridy++; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.LINE_END; + proxyPanel.add(applyProxyButton, gbc); + return proxyPanel; } + public void proxyAuthPasswordCheckHighlight(boolean enabled) + { + if (enabled && proxyType.isSelected(customProxy.getModel()) + && proxyAuth.isSelected() + && !proxyAuthUsernameTB.getText().isEmpty() + && proxyAuthPasswordPB.getDocument().getLength() == 0) + { + + proxyAuthPasswordPB.grabFocus(); + proxyAuthPasswordPB.setBackground(Color.PINK); + } + else + { + proxyAuthPasswordPB.setBackground(Color.WHITE); + } + } + + public void applyProxyButtonEnabled(boolean enabled) + { + applyProxyButton.setEnabled(enabled); + } + + public void saveProxySettings() + { + // overridden in Preferences + } + private String displayUserHostPort(String user, String host, String port) { boolean hostBlank = (host == null || host.isEmpty()); @@ -3096,7 +3208,7 @@ public class GPreferences extends JPanel proxyAuthPasswordLabel.setEnabled(enabled); passwordNotStoredLabel.setEnabled(enabled); proxyAuthUsernameTB.setEnabled(enabled); - proxyAuthPasswordTB.setEnabled(enabled); + proxyAuthPasswordPB.setEnabled(enabled); } public void setCustomProxyEnabled() @@ -3119,11 +3231,15 @@ public class GPreferences extends JPanel public void proxyType_actionPerformed() { setCustomProxyEnabled(); + proxyAuthPasswordCheckHighlight(true); + applyProxyButtonEnabled(true); } public void proxyAuth_actionPerformed() { setProxyAuthEnabled(); + proxyAuthPasswordCheckHighlight(true); + applyProxyButtonEnabled(true); } /**