Refactor the api so the motor mount goes into the
ThrustCurveMotorSelectionPanel. This allows greater flexibility in filter functionality.
This commit is contained in:
parent
84af78ccf4
commit
64015d72be
@ -184,8 +184,7 @@ public class MotorConfig extends JPanel {
|
|||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
String id = configuration.getFlightConfigurationID();
|
String id = configuration.getFlightConfigurationID();
|
||||||
|
|
||||||
MotorChooserDialog dialog = new MotorChooserDialog(mount.getMotor(id),
|
MotorChooserDialog dialog = new MotorChooserDialog(mount, id,
|
||||||
mount.getMotorDelay(id), mount.getMotorMountDiameter(),
|
|
||||||
SwingUtilities.getWindowAncestor(MotorConfig.this));
|
SwingUtilities.getWindowAncestor(MotorConfig.this));
|
||||||
dialog.setVisible(true);
|
dialog.setVisible(true);
|
||||||
Motor m = dialog.getSelectedMotor();
|
Motor m = dialog.getSelectedMotor();
|
||||||
|
@ -207,11 +207,7 @@ public class MotorConfigurationPanel extends JPanel {
|
|||||||
|
|
||||||
MotorConfiguration config = mount.getMotorConfiguration().get(id);
|
MotorConfiguration config = mount.getMotorConfiguration().get(id);
|
||||||
|
|
||||||
MotorChooserDialog dialog = new MotorChooserDialog(
|
MotorChooserDialog dialog = new MotorChooserDialog(mount, id, flightConfigurationDialog);
|
||||||
config.getMotor(),
|
|
||||||
config.getEjectionDelay(),
|
|
||||||
mount.getMotorMountDiameter(),
|
|
||||||
flightConfigurationDialog);
|
|
||||||
dialog.setVisible(true);
|
dialog.setVisible(true);
|
||||||
Motor m = dialog.getSelectedMotor();
|
Motor m = dialog.getSelectedMotor();
|
||||||
double d = dialog.getSelectedDelay();
|
double d = dialog.getSelectedDelay();
|
||||||
|
@ -16,7 +16,7 @@ import net.sf.openrocket.gui.dialogs.motor.thrustcurve.ThrustCurveMotorSelection
|
|||||||
import net.sf.openrocket.gui.util.GUIUtil;
|
import net.sf.openrocket.gui.util.GUIUtil;
|
||||||
import net.sf.openrocket.l10n.Translator;
|
import net.sf.openrocket.l10n.Translator;
|
||||||
import net.sf.openrocket.motor.Motor;
|
import net.sf.openrocket.motor.Motor;
|
||||||
import net.sf.openrocket.motor.ThrustCurveMotor;
|
import net.sf.openrocket.rocketcomponent.MotorMount;
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
|
|
||||||
public class MotorChooserDialog extends JDialog implements CloseableDialog {
|
public class MotorChooserDialog extends JDialog implements CloseableDialog {
|
||||||
@ -27,13 +27,13 @@ public class MotorChooserDialog extends JDialog implements CloseableDialog {
|
|||||||
private static final Translator trans = Application.getTranslator();
|
private static final Translator trans = Application.getTranslator();
|
||||||
|
|
||||||
|
|
||||||
public MotorChooserDialog(Motor current, double delay, double diameter, Window owner) {
|
public MotorChooserDialog(MotorMount mount, String currentConfig, Window owner) {
|
||||||
super(owner, trans.get("MotorChooserDialog.title"), Dialog.ModalityType.APPLICATION_MODAL);
|
super(owner, trans.get("MotorChooserDialog.title"), Dialog.ModalityType.APPLICATION_MODAL);
|
||||||
|
|
||||||
|
|
||||||
JPanel panel = new JPanel(new MigLayout("fill"));
|
JPanel panel = new JPanel(new MigLayout("fill"));
|
||||||
|
|
||||||
selectionPanel = new ThrustCurveMotorSelectionPanel((ThrustCurveMotor) current, delay, diameter);
|
selectionPanel = new ThrustCurveMotorSelectionPanel(mount, currentConfig);
|
||||||
|
|
||||||
panel.add(selectionPanel, "grow, wrap para");
|
panel.add(selectionPanel, "grow, wrap para");
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
|
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
@ -57,6 +56,8 @@ import net.sf.openrocket.l10n.Translator;
|
|||||||
import net.sf.openrocket.logging.Markers;
|
import net.sf.openrocket.logging.Markers;
|
||||||
import net.sf.openrocket.motor.Motor;
|
import net.sf.openrocket.motor.Motor;
|
||||||
import net.sf.openrocket.motor.ThrustCurveMotor;
|
import net.sf.openrocket.motor.ThrustCurveMotor;
|
||||||
|
import net.sf.openrocket.rocketcomponent.MotorConfiguration;
|
||||||
|
import net.sf.openrocket.rocketcomponent.MotorMount;
|
||||||
import net.sf.openrocket.startup.Application;
|
import net.sf.openrocket.startup.Application;
|
||||||
import net.sf.openrocket.unit.UnitGroup;
|
import net.sf.openrocket.unit.UnitGroup;
|
||||||
import net.sf.openrocket.util.BugException;
|
import net.sf.openrocket.util.BugException;
|
||||||
@ -157,20 +158,25 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
|
|||||||
* @param delay the currently selected ejection charge delay.
|
* @param delay the currently selected ejection charge delay.
|
||||||
* @param diameter the diameter of the motor mount.
|
* @param diameter the diameter of the motor mount.
|
||||||
*/
|
*/
|
||||||
public ThrustCurveMotorSelectionPanel(ThrustCurveMotor current, double delay, double diameter) {
|
public ThrustCurveMotorSelectionPanel(MotorMount mount, String currentConfig) {
|
||||||
super(new MigLayout("fill", "[grow][]"));
|
super(new MigLayout("fill", "[grow][]"));
|
||||||
|
|
||||||
|
double diameter = 0;
|
||||||
|
if (currentConfig != null && mount != null) {
|
||||||
|
MotorConfiguration motorConf = mount.getMotorConfiguration().get(currentConfig);
|
||||||
|
selectedMotor = (ThrustCurveMotor) motorConf.getMotor();
|
||||||
|
selectedDelay = motorConf.getEjectionDelay();
|
||||||
|
diameter = mount.getMotorMountDiameter();
|
||||||
|
}
|
||||||
|
|
||||||
// Construct the database (adding the current motor if not in the db already)
|
// Construct the database (adding the current motor if not in the db already)
|
||||||
List<ThrustCurveMotorSet> db;
|
List<ThrustCurveMotorSet> db;
|
||||||
db = Application.getThrustCurveMotorSetDatabase().getMotorSets();
|
db = Application.getThrustCurveMotorSetDatabase().getMotorSets();
|
||||||
|
|
||||||
// If current motor is not found in db, add a new ThrustCurveMotorSet containing it
|
// If current motor is not found in db, add a new ThrustCurveMotorSet containing it
|
||||||
if (current != null) {
|
if (selectedMotor != null) {
|
||||||
selectedMotor = current;
|
|
||||||
for (ThrustCurveMotorSet motorSet : db) {
|
for (ThrustCurveMotorSet motorSet : db) {
|
||||||
if (motorSet.getMotors().contains(current)) {
|
if (motorSet.getMotors().contains(selectedMotor)) {
|
||||||
selectedMotorSet = motorSet;
|
selectedMotorSet = motorSet;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -178,7 +184,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
|
|||||||
if (selectedMotorSet == null) {
|
if (selectedMotorSet == null) {
|
||||||
db = new ArrayList<ThrustCurveMotorSet>(db);
|
db = new ArrayList<ThrustCurveMotorSet>(db);
|
||||||
ThrustCurveMotorSet extra = new ThrustCurveMotorSet();
|
ThrustCurveMotorSet extra = new ThrustCurveMotorSet();
|
||||||
extra.addMotor(current);
|
extra.addMotor(selectedMotor);
|
||||||
selectedMotorSet = extra;
|
selectedMotorSet = extra;
|
||||||
db.add(extra);
|
db.add(extra);
|
||||||
Collections.sort(db);
|
Collections.sort(db);
|
||||||
@ -345,7 +351,7 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
|
|||||||
private void update() {
|
private void update() {
|
||||||
String text = searchField.getText().trim();
|
String text = searchField.getText().trim();
|
||||||
String[] split = text.split("\\s+");
|
String[] split = text.split("\\s+");
|
||||||
rowFilter.setSearchTerms( Arrays.asList(split) );
|
rowFilter.setSearchTerms(Arrays.asList(split));
|
||||||
sorter.sort();
|
sorter.sort();
|
||||||
scrollSelectionVisible();
|
scrollSelectionVisible();
|
||||||
}
|
}
|
||||||
@ -555,7 +561,6 @@ public class ThrustCurveMotorSelectionPanel extends JPanel implements MotorSelec
|
|||||||
|
|
||||||
// Update the panel data
|
// Update the panel data
|
||||||
updateData();
|
updateData();
|
||||||
selectedDelay = delay;
|
|
||||||
setDelays(false);
|
setDelays(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user