package me.drton.flightplot;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.*;
import java.util.*;
public class FieldsListDialog extends JDialog {
private JPanel contentPane;
private JButton buttonAdd;
private JTable fieldsTable;
private JButton buttonClose;
private DefaultTableModel fieldsTableModel;
public FieldsListDialog(final Runnable callbackAdd) {
setContentPane(contentPane);
setModal(true);
setTitle("Fields List");
getRootPane().setDefaultButton(buttonAdd);
buttonAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
callbackAdd.run();
}
});
buttonClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onClose();
}
});
// call onClose() when cross is clicked
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
onClose();
}
});
// call onClose() on ESCAPE
contentPane.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onClose();
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
}
private void onClose() {
setVisible(false);
}
public void setFieldsList(Map<String, String> fields) {
while (fieldsTableModel.getRowCount() > 0) {
fieldsTableModel.removeRow(0);
}
List<String> fieldsList = new ArrayList<String>(fields.keySet());
Collections.sort(fieldsList);
for (String field : fieldsList) {
fieldsTableModel.addRow(new Object[]{field, fields.get(field)});
}
}
public List<String> getSelectedFields() {
List<String> selectedFields = new ArrayList<String>();
for (int i : fieldsTable.getSelectedRows()) {
selectedFields.add((String) fieldsTableModel.getValueAt(i, 0));
}
return selectedFields;
}
private void createUIComponents() {
// Fields table
fieldsTableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
};
fieldsTableModel.addColumn("Field");
fieldsTableModel.addColumn("Type");
fieldsTable = new JTable(fieldsTableModel);
}
}