package com.swingsane.gui.dialog; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.InetAddress; import java.net.UnknownHostException; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.JTextField; import javax.swing.SpinnerNumberModel; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.WindowConstants; import javax.swing.border.EmptyBorder; import org.apache.log4j.Logger; import com.swingsane.i18n.Localizer; /** * @author Roland Quast (roland@formreturn.com) * */ @SuppressWarnings("serial") public class ScannerSettingsDialog extends JDialog { /** * Log4J logger. */ private static final Logger LOG = Logger.getLogger(ScannerSettingsDialog.class); private static final int BOUNDS_WIDTH = 400; private static final int BOUNDS_HEIGHT = 260; private final Dimension bounds = new Dimension(BOUNDS_WIDTH, BOUNDS_HEIGHT); private JTextField remoteAddressTextField; private JSpinner portNumberSpinner; private int dialogResult = JOptionPane.CANCEL_OPTION; private JTextField descriptionTextField; public ScannerSettingsDialog(Component parent) { initComponents(); pack(); setLocationRelativeTo(parent); } private void cancelButtonActionPerformed(ActionEvent e) { dispose(); } public final String getDescription() { return descriptionTextField.getText().trim(); } public final int getDialogResult() { return dialogResult; } public final int getPortNumber() { return (Integer) portNumberSpinner.getValue(); } public final String getRemoteAddress() { return remoteAddressTextField.getText().trim(); } private void initComponents() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setResizable(false); setBounds(0, 0, bounds.width, bounds.height); setPreferredSize(bounds); setSize(bounds); setMinimumSize(bounds); JPanel contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(12, 12, 12, 12)); getContentPane().add(contentPane, BorderLayout.CENTER); GridBagLayout gbl_contentPane = new GridBagLayout(); gbl_contentPane.columnWidths = new int[] { 0, 0 }; gbl_contentPane.rowHeights = new int[] { 0, 0, 0 }; gbl_contentPane.columnWeights = new double[] { 1.0, Double.MIN_VALUE }; gbl_contentPane.rowWeights = new double[] { 1.0, 0.0, Double.MIN_VALUE }; contentPane.setLayout(gbl_contentPane); JPanel containerPanel = new JPanel(); GridBagConstraints gbc_containerPanel = new GridBagConstraints(); gbc_containerPanel.insets = new Insets(0, 0, 5, 0); gbc_containerPanel.fill = GridBagConstraints.BOTH; gbc_containerPanel.gridx = 0; gbc_containerPanel.gridy = 0; contentPane.add(containerPanel, gbc_containerPanel); GridBagLayout gbl_containerPanel = new GridBagLayout(); gbl_containerPanel.columnWidths = new int[] { 116, 0, 0 }; gbl_containerPanel.rowHeights = new int[] { 0, 15, 0, 0 }; gbl_containerPanel.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE }; gbl_containerPanel.rowWeights = new double[] { 1.0, 1.0, 1.0, Double.MIN_VALUE }; containerPanel.setLayout(gbl_containerPanel); JLabel descriptionLabel = new JLabel(Localizer.localize("DescriptionLabelText")); descriptionLabel.setFont(UIManager.getFont("Label.font")); GridBagConstraints gbc_descriptionLabel = new GridBagConstraints(); gbc_descriptionLabel.anchor = GridBagConstraints.EAST; gbc_descriptionLabel.insets = new Insets(0, 0, 5, 5); gbc_descriptionLabel.gridx = 0; gbc_descriptionLabel.gridy = 0; containerPanel.add(descriptionLabel, gbc_descriptionLabel); JPanel descriptionTextAreaPanel = new JPanel(); GridBagConstraints gbc_descriptionTextAreaPanel = new GridBagConstraints(); gbc_descriptionTextAreaPanel.insets = new Insets(0, 0, 5, 0); gbc_descriptionTextAreaPanel.fill = GridBagConstraints.BOTH; gbc_descriptionTextAreaPanel.gridx = 1; gbc_descriptionTextAreaPanel.gridy = 0; containerPanel.add(descriptionTextAreaPanel, gbc_descriptionTextAreaPanel); GridBagLayout gbl_descriptionTextAreaPanel = new GridBagLayout(); gbl_descriptionTextAreaPanel.columnWidths = new int[] { 114, 0 }; gbl_descriptionTextAreaPanel.rowHeights = new int[] { 0, 19, 0 }; gbl_descriptionTextAreaPanel.columnWeights = new double[] { 1.0, Double.MIN_VALUE }; gbl_descriptionTextAreaPanel.rowWeights = new double[] { 1.0, 1.0, Double.MIN_VALUE }; descriptionTextAreaPanel.setLayout(gbl_descriptionTextAreaPanel); JLabel descriptionTipLabel = new JLabel(Localizer.localize("DescriptionTipLabelText")); descriptionTipLabel.setIcon(new ImageIcon(ScannerSettingsDialog.class .getResource("/com/famfamfam/silk/lightbulb.png"))); descriptionTipLabel.setFont(new Font("Dialog", Font.BOLD, 9)); GridBagConstraints gbc_descriptionTipLabel = new GridBagConstraints(); gbc_descriptionTipLabel.anchor = GridBagConstraints.SOUTH; gbc_descriptionTipLabel.insets = new Insets(0, 0, 5, 0); gbc_descriptionTipLabel.gridx = 0; gbc_descriptionTipLabel.gridy = 0; descriptionTextAreaPanel.add(descriptionTipLabel, gbc_descriptionTipLabel); descriptionTextField = new JTextField(); GridBagConstraints gbc_descriptionTextField = new GridBagConstraints(); gbc_descriptionTextField.anchor = GridBagConstraints.NORTH; gbc_descriptionTextField.fill = GridBagConstraints.HORIZONTAL; gbc_descriptionTextField.gridx = 0; gbc_descriptionTextField.gridy = 1; descriptionTextAreaPanel.add(descriptionTextField, gbc_descriptionTextField); descriptionTextField.setHorizontalAlignment(SwingConstants.RIGHT); descriptionTextField.setFont(UIManager.getFont("TextField.font")); descriptionTextField.setColumns(10); JLabel remoteAddressLabel = new JLabel(Localizer.localize("RemoteAddressLabelText")); GridBagConstraints gbc_remoteAddressLabel = new GridBagConstraints(); gbc_remoteAddressLabel.insets = new Insets(0, 0, 5, 5); gbc_remoteAddressLabel.anchor = GridBagConstraints.EAST; gbc_remoteAddressLabel.gridx = 0; gbc_remoteAddressLabel.gridy = 1; containerPanel.add(remoteAddressLabel, gbc_remoteAddressLabel); remoteAddressLabel.setFont(UIManager.getFont("Label.font")); remoteAddressTextField = new JTextField(); GridBagConstraints gbc_remoteAddressTextField = new GridBagConstraints(); gbc_remoteAddressTextField.insets = new Insets(0, 0, 5, 0); gbc_remoteAddressTextField.fill = GridBagConstraints.HORIZONTAL; gbc_remoteAddressTextField.gridx = 1; gbc_remoteAddressTextField.gridy = 1; containerPanel.add(remoteAddressTextField, gbc_remoteAddressTextField); remoteAddressTextField.setFont(UIManager.getFont("TextField.font")); remoteAddressTextField.setHorizontalAlignment(SwingConstants.TRAILING); try { remoteAddressTextField.setText(InetAddress.getLocalHost().getHostAddress()); } catch (UnknownHostException ex) { LOG.warn(ex, ex); } remoteAddressTextField.setColumns(10); JLabel portNumberLabel = new JLabel(Localizer.localize("PortNumberLabelText")); GridBagConstraints gbc_portNumberLabel = new GridBagConstraints(); gbc_portNumberLabel.anchor = GridBagConstraints.EAST; gbc_portNumberLabel.insets = new Insets(0, 0, 0, 5); gbc_portNumberLabel.gridx = 0; gbc_portNumberLabel.gridy = 2; containerPanel.add(portNumberLabel, gbc_portNumberLabel); portNumberLabel.setFont(UIManager.getFont("Label.font")); portNumberSpinner = new JSpinner(); GridBagConstraints gbc_portNumberSpinner = new GridBagConstraints(); gbc_portNumberSpinner.fill = GridBagConstraints.HORIZONTAL; gbc_portNumberSpinner.gridx = 1; gbc_portNumberSpinner.gridy = 2; containerPanel.add(portNumberSpinner, gbc_portNumberSpinner); portNumberSpinner.setFont(UIManager.getFont("Spinner.font")); portNumberSpinner.setModel(new SpinnerNumberModel(6566, 1, 65535, 1)); JPanel buttonPanel = new JPanel(); GridBagConstraints gbc_buttonPanel = new GridBagConstraints(); gbc_buttonPanel.fill = GridBagConstraints.BOTH; gbc_buttonPanel.gridx = 0; gbc_buttonPanel.gridy = 1; contentPane.add(buttonPanel, gbc_buttonPanel); GridBagLayout gbl_buttonPanel = new GridBagLayout(); gbl_buttonPanel.columnWidths = new int[] { 0, 0, 0, 0 }; gbl_buttonPanel.rowHeights = new int[] { 0, 0 }; gbl_buttonPanel.columnWeights = new double[] { 1.0, 0.0, 0.0, Double.MIN_VALUE }; gbl_buttonPanel.rowWeights = new double[] { 0.0, Double.MIN_VALUE }; buttonPanel.setLayout(gbl_buttonPanel); JButton okButton = new JButton(Localizer.localize("OK")); okButton.setIcon(new ImageIcon(ScannerSettingsDialog.class .getResource("/com/famfamfam/silk/tick.png"))); okButton.setFont(UIManager.getFont("Button.font")); okButton.setMargin(new Insets(1, 5, 1, 5)); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { okButtonActionPerformed(e); } }); GridBagConstraints gbc_okButton = new GridBagConstraints(); gbc_okButton.insets = new Insets(0, 0, 0, 5); gbc_okButton.gridx = 1; gbc_okButton.gridy = 0; buttonPanel.add(okButton, gbc_okButton); JButton cancelButton = new JButton(Localizer.localize("Cancel")); cancelButton.setIcon(new ImageIcon(ScannerSettingsDialog.class .getResource("/com/famfamfam/silk/cross.png"))); cancelButton.setFont(UIManager.getFont("Button.font")); cancelButton.setMargin(new Insets(1, 5, 1, 5)); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cancelButtonActionPerformed(e); } }); GridBagConstraints gbc_cancelButton = new GridBagConstraints(); gbc_cancelButton.gridx = 2; gbc_cancelButton.gridy = 0; buttonPanel.add(cancelButton, gbc_cancelButton); } private void okButtonActionPerformed(ActionEvent e) { dialogResult = JOptionPane.OK_OPTION; dispose(); } public final void setDescription(String description) { descriptionTextField.setText(description); } public final void setRemoteAddress(String remoteAddress) { remoteAddressTextField.setText(remoteAddress); } public final void setRemotePortNumber(Integer portNumber) { portNumberSpinner.setValue(portNumber); } }