package icy.gui.preferences; import icy.gui.component.IcyTextField; import icy.gui.dialog.ActionDialog; import icy.gui.util.ComponentUtil; import icy.preferences.RepositoryPreferences.RepositoryInfo; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class EditRepositoryDialog extends ActionDialog { /** * */ private static final long serialVersionUID = 893945926064333575L; // GUI IcyTextField nameField; IcyTextField locationField; JCheckBox supportParamCheckBox; JCheckBox authCheckBox; IcyTextField loginField; JPasswordField passwordField; JLabel nameLabel; JLabel locationLabel; JLabel supportParamLabel; JLabel authLabel; JLabel loginLabel; JLabel passwordLabel; // internal final RepositoryInfo reposInf; /** * Create the dialog. */ public EditRepositoryDialog(String title, RepositoryInfo reposInf) { super(title); this.reposInf = reposInf; initialize(); updateAuthFields(); // center on screen and make it visible pack(); ComponentUtil.center(this); setVisible(true); } private void initialize() { setMinimumSize(new Dimension(400, 200)); setBounds(100, 100, 450, 300); // setPreferredSize(new Dimension(600, 200)); nameField = new IcyTextField(); nameField.setText(reposInf.getName()); ComponentUtil.setFixedHeight(nameField, 24); locationField = new IcyTextField(); locationField.setText(reposInf.getLocation()); ComponentUtil.setFixedHeight(locationField, 24); authCheckBox = new JCheckBox("", reposInf.isAuthenticationEnabled()); ComponentUtil.setFixedHeight(authCheckBox, 24); loginField = new IcyTextField(reposInf.getLogin()); loginField.setText(reposInf.getLogin()); ComponentUtil.setFixedHeight(loginField, 24); passwordField = new JPasswordField(reposInf.getPassword()); ComponentUtil.setFixedHeight(passwordField, 24); supportParamCheckBox = new JCheckBox("", reposInf.getSupportParam()); ComponentUtil.setFixedHeight(supportParamCheckBox, 24); authCheckBox.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { updateAuthFields(); } }); // save changes on validation setOkAction(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { reposInf.setName(nameField.getText()); reposInf.setLocation(locationField.getText()); reposInf.setSupportParam(supportParamCheckBox.isSelected()); reposInf.setAuthenticationEnabled(authCheckBox.isSelected()); reposInf.setLogin(loginField.getText()); reposInf.setPassword(new String(passwordField.getPassword())); } }); mainPanel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); mainPanel.setLayout(new BorderLayout(8, 8)); final JPanel labelPanel = new JPanel(); labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.PAGE_AXIS)); nameLabel = new JLabel("Name"); nameLabel.setToolTipText("Repository name"); ComponentUtil.setFixedHeight(nameLabel, 24); locationLabel = new JLabel("Location"); locationLabel.setToolTipText("Repository address"); ComponentUtil.setFixedHeight(locationLabel, 24); supportParamLabel = new JLabel("Enable extra parameters"); supportParamLabel.setToolTipText("Enable extra parameters when querying the XML file (only for online repository)"); ComponentUtil.setFixedHeight(supportParamLabel, 24); authLabel = new JLabel("Use authentication"); authLabel.setToolTipText("Enable authentication to access the repository"); ComponentUtil.setFixedHeight(authLabel, 24); loginLabel = new JLabel("Login"); ComponentUtil.setFixedHeight(loginLabel, 24); passwordLabel = new JLabel("Password"); ComponentUtil.setFixedHeight(passwordLabel, 24); labelPanel.add(nameLabel); labelPanel.add(Box.createVerticalStrut(4)); labelPanel.add(locationLabel); labelPanel.add(Box.createVerticalStrut(4)); labelPanel.add(supportParamLabel); labelPanel.add(Box.createVerticalStrut(4)); labelPanel.add(authLabel); labelPanel.add(Box.createVerticalStrut(4)); labelPanel.add(loginLabel); labelPanel.add(Box.createVerticalStrut(4)); labelPanel.add(passwordLabel); labelPanel.add(Box.createVerticalGlue()); final JPanel fieldPanel = new JPanel(); fieldPanel.setLayout(new BoxLayout(fieldPanel, BoxLayout.PAGE_AXIS)); fieldPanel.add(nameField); fieldPanel.add(Box.createVerticalStrut(4)); fieldPanel.add(locationField); fieldPanel.add(Box.createVerticalStrut(4)); fieldPanel.add(supportParamCheckBox); fieldPanel.add(Box.createVerticalStrut(4)); fieldPanel.add(authCheckBox); fieldPanel.add(Box.createVerticalStrut(4)); fieldPanel.add(loginField); fieldPanel.add(Box.createVerticalStrut(4)); fieldPanel.add(passwordField); fieldPanel.add(Box.createVerticalGlue()); mainPanel.add(labelPanel, BorderLayout.WEST); mainPanel.add(fieldPanel, BorderLayout.CENTER); } void updateAuthFields() { final boolean enabled = authCheckBox.isSelected(); loginLabel.setEnabled(enabled); loginField.setEnabled(enabled); passwordLabel.setEnabled(enabled); passwordField.setEnabled(enabled); } }