1 package net.sf.openrocket.gui.customexpression;
3 import java.awt.Window;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
7 import javax.swing.JButton;
8 import javax.swing.JDialog;
9 import javax.swing.JPanel;
10 import javax.swing.JScrollPane;
11 import javax.swing.JTable;
12 import javax.swing.event.ListSelectionEvent;
13 import javax.swing.event.ListSelectionListener;
15 import net.miginfocom.swing.MigLayout;
16 import net.sf.openrocket.document.Simulation;
17 import net.sf.openrocket.l10n.Translator;
18 import net.sf.openrocket.logging.LogHelper;
19 import net.sf.openrocket.startup.Application;
22 * Dialog to select from available custom variables
23 * @author Richard Graham
27 public class VariableSelector extends JDialog {
29 private static final Translator trans = Application.getTranslator();
30 private static final LogHelper log = Application.getLogger();
32 private final Window parentWindow;
33 private final Simulation simulation;
35 public VariableSelector(Window parent, final ExpressionBuilderDialog parentBuilder, final Simulation simulation){
37 super(parent, trans.get("CustomVariableSelector.title"), JDialog.ModalityType.DOCUMENT_MODAL);
39 this.parentWindow = parent;
40 this.simulation = simulation;
42 final JButton insertButton = new JButton(trans.get("ExpressionBuilderDialog.InsertVariable"));
44 JPanel mainPanel = new JPanel(new MigLayout());
46 //// Table of variables and model
47 final VariableTableModel tableModel = new VariableTableModel(simulation);
48 final JTable table = new JTable(tableModel);
50 table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
51 int width = table.getColumnModel().getTotalColumnWidth();
52 table.getColumnModel().getColumn(0).setPreferredWidth( (int) (.7 * width));
53 table.getColumnModel().getColumn(1).setPreferredWidth( (int) (.15 * width));
54 table.getColumnModel().getColumn(2).setPreferredWidth( (int) (.15 * width));
56 JScrollPane scrollPane = new JScrollPane(table);
57 table.setFillsViewportHeight(true);
58 table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
60 public void valueChanged(ListSelectionEvent e){
61 if (table.getSelectedRowCount() == 1){
62 insertButton.setEnabled(true);
65 insertButton.setEnabled(false);
70 mainPanel.add(scrollPane, "wrap");
73 final JButton cancelButton = new JButton(trans.get("dlg.but.cancel"));
74 cancelButton.addActionListener(new ActionListener() {
76 public void actionPerformed(ActionEvent e) {
77 VariableSelector.this.dispose();
80 mainPanel.add(cancelButton, "right, width :100:200, split 2");
83 insertButton.addActionListener(new ActionListener() {
85 public void actionPerformed(ActionEvent e) {
86 int row = table.getSelectedRow();
87 String str = tableModel.getSymbolAt(row);
88 parentBuilder.pasteIntoExpression(str);
89 VariableSelector.this.dispose();
92 insertButton.setEnabled(false); // disabled by default, only enable when a variable selected
93 mainPanel.add(insertButton, "right, width :100:200, wrap");
98 this.setLocationByPlatform(true);