package ovh.alexisdelhaie.curling.windows; import ovh.alexisdelhaie.curling.dataSet.HeaderModel; import javax.swing.*; import java.awt.event.*; public class AddHeader extends JDialog { public static String WINDOW_TITLE = "Ajouter une en-tĂȘte"; private JPanel contentPane; private JButton buttonOK; private JButton buttonCancel; private JTextField keyField; private JTextField valueField; private HeaderModel result; public AddHeader() { setContentPane(contentPane); setModal(true); setTitle(WINDOW_TITLE); getRootPane().setDefaultButton(buttonOK); buttonOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onOK(); } }); buttonCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onCancel(); } }); // call onCancel() when cross is clicked setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { onCancel(); } }); // call onCancel() on ESCAPE contentPane.registerKeyboardAction(new ActionListener() { public void actionPerformed(ActionEvent e) { onCancel(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); } private void onOK() { if(!keyField.getText().isBlank() && !valueField.getText().isBlank()) { result = new HeaderModel(keyField.getText(), valueField.getText()); } dispose(); } private void onCancel() { dispose(); } public HeaderModel getValue() { pack(); setVisible(true); return result; } }