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;
protected JTextField proxyAuthUsernameTB = new JTextField();
- protected JPasswordField proxyAuthPasswordTB = new JPasswordField();
+ protected JPasswordField proxyAuthPasswordPB = new JPasswordField();
protected JTextField defaultBrowser = new JTextField();
protected JRadioButton customProxy = new JRadioButton();
+ protected JButton applyProxyButton = new JButton();
+
protected JCheckBox usagestats = new JCheckBox();
protected JCheckBox questionnaire = new JCheckBox();
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();
*/
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);
/*
* 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()
{
}
}
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)
{
break;
default:
}
-
}
/**
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);
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;
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)
+ {
+ proxyAuthPasswordCheckHighlight(enabled, false);
+ }
+
+ public void proxyAuthPasswordCheckHighlight(boolean enabled,
+ boolean grabFocus)
+ {
+ if (enabled && proxyType.isSelected(customProxy.getModel())
+ && proxyAuth.isSelected()
+ && !proxyAuthUsernameTB.getText().isEmpty()
+ && proxyAuthPasswordPB.getDocument().getLength() == 0)
+ {
+ if (grabFocus)
+ 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());
proxyAuthPasswordLabel.setEnabled(enabled);
passwordNotStoredLabel.setEnabled(enabled);
proxyAuthUsernameTB.setEnabled(enabled);
- proxyAuthPasswordTB.setEnabled(enabled);
+ proxyAuthPasswordPB.setEnabled(enabled);
}
public void setCustomProxyEnabled()
public void proxyType_actionPerformed()
{
setCustomProxyEnabled();
+ proxyAuthPasswordCheckHighlight(true);
+ applyProxyButtonEnabled(true);
}
public void proxyAuth_actionPerformed()
{
setProxyAuthEnabled();
+ proxyAuthPasswordCheckHighlight(true);
+ applyProxyButtonEnabled(true);
}
/**