diff --git a/core/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java b/core/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java
index 57852699e..7d97f24ab 100644
--- a/core/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java
+++ b/core/src/net/sf/openrocket/gui/adaptors/MotorConfigurationModel.java
@@ -11,7 +11,7 @@ import javax.swing.event.EventListenerList;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
-import net.sf.openrocket.gui.dialogs.EditMotorConfigurationDialog;
+import net.sf.openrocket.gui.dialogs.flightconfiguration.FlightConfigurationDialog;
import net.sf.openrocket.gui.main.BasicFrame;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.rocketcomponent.ComponentChangeEvent;
@@ -76,7 +76,7 @@ public class MotorConfigurationModel implements ComboBoxModel, StateChangeListen
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
- new EditMotorConfigurationDialog(rocket, BasicFrame.findFrame(rocket))
+ new FlightConfigurationDialog(rocket, BasicFrame.findFrame(rocket))
.setVisible(true);
}
});
diff --git a/core/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationDialog.java
similarity index 56%
rename from core/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java
rename to core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationDialog.java
index 3934ff93a..1192ca0f5 100644
--- a/core/src/net/sf/openrocket/gui/dialogs/EditMotorConfigurationDialog.java
+++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/FlightConfigurationDialog.java
@@ -1,4 +1,4 @@
-package net.sf.openrocket.gui.dialogs;
+package net.sf.openrocket.gui.dialogs.flightconfiguration;
import java.awt.Window;
import java.awt.event.ActionEvent;
@@ -22,7 +22,6 @@ import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
-import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
@@ -37,31 +36,26 @@ import net.sf.openrocket.rocketcomponent.MotorMount;
import net.sf.openrocket.rocketcomponent.Rocket;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.startup.Application;
-import net.sf.openrocket.util.Chars;
-public class EditMotorConfigurationDialog extends JDialog {
+public class FlightConfigurationDialog extends JDialog {
- private final Rocket rocket;
+ final Rocket rocket;
- private final MotorMount[] mounts;
+ final MotorMount[] mounts;
private final JTable configurationTable;
- private final MotorConfigurationTableModel configurationTableModel;
+ final MotorConfigurationTableModel configurationTableModel;
private final JButton newConfButton, removeConfButton;
private final JButton selectMotorButton, removeMotorButton;
- private final JTextField configurationNameField;
-
private String currentID = null;
private MotorMount currentMount = null;
- // Positive when user is modifying configuration name
- private int configurationNameModification = 0;
- private static final Translator trans = Application.getTranslator();
+ static final Translator trans = Application.getTranslator();
- public EditMotorConfigurationDialog(final Rocket rocket, Window parent) {
+ public FlightConfigurationDialog(final Rocket rocket, Window parent) {
//// Edit motor configurations
super(parent, trans.get("edtmotorconfdlg.title.Editmotorconf"));
@@ -74,22 +68,24 @@ public class EditMotorConfigurationDialog extends JDialog {
mounts = getPotentialMotorMounts();
-
-
- JPanel panel = new JPanel(new MigLayout("fill, flowy"));
-
-
+ JPanel panel = new JPanel(new MigLayout("fill, wrap 5"));
+
//// Motor mount selection
//// Motor mounts:
JLabel label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motormounts"));
panel.add(label, "gapbottom para");
+ //// Motor selection
+ //// Motor configurations:
+ label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motorconfig"));
+ panel.add(label, "span 4, gapbottom para");
+
//// Select which components function as motor mounts:
label = new JLabel(trans.get("edtmotorconfdlg.selectcomp"));
- panel.add(label, "ay 100%, w 1px, growx");
+ panel.add(label, "ay 100%, w 1px, growx, wrap");
-
- JTable table = new JTable(new MotorMountTableModel());
+ //// Motor Mount selection
+ JTable table = new JTable(new MotorMountTableModel(this));
table.setTableHeader(null);
table.setShowVerticalLines(false);
table.setRowSelectionAllowed(false);
@@ -103,106 +99,14 @@ public class EditMotorConfigurationDialog extends JDialog {
col0.setMaxWidth(w);
table.addMouseListener(new GUIUtil.BooleanTableClickListener(table));
-
JScrollPane scroll = new JScrollPane(table);
- panel.add(scroll, "w 200lp, h 150lp, grow, wrap 20lp");
+ panel.add(scroll, "w 200lp, h 150lp, grow");
-
-
-
-
- //// Motor selection
- //// Motor configurations:
- label = new JLabel(trans.get("edtmotorconfdlg.lbl.Motorconfig"));
- panel.add(label, "spanx, gapbottom para");
-
- //// Configuration name:
- label = new JLabel(trans.get("edtmotorconfdlg.lbl.Configname"));
- //// Leave name empty for default.
- String tip = trans.get("edtmotorconfdlg.lbl.Leavenamedefault");
- label.setToolTipText(tip);
- panel.add(label, "");
-
- configurationNameField = new JTextField(10);
- configurationNameField.setToolTipText(tip);
- configurationNameField.getDocument().addDocumentListener(new DocumentListener() {
- @Override
- public void changedUpdate(DocumentEvent e) {
- update();
- }
-
- @Override
- public void insertUpdate(DocumentEvent e) {
- update();
- }
-
- @Override
- public void removeUpdate(DocumentEvent e) {
- update();
- }
-
- private void update() {
- if (configurationNameModification != 0)
- return;
-
- String text = configurationNameField.getText();
- if (currentID != null) {
- configurationNameModification++;
- rocket.setMotorConfigurationName(currentID, text);
- int row = configurationTable.getSelectedRow();
- configurationTableModel.fireTableCellUpdated(row, 0);
- updateEnabled();
- configurationNameModification--;
- }
- }
- });
- panel.add(configurationNameField, "cell 2 1, gapright para");
-
- //// New configuration
- newConfButton = new JButton(trans.get("edtmotorconfdlg.but.Newconfiguration"));
- newConfButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- String id = rocket.newMotorConfigurationID();
- rocket.getDefaultConfiguration().setMotorConfigurationID(id);
- configurationTableModel.fireTableDataChanged();
- updateEnabled();
- }
- });
- panel.add(newConfButton, "cell 3 1");
-
- //// Remove configuration
- removeConfButton = new JButton(trans.get("edtmotorconfdlg.but.Removeconfiguration"));
- removeConfButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (currentID == null)
- return;
- rocket.removeMotorConfigurationID(currentID);
- rocket.getDefaultConfiguration().setMotorConfigurationID(null);
- configurationTableModel.fireTableDataChanged();
- updateEnabled();
- }
- });
- panel.add(removeConfButton, "cell 4 1");
-
-
-
-
- configurationTableModel = new MotorConfigurationTableModel();
+ //// Motor selection table.
+ configurationTableModel = new MotorConfigurationTableModel(this);
configurationTable = new JTable(configurationTableModel);
configurationTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
configurationTable.setCellSelectionEnabled(true);
- configurationTable.getColumnModel().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- int column = configurationTable.getSelectedColumn();
- System.err.println("column=" + column);
- if (column == 0 && configurationTable.getColumnCount() > 1) {
- configurationTable.setColumnSelectionInterval(1, 1);
- }
- }
- });
configurationTable.addMouseListener(new MouseAdapter() {
@Override
@@ -223,10 +127,37 @@ public class EditMotorConfigurationDialog extends JDialog {
}
});
-
scroll = new JScrollPane(configurationTable);
- panel.add(scroll, "cell 1 2, spanx, w 500lp, h 150lp, grow");
+ panel.add(scroll, "span 4, w 500lp, h 150lp, grow");
+
+ //// New configuration
+ newConfButton = new JButton(trans.get("edtmotorconfdlg.but.Newconfiguration"));
+ newConfButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String id = rocket.newMotorConfigurationID();
+ rocket.getDefaultConfiguration().setMotorConfigurationID(id);
+ configurationTableModel.fireTableDataChanged();
+ updateEnabled();
+ }
+ });
+ panel.add(newConfButton, "skip, sizegroup button");
+ //// Remove configuration
+ removeConfButton = new JButton(trans.get("edtmotorconfdlg.but.Removeconfiguration"));
+ removeConfButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (currentID == null)
+ return;
+ rocket.removeMotorConfigurationID(currentID);
+ rocket.getDefaultConfiguration().setMotorConfigurationID(null);
+ configurationTableModel.fireTableDataChanged();
+ updateEnabled();
+ }
+ });
+ panel.add(removeConfButton, "sizegroup button");
+
//// Select motor
selectMotorButton = new JButton(trans.get("edtmotorconfdlg.but.Selectmotor"));
selectMotorButton.addActionListener(new ActionListener() {
@@ -235,7 +166,7 @@ public class EditMotorConfigurationDialog extends JDialog {
selectMotor();
}
});
- panel.add(selectMotorButton, "spanx, flowx, split 2, ax 50%");
+ panel.add(selectMotorButton, "sizegroup button");
//// Remove motor button
removeMotorButton = new JButton(trans.get("edtmotorconfdlg.but.removemotor"));
@@ -245,16 +176,14 @@ public class EditMotorConfigurationDialog extends JDialog {
removeMotor();
}
});
- panel.add(removeMotorButton, "ax 50%");
-
-
+ panel.add(removeMotorButton,"sizegroup button, wrap");
//// Close button
JButton close = new JButton(trans.get("dlg.but.close"));
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- EditMotorConfigurationDialog.this.dispose();
+ FlightConfigurationDialog.this.dispose();
}
});
panel.add(close, "spanx, right");
@@ -294,9 +223,15 @@ public class EditMotorConfigurationDialog extends JDialog {
}
+ void updateConfigurationName( String newName ) {
+
+ int row = configurationTable.getSelectedRow();
+ String currentID = findID( row );
+ rocket.setMotorConfigurationName(currentID, newName);
+
+ }
-
- private void updateEnabled() {
+ void updateEnabled() {
int column = configurationTable.getSelectedColumn();
int row = configurationTable.getSelectedRow();
@@ -315,19 +250,6 @@ public class EditMotorConfigurationDialog extends JDialog {
}
- if (configurationNameModification == 0) {
- // Don't update name field when user is modifying it
- configurationNameModification++;
-
- configurationNameField.setEnabled(currentID != null);
- if (currentID == null) {
- configurationNameField.setText("");
- } else {
- configurationNameField.setText(rocket.getMotorConfigurationName(currentID));
- }
-
- configurationNameModification--;
- }
removeConfButton.setEnabled(currentID != null);
selectMotorButton.setEnabled(currentMount != null && currentID != null);
removeMotorButton.setEnabled(currentMount != null && currentID != null);
@@ -369,12 +291,12 @@ public class EditMotorConfigurationDialog extends JDialog {
}
- private String findID(int row) {
+ String findID(int row) {
return rocket.getMotorConfigurationIDs()[row + 1];
}
- private MotorMount findMount(int column) {
+ MotorMount findMount(int column) {
MotorMount mount = null;
int count = column;
@@ -393,129 +315,4 @@ public class EditMotorConfigurationDialog extends JDialog {
return mount;
}
-
- /**
- * The table model for selecting whether components are motor mounts or not.
- */
- private class MotorMountTableModel extends AbstractTableModel {
-
- @Override
- public int getColumnCount() {
- return 2;
- }
-
- @Override
- public int getRowCount() {
- return mounts.length;
- }
-
- @Override
- public Class> getColumnClass(int column) {
- switch (column) {
- case 0:
- return Boolean.class;
-
- case 1:
- return String.class;
-
- default:
- throw new IndexOutOfBoundsException("column=" + column);
- }
- }
-
- @Override
- public Object getValueAt(int row, int column) {
- switch (column) {
- case 0:
- return new Boolean(mounts[row].isMotorMount());
-
- case 1:
- return mounts[row].toString();
-
- default:
- throw new IndexOutOfBoundsException("column=" + column);
- }
- }
-
- @Override
- public boolean isCellEditable(int row, int column) {
- return column == 0;
- }
-
- @Override
- public void setValueAt(Object value, int row, int column) {
- if (column != 0 || !(value instanceof Boolean)) {
- throw new IllegalArgumentException("column=" + column + ", value=" + value);
- }
-
- mounts[row].setMotorMount((Boolean) value);
- configurationTableModel.fireTableStructureChanged();
- updateEnabled();
- }
- }
-
-
-
- /**
- * The table model for selecting and editing the motor configurations.
- */
- private class MotorConfigurationTableModel extends AbstractTableModel {
-
- @Override
- public int getColumnCount() {
- int count = 1;
- for (MotorMount m : mounts) {
- if (m.isMotorMount())
- count++;
- }
- return count;
- }
-
- @Override
- public int getRowCount() {
- return rocket.getMotorConfigurationIDs().length - 1;
- }
-
- @Override
- public Object getValueAt(int row, int column) {
-
- String id = findID(row);
-
- if (column == 0) {
- return rocket.getMotorConfigurationNameOrDescription(id);
- }
-
- MotorMount mount = findMount(column);
- Motor motor = mount.getMotor(id);
- if (motor == null)
- //// None
- return "None";
-
- String str = motor.getDesignation(mount.getMotorDelay(id));
- int count = mount.getMotorCount();
- if (count > 1) {
- str = "" + count + Chars.TIMES + " " + str;
- }
- return str;
- }
-
-
- @Override
- public String getColumnName(int column) {
- if (column == 0) {
- //// Configuration name
- return trans.get("edtmotorconfdlg.lbl.Configname");
- }
-
- MotorMount mount = findMount(column);
- String name = mount.toString();
- int count = mount.getMotorCount();
- if (count > 1) {
- name = name + " (" + Chars.TIMES + count + ")";
- }
- return name;
- }
-
- }
-
}
diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorConfigurationTableModel.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorConfigurationTableModel.java
new file mode 100644
index 000000000..bb46a7eb7
--- /dev/null
+++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorConfigurationTableModel.java
@@ -0,0 +1,95 @@
+package net.sf.openrocket.gui.dialogs.flightconfiguration;
+
+import javax.swing.table.AbstractTableModel;
+
+import net.sf.openrocket.motor.Motor;
+import net.sf.openrocket.rocketcomponent.MotorMount;
+import net.sf.openrocket.util.Chars;
+
+/**
+ * The table model for selecting and editing the motor configurations.
+ */
+class MotorConfigurationTableModel extends AbstractTableModel {
+
+ /**
+ *
+ */
+ private final FlightConfigurationDialog flightConfigurationDialog;
+
+
+ /**
+ * @param flightConfigurationDialog
+ */
+ MotorConfigurationTableModel( FlightConfigurationDialog flightConfigurationDialog) {
+ this.flightConfigurationDialog = flightConfigurationDialog;
+ }
+
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return columnIndex == 0;
+ }
+
+ @Override
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+ if ( columnIndex == 0 ) {
+ // Set description:
+ flightConfigurationDialog.updateConfigurationName( (String) aValue );
+ }
+ }
+
+ @Override
+ public int getColumnCount() {
+ int count = 1;
+ for (MotorMount m : this.flightConfigurationDialog.mounts) {
+ if (m.isMotorMount())
+ count++;
+ }
+ return count;
+ }
+
+ @Override
+ public int getRowCount() {
+ return this.flightConfigurationDialog.rocket.getMotorConfigurationIDs().length - 1;
+ }
+
+ @Override
+ public Object getValueAt(int row, int column) {
+
+ String id = this.flightConfigurationDialog.findID(row);
+
+ if (column == 0) {
+ return this.flightConfigurationDialog.rocket.getMotorConfigurationNameOrDescription(id);
+ }
+
+ MotorMount mount = this.flightConfigurationDialog.findMount(column);
+ Motor motor = mount.getMotor(id);
+ if (motor == null)
+ //// None
+ return "None";
+
+ String str = motor.getDesignation(mount.getMotorDelay(id));
+ int count = mount.getMotorCount();
+ if (count > 1) {
+ str = "" + count + Chars.TIMES + " " + str;
+ }
+ return str;
+ }
+
+
+ @Override
+ public String getColumnName(int column) {
+ if (column == 0) {
+ //// Configuration name
+ return FlightConfigurationDialog.trans.get("edtmotorconfdlg.lbl.Configname");
+ }
+
+ MotorMount mount = this.flightConfigurationDialog.findMount(column);
+ String name = mount.toString();
+ int count = mount.getMotorCount();
+ if (count > 1) {
+ name = name + " (" + Chars.TIMES + count + ")";
+ }
+ return name;
+ }
+
+}
\ No newline at end of file
diff --git a/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java
new file mode 100644
index 000000000..bbc861350
--- /dev/null
+++ b/core/src/net/sf/openrocket/gui/dialogs/flightconfiguration/MotorMountTableModel.java
@@ -0,0 +1,75 @@
+package net.sf.openrocket.gui.dialogs.flightconfiguration;
+
+import javax.swing.table.AbstractTableModel;
+
+/**
+ * The table model for selecting whether components are motor mounts or not.
+ */
+class MotorMountTableModel extends AbstractTableModel {
+
+ /**
+ *
+ */
+ private final FlightConfigurationDialog flightConfigurationDialog;
+
+ /**
+ * @param flightConfigurationDialog
+ */
+ MotorMountTableModel(FlightConfigurationDialog flightConfigurationDialog) {
+ this.flightConfigurationDialog = flightConfigurationDialog;
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 2;
+ }
+
+ @Override
+ public int getRowCount() {
+ return this.flightConfigurationDialog.mounts.length;
+ }
+
+ @Override
+ public Class> getColumnClass(int column) {
+ switch (column) {
+ case 0:
+ return Boolean.class;
+
+ case 1:
+ return String.class;
+
+ default:
+ throw new IndexOutOfBoundsException("column=" + column);
+ }
+ }
+
+ @Override
+ public Object getValueAt(int row, int column) {
+ switch (column) {
+ case 0:
+ return new Boolean(this.flightConfigurationDialog.mounts[row].isMotorMount());
+
+ case 1:
+ return this.flightConfigurationDialog.mounts[row].toString();
+
+ default:
+ throw new IndexOutOfBoundsException("column=" + column);
+ }
+ }
+
+ @Override
+ public boolean isCellEditable(int row, int column) {
+ return column == 0;
+ }
+
+ @Override
+ public void setValueAt(Object value, int row, int column) {
+ if (column != 0 || !(value instanceof Boolean)) {
+ throw new IllegalArgumentException("column=" + column + ", value=" + value);
+ }
+
+ this.flightConfigurationDialog.mounts[row].setMotorMount((Boolean) value);
+ this.flightConfigurationDialog.configurationTableModel.fireTableStructureChanged();
+ this.flightConfigurationDialog.updateEnabled();
+ }
+}
\ No newline at end of file