package com.bagri.tools.vvm.ui;
import javax.swing.*;
import com.bagri.tools.vvm.event.ApplicationEvent;
import com.bagri.tools.vvm.model.NodeOption;
import com.bagri.tools.vvm.util.WindowUtil;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
public class EditNodeOptionDialog extends JDialog {
private static final KeyStroke ESCAPE_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
private JTextField optionName;
private JTextField optionValue;
private ActionListener successListener;
private enum Mode {
ADD,
EDIT
}
public EditNodeOptionDialog(NodeOption option, JComponent owner) {
super(WindowUtil.getFrameForComponent(owner), true);
Mode mode = option == null ? Mode.ADD: Mode.EDIT;
setTitle((mode == Mode.ADD ? "Add": "Edit") + " Option");
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints cs = new GridBagConstraints();
cs.fill = GridBagConstraints.HORIZONTAL;
JLabel lbOptionName = new JLabel("Option name: ");
cs.gridx = 0;
cs.gridy = 0;
cs.gridwidth = 1;
panel.add(lbOptionName, cs);
optionName = new JTextField(20);
cs.gridx = 1;
cs.gridy = 0;
cs.gridwidth = 2;
if (mode == Mode.EDIT) {
optionName.setText(option.getOptionName());
}
panel.add(optionName, cs);
JLabel lbOptionValue = new JLabel("OptionValue: ");
cs.gridx = 0;
cs.gridy = 1;
cs.gridwidth = 1;
panel.add(lbOptionValue, cs);
optionValue = new JTextField(20);
cs.gridx = 1;
cs.gridy = 1;
cs.gridwidth = 2;
if (mode == Mode.EDIT) {
optionValue.setText(option.getOptionValue());
}
panel.add(optionValue, cs);
JButton editButton = new JButton(mode == Mode.ADD ? "Add" : "Update");
editButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (null != successListener) {
successListener.actionPerformed(new ActionEvent(EditNodeOptionDialog.this, e.getID(), "editNodeOption"));
}
dispose();
}
});
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
JPanel bp = new JPanel();
bp.add(editButton);
bp.add(cancelButton);
getContentPane().add(panel, BorderLayout.CENTER);
getContentPane().add(bp, BorderLayout.PAGE_END);
pack();
setResizable(false);
setLocationRelativeTo(owner);
Action dispatchClosing = new AbstractAction() {
public void actionPerformed(ActionEvent event) {
dispatchEvent(new WindowEvent(
EditNodeOptionDialog.this, WindowEvent.WINDOW_CLOSING
));
}
};
JRootPane root = getRootPane();
root.setDefaultButton(editButton);
root.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ESCAPE_STROKE, ApplicationEvent.DISPATCH_WINDOW_CLOSING_ACTION);
root.getActionMap().put(ApplicationEvent.DISPATCH_WINDOW_CLOSING_ACTION, dispatchClosing );
}
public NodeOption getOption() {
return new NodeOption(optionName.getText(), optionValue.getText());
}
public void setSuccessListener(ActionListener successListener) {
this.successListener = successListener;
}
}