]> git.gag.com Git - sw/motorsim/commitdiff
Added new grain type, bound properties on compound grain
authorBill Kuker <bkuker@billkuker.com>
Sun, 12 Apr 2009 17:31:52 +0000 (17:31 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 12 Apr 2009 17:31:52 +0000 (17:31 +0000)
src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java
src/com/billkuker/rocketry/motorsim/grain/RodAndTubeGrain.java [new file with mode: 0644]

index 2eb5fb5523932944cf2bda34c06cc73bc36ad7fb..ee1ac618b9397ab45ea8982636780ee65949870d 100644 (file)
@@ -1,6 +1,7 @@
 package com.billkuker.rocketry.motorsim.grain;\r
 \r
 import java.awt.geom.Area;\r
+import java.beans.PropertyChangeListener;\r
 import java.util.HashSet;\r
 import java.util.Set;\r
 \r
@@ -11,8 +12,9 @@ import javax.measure.unit.SI;
 import org.jscience.physics.amount.Amount;\r
 \r
 import com.billkuker.rocketry.motorsim.Grain;\r
+import com.billkuker.rocketry.motorsim.MotorPart;\r
 \r
-public class CompoundGrain implements Grain {\r
+public class CompoundGrain extends MotorPart implements Grain {\r
        \r
        private Set<Grain> grains = new HashSet<Grain>();\r
        \r
@@ -23,6 +25,18 @@ public class CompoundGrain implements Grain {
        public void add( Grain g ){\r
                grains.add(g);\r
        }\r
+       \r
+       public void addPropertyChangeListener(PropertyChangeListener listener) {\r
+               for ( Grain g : grains )\r
+                       if ( g instanceof MotorPart )\r
+                               ((MotorPart)g).addPropertyChangeListener(listener);\r
+       }\r
+\r
+       public void removePropertyChangeListener(PropertyChangeListener listener) {\r
+               for ( Grain g : grains )\r
+                       if ( g instanceof MotorPart )\r
+                               ((MotorPart)g).removePropertyChangeListener(listener);\r
+       }\r
 \r
        public Area getCrossSection(Amount<Length> regression) {\r
                Area a = new Area();\r
diff --git a/src/com/billkuker/rocketry/motorsim/grain/RodAndTubeGrain.java b/src/com/billkuker/rocketry/motorsim/grain/RodAndTubeGrain.java
new file mode 100644 (file)
index 0000000..2ae00f4
--- /dev/null
@@ -0,0 +1,82 @@
+package com.billkuker.rocketry.motorsim.grain;\r
+\r
+import java.beans.PropertyVetoException;\r
+\r
+import javax.measure.quantity.Length;\r
+import javax.measure.unit.SI;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+\r
+import com.billkuker.rocketry.motorsim.Grain;\r
+\r
+public class RodAndTubeGrain extends CompoundGrain {\r
+       CoredCylindricalGrain rod, tube;\r
+       \r
+       public RodAndTubeGrain() {\r
+               try{\r
+                       rod = new CoredCylindricalGrain();\r
+                       rod.setInnerSurfaceInhibited(true);\r
+                       rod.setID(Amount.valueOf(0, SI.MILLIMETER));\r
+                       rod.setOD(Amount.valueOf(10, SI.MILLIMETER));\r
+                       rod.setOuterSurfaceInhibited(false);\r
+                       rod.setEndSurfaceInhibited(true);\r
+                       \r
+                       tube = new CoredCylindricalGrain();\r
+                       tube.setInnerSurfaceInhibited(false);\r
+                       tube.setID(Amount.valueOf(20, SI.MILLIMETER));\r
+                       tube.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
+                       tube.setOuterSurfaceInhibited(true);\r
+                       tube.setEndSurfaceInhibited(true);\r
+               } catch ( PropertyVetoException v ){\r
+                       v.printStackTrace();\r
+                       //I know these values are OK\r
+               }\r
+               \r
+               add(rod);\r
+               add(tube);\r
+       }\r
+\r
+       public Amount<Length> getRodDiameter() {\r
+               return rod.getOD();\r
+       }\r
+\r
+       public void setRodDiameter(Amount<Length> od) throws PropertyVetoException {\r
+               rod.setOD(od);\r
+       }\r
+\r
+       public Amount<Length> getTubeID() {\r
+               return tube.getID();\r
+       }\r
+\r
+       public void setTubeID(Amount<Length> id) throws PropertyVetoException {\r
+               tube.setID(id);\r
+       }\r
+       \r
+       public Amount<Length> getOd() {\r
+               return tube.getOD();\r
+       }\r
+\r
+       public void setOd(Amount<Length> od) throws PropertyVetoException {\r
+               tube.setOD(od);\r
+       }\r
+\r
+       public boolean isEndSurfaceInhibited() {\r
+               return rod.isEndSurfaceInhibited();\r
+       }\r
+\r
+       public void setEndSurfaceInhibited(boolean endSurfaceInhibited)\r
+                       throws PropertyVetoException {\r
+               rod.setEndSurfaceInhibited(endSurfaceInhibited);\r
+               tube.setEndSurfaceInhibited(endSurfaceInhibited);\r
+       }\r
+\r
+       public Amount<Length> getLength() {\r
+               return rod.getLength();\r
+       }\r
+\r
+       public void setLength(Amount<Length> length) throws PropertyVetoException {\r
+               rod.setLength(length);\r
+               tube.setLength(length);\r
+       }\r
+\r
+}\r