From: Bill Kuker Date: Sun, 22 Jan 2012 02:21:45 +0000 (+0000) Subject: Add a delay to motor X-Git-Url: https://git.gag.com/?p=sw%2Fmotorsim;a=commitdiff_plain;h=f91161aeff9efac4ce90d9cf043185e555491b67 Add a delay to motor --- diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java index 65febeb..9264cf2 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java @@ -16,6 +16,7 @@ import java.net.URI; import java.util.List; import java.util.Vector; +import javax.measure.quantity.Duration; import javax.measure.unit.SI; import javax.swing.Box; import javax.swing.BoxLayout; @@ -412,6 +413,46 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR }); + + + l = new JLabel("Delay:"); + l.setAlignmentX(LEFT_ALIGNMENT); + nameAndFuel.add(l); + nameAndFuel.add(new JTextField(Double.toString(motor.getEjectionDelay().doubleValue(SI.SECOND))) { + private static final long serialVersionUID = 1L; + { + setAlignmentX(LEFT_ALIGNMENT); + setMinimumSize(new Dimension(200, 20)); + setMaximumSize(new Dimension(Short.MAX_VALUE, 20)); + final JTextField t = this; + addFocusListener(new FocusListener() { + + @Override + public void focusLost(FocusEvent e) { + try { + String n = t.getText(); + double d = Double.parseDouble(n); + Amount delay = Amount.valueOf(d, SI.SECOND); + if ( delay != motor.getEjectionDelay() ){ + motor.setEjectionDelay(delay); + } + } catch ( Exception ex ){ + log.warn(e); + setText(Double.toString(motor.getEjectionDelay().doubleValue(SI.SECOND))); + } + } + + @Override + public void focusGained(FocusEvent e) { + + } + }); + + } + }); + + + nameAndFuel.add(Box.createVerticalGlue()); parts.add(nameAndFuel); diff --git a/src/com/billkuker/rocketry/motorsim/Motor.java b/src/com/billkuker/rocketry/motorsim/Motor.java index 11872a6..817b9da 100644 --- a/src/com/billkuker/rocketry/motorsim/Motor.java +++ b/src/com/billkuker/rocketry/motorsim/Motor.java @@ -1,5 +1,6 @@ package com.billkuker.rocketry.motorsim; +import javax.measure.quantity.Duration; import javax.measure.unit.SI; import org.jscience.physics.amount.Amount; @@ -10,6 +11,7 @@ public class Motor implements Validating{ private Nozzle nozzle; private Fuel fuel; private String name; + private Amount ejectionDelay = Amount.valueOf(5, SI.SECOND); public void validate() throws ValidationException { if ( chamber.chamberVolume().isLessThan(grain.volume(Amount.valueOf(0, SI.MILLIMETER)))){ @@ -64,4 +66,12 @@ public class Motor implements Validating{ public void setName(String name) { this.name = name; } + + public Amount getEjectionDelay() { + return ejectionDelay; + } + + public void setEjectionDelay(Amount ejectionDelay) { + this.ejectionDelay = ejectionDelay; + } } diff --git a/src/com/billkuker/rocketry/motorsim/io/ENGExporter.java b/src/com/billkuker/rocketry/motorsim/io/ENGExporter.java index ce32500..bd59bc9 100644 --- a/src/com/billkuker/rocketry/motorsim/io/ENGExporter.java +++ b/src/com/billkuker/rocketry/motorsim/io/ENGExporter.java @@ -52,8 +52,11 @@ public class ENGExporter { b.getMotor().getFuel().getDensityRatio())).to( SI.KILOGRAM); double wt = prop.doubleValue(SI.KILOGRAM); + + double delay = b.getMotor().getEjectionDelay().doubleValue(SI.SECOND); + String delayString = Integer.toString((int)delay); - out.append(nf.format(dia) + " " + nf.format(len) + " 0-0-0 " + out.append(nf.format(dia) + " " + nf.format(len) + " " + delayString + "-0-0 " + nf.format(wt) + " " + nf.format(wt + 0.1) + " MF\n"); GraphSimplifier gs = null;