package me.drton.flightplot;
import me.drton.flightplot.processors.PlotProcessor;
import javax.swing.*;
import java.awt.event.*;
public class AddProcessorDialog extends JDialog {
private JPanel contentPane;
private JButton buttonOK;
private JButton buttonCancel;
private JTextField titleField;
private JList processorTypesList;
private DefaultListModel processorTypesListModel;
private String[] processorTypes;
private ProcessorPreset origProcessorPreset = null;
private Runnable callback;
public AddProcessorDialog(String[] processorTypes) {
this.processorTypes = processorTypes;
//this.processorTypes = processorTypes;
setContentPane(contentPane);
setModal(true);
setTitle("Add Processor");
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);
}
public String getProcessorTitle() {
return titleField.getText();
}
public ProcessorPreset getOrigProcessorPreset() {
return origProcessorPreset;
}
public String getProcessorType() {
return (String) processorTypesList.getSelectedValue();
}
public void display(Runnable callback, ProcessorPreset processorPreset) {
if (processorTypesListModel.size() == 0) {
for (String processorType : processorTypes) {
processorTypesListModel.addElement(processorType);
}
processorTypesList.setSelectedValue("Simple", true);
}
this.callback = callback;
if (processorPreset != null) {
origProcessorPreset = processorPreset;
titleField.setText(processorPreset.getTitle());
processorTypesList.setSelectedValue(processorPreset.getProcessorType(), true);
} else {
origProcessorPreset = null;
titleField.setText("");
}
titleField.requestFocus();
this.setVisible(true);
}
private void onOK() {
setVisible(false);
callback.run();
}
private void onCancel() {
setVisible(false);
}
private void createUIComponents() {
processorTypesListModel = new DefaultListModel();
processorTypesList = new JList(processorTypesListModel);
}
}