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.l10n.Translator;
17 import net.sf.openrocket.logging.LogHelper;
18 import net.sf.openrocket.startup.Application;
20 public class OperatorSelector extends JDialog {
22 private static final Translator trans = Application.getTranslator();
23 private static final LogHelper log = Application.getLogger();
25 private final Window parentWindow;
27 public OperatorSelector(Window parent, final ExpressionBuilderDialog parentBuilder){
29 super(parent, trans.get("CustomOperatorSelector.title"), JDialog.ModalityType.DOCUMENT_MODAL);
31 this.parentWindow = parent;
33 final JButton insertButton = new JButton(trans.get("ExpressionBuilderDialog.InsertOperator"));
35 JPanel mainPanel = new JPanel(new MigLayout());
37 //// Table of variables and model
38 final OperatorTableModel tableModel = new OperatorTableModel();
39 final JTable table = new JTable(tableModel);
41 table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
42 int width = table.getColumnModel().getTotalColumnWidth();
43 table.getColumnModel().getColumn(0).setPreferredWidth( (int) (.2 * width));
44 table.getColumnModel().getColumn(1).setPreferredWidth( (int) (.8 * width));
46 JScrollPane scrollPane = new JScrollPane(table);
47 table.setFillsViewportHeight(true);
48 table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
50 public void valueChanged(ListSelectionEvent e){
51 if (table.getSelectedRowCount() == 1){
52 insertButton.setEnabled(true);
55 insertButton.setEnabled(false);
60 mainPanel.add(scrollPane, "wrap");
63 final JButton cancelButton = new JButton(trans.get("dlg.but.cancel"));
64 cancelButton.addActionListener(new ActionListener() {
66 public void actionPerformed(ActionEvent e) {
67 OperatorSelector.this.dispose();
70 mainPanel.add(cancelButton, "right, width :100:200, split 2");
73 insertButton.addActionListener(new ActionListener() {
75 public void actionPerformed(ActionEvent e) {
76 int row = table.getSelectedRow();
77 String str = tableModel.getOperatorAt(row);
78 parentBuilder.pasteIntoExpression(str);
79 OperatorSelector.this.dispose();
82 insertButton.setEnabled(false); // disabled by default, only enable when a variable selected
83 mainPanel.add(insertButton, "right, width :100:200, wrap");
88 this.setLocationByPlatform(true);