package org.wavescale.sourcesync.ui; import org.wavescale.sourcesync.factory.ModuleConnectionConfig; import javax.swing.*; import java.awt.event.*; public class ModuleConnectionConfigDialog extends CenterDialog { private JPanel contentPane; private JButton buttonOK; private JButton buttonCancel; private JComboBox cbModuleConnection; private String moduleName; @SuppressWarnings("unchecked") public ModuleConnectionConfigDialog(String moduleName, String[] connectionConfigNames) { this.setTitle("Choose connection for " + moduleName); setContentPane(contentPane); setModal(true); getRootPane().setDefaultButton(buttonOK); this.moduleName = moduleName; 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); for (String item : connectionConfigNames) { this.cbModuleConnection.addItem(item); } pack(); centerOnParent(); setVisible(true); } private void onOK() { String connectionConfig = (String) cbModuleConnection.getSelectedItem(); ModuleConnectionConfig.getInstance().associateModuleWithConnection(moduleName, connectionConfig); ModuleConnectionConfig.getInstance().saveModuleAssociatedConn(); dispose(); } private void onCancel() { // add your code here if necessary dispose(); } }