Mercurial > hg > release > icedtea-web-1.1
changeset 201:24f034f372e4
Restrict port fields in itw-settings to accept only valid port numbers.
author | Andrew Su <asu@redhat.com> |
---|---|
date | Wed, 06 Apr 2011 10:02:46 -0400 |
parents | eea730466b87 |
children | 225421c775dd |
files | ChangeLog netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java netx/net/sourceforge/jnlp/resources/Messages.properties |
diffstat | 4 files changed, 57 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue Apr 05 14:38:22 2011 -0400 +++ b/ChangeLog Wed Apr 06 10:02:46 2011 -0400 @@ -1,3 +1,14 @@ +2011-04-06 Andrew Su <asu@redhat.com> + + * netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java: + (addComponents): Changed all port fields to use document which + prevents input of non-valid port numbers. + * netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java: + (addComponents): likewise. + (getPortNumberDocument): New method. + * netx/net/sourceforge/jnlp/resources/Messages.properties: + Added CPInvalidPort and CPInvalidPortTitle. + 2011-04-05 Denis Lila <dlila@redhat.com> * plugin/icedteanp/java/netscape/javascript/JSObject.java:
--- a/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java Tue Apr 05 14:38:22 2011 -0400 +++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsPane.java Wed Apr 06 10:02:46 2011 -0400 @@ -114,30 +114,38 @@ // This addresses the HTTP proxy settings. JLabel http = new JLabel(Translator.R("APSLabelHTTP") + ":"); final JTextField httpAddressField = new JTextField(fields[0]); - final JTextField httpPortField = new JTextField(fields[1]); + final JTextField httpPortField = new JTextField(); + httpPortField.setDocument(NetworkSettingsPanel.getPortNumberDocument()); httpAddressField.getDocument().addDocumentListener(new DocumentAdapter(fields, 0)); httpPortField.getDocument().addDocumentListener(new DocumentAdapter(fields, 1)); + httpPortField.setText(fields[1]); // This addresses the HTTPS proxy settings. JLabel secure = new JLabel(Translator.R("APSLabelSecure") + ":"); final JTextField secureAddressField = new JTextField(fields[2]); - final JTextField securePortField = new JTextField(fields[3]); + final JTextField securePortField = new JTextField(); + securePortField.setDocument(NetworkSettingsPanel.getPortNumberDocument()); secureAddressField.getDocument().addDocumentListener(new DocumentAdapter(fields, 2)); securePortField.getDocument().addDocumentListener(new DocumentAdapter(fields, 3)); + securePortField.setText(fields[3]); // This addresses the FTP proxy settings. JLabel ftp = new JLabel(Translator.R("APSLabelFTP") + ":"); final JTextField ftpAddressField = new JTextField(fields[4]); - final JTextField ftpPortField = new JTextField(fields[5]); + final JTextField ftpPortField = new JTextField(); + ftpPortField.setDocument(NetworkSettingsPanel.getPortNumberDocument()); ftpAddressField.getDocument().addDocumentListener(new DocumentAdapter(fields, 4)); ftpPortField.getDocument().addDocumentListener(new DocumentAdapter(fields, 5)); + ftpPortField.setText(fields[5]); // This addresses the Socks proxy settings. JLabel socks = new JLabel(Translator.R("APSLabelSocks") + ":"); final JTextField socksAddressField = new JTextField(fields[6]); - final JTextField socksPortField = new JTextField(fields[7]); + final JTextField socksPortField = new JTextField(); + socksPortField.setDocument(NetworkSettingsPanel.getPortNumberDocument()); socksAddressField.getDocument().addDocumentListener(new DocumentAdapter(fields, 6)); socksPortField.getDocument().addDocumentListener(new DocumentAdapter(fields, 7)); + socksPortField.setText(fields[7]); JCheckBox sameProxyForAll = new JCheckBox(Translator.R("APSSameProxyForAllProtocols"), Boolean.parseBoolean(fields[8])); sameProxyForAll.addItemListener(new ItemListener() {
--- a/netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java Tue Apr 05 14:38:22 2011 -0400 +++ b/netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java Wed Apr 06 10:02:46 2011 -0400 @@ -36,9 +36,13 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.PlainDocument; import net.sourceforge.jnlp.config.DeploymentConfiguration; import net.sourceforge.jnlp.runtime.Translator; @@ -113,8 +117,10 @@ final JTextField addressField = new JTextField(config.getProperty(properties[1]), 10); addressField.getDocument().addDocumentListener(new DocumentAdapter(config, properties[1])); - final JTextField portField = new JTextField(config.getProperty(properties[2]), 3); + final JTextField portField = new JTextField(5); + portField.setDocument(NetworkSettingsPanel.getPortNumberDocument()); portField.getDocument().addDocumentListener(new DocumentAdapter(config, properties[2])); + portField.setText(config.getProperty(properties[2])); // Create the button which allows setting of other types of proxy. JButton advancedProxyButton = new JButton(Translator.R("NSAdvanced") + "..."); @@ -254,4 +260,29 @@ enablePanel(panel, false); } } + + /** + * Creates a PlainDocument that only take numbers if it will create a valid port number. + * @return PlainDocument which will ensure numeric values only and is a valid port number. + */ + public static PlainDocument getPortNumberDocument(){ + return new PlainDocument(){ + public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { + if (str != null) { + try { + Integer.valueOf(str); + int val = Integer.valueOf(this.getText(0, this.getLength()) + str); + if (val < 1 || val > 65535) { // Invalid port number if true + throw new NumberFormatException("Invalid port number"); + } + super.insertString(offs, str, a); + } catch (Exception e) { + JOptionPane.showMessageDialog(null, Translator.R("CPInvalidPort"), Translator.R("CPInvalidPortTitle") + , JOptionPane.WARNING_MESSAGE); + } + } + return; + } + }; + } }
--- a/netx/net/sourceforge/jnlp/resources/Messages.properties Tue Apr 05 14:38:22 2011 -0400 +++ b/netx/net/sourceforge/jnlp/resources/Messages.properties Wed Apr 06 10:02:46 2011 -0400 @@ -407,6 +407,8 @@ # Control Panel - Misc. CPJRESupport=IcedTea-Web currently does not support the use of multiple JREs. +CPInvalidPort=Invalid port number given.\n[Valid port numbers are 1-65535] +CPInvalidPortTitle=Error on input. # command line control panel CLNoInfo=No information avaiable (is this a valid option?).