📄 configureconnectorspage.java
字号:
package net.sf.dz.setup;import java.awt.GridBagConstraints;import java.awt.GridBagLayout; import java.awt.event.ActionEvent;import java.awt.event.ItemEvent;import java.util.Map;import java.awt.GridLayout;import javax.swing.BorderFactory;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import org.freehold.jukebox.logger.Logger;import net.sf.dz.util.wizard.NarrowWizardPage;import net.sf.dz.util.wizard.Wizard;public class ConfigureConnectorsPage extends NarrowWizardPage { private JPanel broadcasterPanel = new JPanel(); private JPanel controllerPanel = new JPanel(); private JTextField broadcasterBindPortText = new JTextField("5000", 5); private JTextField broadcasterAnnouncePortText = new JTextField("5001", 5); private JCheckBox broadcasterSecureBox = new JCheckBox("Secure"); private JComboBox broadcasterTransportCombo = new JComboBox(); private JTextField broadcasterPasswordText = new JTextField("", 5); private JLabel broadcasterPasswordLabel = new JLabel("Password"); private JTextField controllerBindPortText = new JTextField("5002", 5); private JTextField controllerAnnouncePortText = new JTextField("5003",5 ); private JCheckBox controllerSecureBox = new JCheckBox("Secure"); private JComboBox controllerTransportCombo = new JComboBox(); private JTextField controllerPasswordText = new JTextField("", 5); private JLabel controllerPasswordLabel = new JLabel("Password"); public ConfigureConnectorsPage(Logger logger, Wizard owner, boolean isServer) { super(logger, owner, "Configure PnP " + (isServer ? "Server" : "Client")); getNarrowPane().setLayout(new GridLayout(2, 1)); getNarrowPane().add(broadcasterPanel); getNarrowPane().add(controllerPanel); broadcasterPanel.setBorder(BorderFactory.createTitledBorder("Broadcaster")); controllerPanel.setBorder(BorderFactory.createTitledBorder("Controller")); fill(broadcasterPanel, broadcasterBindPortText, broadcasterAnnouncePortText, broadcasterSecureBox, broadcasterTransportCombo, broadcasterPasswordText, broadcasterPasswordLabel, isServer); fill(controllerPanel, controllerBindPortText, controllerAnnouncePortText, controllerSecureBox, controllerTransportCombo, controllerPasswordText, controllerPasswordLabel, isServer); } private void fill(JPanel panel, JTextField bindPortText, JTextField announcePortText, JCheckBox secureBox, JComboBox transportCombo, JTextField passwordText, JLabel passwordLabel, boolean isServer) { GridBagLayout layout = new GridBagLayout(); GridBagConstraints cs = new GridBagConstraints(); panel.setLayout(layout); passwordText.setEnabled(false); passwordLabel.setEnabled(false); cs.gridx = 0; cs.gridy = 0; cs.weightx = 1; cs.weighty = 0; cs.gridwidth = 2; cs.fill = GridBagConstraints.HORIZONTAL; layout.setConstraints(secureBox, cs); panel.add(secureBox); cs.gridy++; cs.gridwidth = 1; cs.weightx = 0; layout.setConstraints(passwordLabel, cs); panel.add(passwordLabel); cs.gridx++; cs.weightx = 1; layout.setConstraints(passwordText, cs); panel.add(passwordText); cs.gridx--; cs.gridy++; cs.gridwidth = 1; cs.weightx = 0; if ( isServer ) { JLabel bindPortLabel = new JLabel("Listen on port", JLabel.RIGHT); layout.setConstraints(bindPortLabel, cs); panel.add(bindPortLabel); cs.gridx++; cs.weightx = 1; layout.setConstraints(bindPortText, cs); panel.add(bindPortText); cs.gridx--; cs.gridy++; cs.gridwidth = 1; cs.weightx = 0; } JLabel announcePortLabel = new JLabel(isServer ? "Announce on port" : "Listen to announces on port", JLabel.RIGHT); layout.setConstraints(announcePortLabel, cs); panel.add(announcePortLabel); cs.gridx++; cs.weightx = 1; layout.setConstraints(announcePortText, cs); panel.add(announcePortText); cs.gridx--; cs.gridy++; cs.gridwidth = 1; cs.weightx = 0; JLabel transportLabel = new JLabel("Announce transport", JLabel.RIGHT); layout.setConstraints(transportLabel, cs); panel.add(transportLabel); cs.gridx++; cs.weightx = 1; layout.setConstraints(transportCombo, cs); panel.add(transportCombo); transportCombo.addItem("Unicast UDP"); transportCombo.addItem("Multicast TCP"); transportCombo.setEnabled(false); bindPortText.setHorizontalAlignment(JTextField.TRAILING); announcePortText.setHorizontalAlignment(JTextField.TRAILING); bindPortText.addActionListener(this); announcePortText.addActionListener(this); secureBox.addItemListener(this); transportCombo.addActionListener(this); passwordText.addActionListener(this); bindPortText.addCaretListener(this); announcePortText.addCaretListener(this); passwordText.addCaretListener(this); } public String getHelpURL() { return "FIXME"; } public String validate() { if ( (broadcasterSecureBox.isSelected() && "".equals(broadcasterPasswordText.getText())) || (controllerSecureBox.isSelected() && "".equals(controllerPasswordText.getText()))) { return "Empty passwords are not allowed"; } String p = checkPort(broadcasterBindPortText.getText()); if ( !"".equals(p) ) { return p; } p = checkPort(broadcasterAnnouncePortText.getText()); if ( !"".equals(p) ) { return p; } p = checkPort(controllerBindPortText.getText()); if ( !"".equals(p) ) { return p; } p = checkPort(controllerBindPortText.getText()); if ( !"".equals(p) ) { return p; } Map context = getOwner().getContext(); context.put("connector.broadcaster.secure", new Boolean(broadcasterSecureBox.isSelected())); context.put("connector.broadcaster.password", broadcasterPasswordText.getText()); context.put("connector.broadcaster.bind", broadcasterBindPortText.getText()); context.put("connector.broadcaster.announce", broadcasterAnnouncePortText.getText()); context.put("connector.broadcaster.announce.transport.udp", broadcasterTransportCombo.getSelectedItem().toString()); context.put("connector.controller.secure", new Boolean(controllerSecureBox.isSelected())); context.put("connector.controller.password", controllerPasswordText.getText()); context.put("connector.controller.bind", controllerBindPortText.getText()); context.put("connector.controller.announce", controllerAnnouncePortText.getText()); context.put("connector.controller.announce.transport.udp", controllerTransportCombo.getSelectedItem().toString()); return ""; } /** * Check if the port value is good enough. * * "Good" enough means that it can be parsed into an integer, is * more than 1024 (no privileged ports here), and less than 65535. * * @param port String representation of port number * * @return Empty string if port is OK. */ private String checkPort(String port) { try { long p = Long.parseLong(port); if ( p < 1024L ) { return "Privileged (< 1024) ports are not allowed"; } if ( p > 65535L ) { return "Port number is too high (" + port + ")"; } } catch ( Throwable t ) { return "Bad port '" + port + "': not a number"; } return ""; } protected void actionPerformed2(ActionEvent e) { //complain("Connector: " + e); } protected void itemStateChanged2(ItemEvent e) { broadcasterPasswordText.setEnabled(broadcasterSecureBox.isSelected()); controllerPasswordText.setEnabled(controllerSecureBox.isSelected()); broadcasterPasswordLabel.setEnabled(broadcasterSecureBox.isSelected()); controllerPasswordLabel.setEnabled(controllerSecureBox.isSelected()); //getOwner().getContext().put("1-Wire driver.owapi", new Boolean(owapiRadio.isSelected())); } public boolean isEnabled() { return true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -