Merge pull request #570 from wolsen/add-railbutton-presets
Add railbutton presets
This commit is contained in:
commit
e51545d7f3
@ -1317,10 +1317,12 @@ material.brass = Brass
|
|||||||
material.cardboard = Cardboard
|
material.cardboard = Cardboard
|
||||||
material.carbon_fiber = Carbon fiber
|
material.carbon_fiber = Carbon fiber
|
||||||
material.cork = Cork
|
material.cork = Cork
|
||||||
|
material.delrin = Delrin
|
||||||
material.depron_xps = Depron (XPS)
|
material.depron_xps = Depron (XPS)
|
||||||
material.fiberglass = Fiberglass
|
material.fiberglass = Fiberglass
|
||||||
material.kraft_phenolic = Kraft phenolic
|
material.kraft_phenolic = Kraft phenolic
|
||||||
material.maple = Maple
|
material.maple = Maple
|
||||||
|
material.nylon = Nylon
|
||||||
material.paper_office = Paper (office)
|
material.paper_office = Paper (office)
|
||||||
material.pine = Pine
|
material.pine = Pine
|
||||||
material.plywood_birch = Plywood (birch)
|
material.plywood_birch = Plywood (birch)
|
||||||
@ -1993,6 +1995,8 @@ table.column.AftShoulderDiameter = Aft Shoulder Diameter
|
|||||||
table.column.ForeShoulderLength = Fore Shoulder Length
|
table.column.ForeShoulderLength = Fore Shoulder Length
|
||||||
table.column.ForeShoulderDiameter = Fore Shoulder Diameter
|
table.column.ForeShoulderDiameter = Fore Shoulder Diameter
|
||||||
table.column.ForeOuterDiameter = Fore Outer Diameter
|
table.column.ForeOuterDiameter = Fore Outer Diameter
|
||||||
|
table.column.StandoffHeight = Standoff Height
|
||||||
|
table.column.FlangeHeight = Flange Height
|
||||||
table.column.Shape = Shape
|
table.column.Shape = Shape
|
||||||
table.column.Material = Material
|
table.column.Material = Material
|
||||||
table.column.Finish = Finish
|
table.column.Finish = Finish
|
||||||
|
@ -50,10 +50,12 @@ public class Databases {
|
|||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Cardboard", 680));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Cardboard", 680));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Carbon fiber", 1780));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Carbon fiber", 1780));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Cork", 240));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Cork", 240));
|
||||||
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Delrin", 1420));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Depron (XPS)", 40));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Depron (XPS)", 40));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Fiberglass", 1850));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Fiberglass", 1850));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Kraft phenolic", 950));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Kraft phenolic", 950));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Maple", 755));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Maple", 755));
|
||||||
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Nylon", 1150));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Paper (office)", 820));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Paper (office)", 820));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Pine", 530));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Pine", 530));
|
||||||
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Plywood (birch)", 630));
|
BULK_MATERIAL.add(newMaterial(Material.Type.BULK, "Plywood (birch)", 630));
|
||||||
|
@ -200,6 +200,8 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
|
|||||||
public final static TypedKey<Double> LINE_LENGTH = new TypedKey<Double>("LineLength", Double.class, UnitGroup.UNITS_LENGTH);
|
public final static TypedKey<Double> LINE_LENGTH = new TypedKey<Double>("LineLength", Double.class, UnitGroup.UNITS_LENGTH);
|
||||||
public final static TypedKey<Material> LINE_MATERIAL = new TypedKey<Material>("LineMaterial", Material.class);
|
public final static TypedKey<Material> LINE_MATERIAL = new TypedKey<Material>("LineMaterial", Material.class);
|
||||||
public final static TypedKey<byte[]> IMAGE = new TypedKey<byte[]>("Image", byte[].class);
|
public final static TypedKey<byte[]> IMAGE = new TypedKey<byte[]>("Image", byte[].class);
|
||||||
|
public final static TypedKey<Double> STANDOFF_HEIGHT = new TypedKey<Double>("StandoffHeight", Double.class, UnitGroup.UNITS_LENGTH);
|
||||||
|
public final static TypedKey<Double> FLANGE_HEIGHT = new TypedKey<Double>("FlangeHeight", Double.class, UnitGroup.UNITS_LENGTH);
|
||||||
|
|
||||||
public final static List<TypedKey<?>> ORDERED_KEY_LIST = Collections.unmodifiableList(Arrays.<TypedKey<?>> asList(
|
public final static List<TypedKey<?>> ORDERED_KEY_LIST = Collections.unmodifiableList(Arrays.<TypedKey<?>> asList(
|
||||||
MANUFACTURER,
|
MANUFACTURER,
|
||||||
@ -215,6 +217,8 @@ public class ComponentPreset implements Comparable<ComponentPreset>, Serializabl
|
|||||||
AFT_SHOULDER_LENGTH,
|
AFT_SHOULDER_LENGTH,
|
||||||
FORE_SHOULDER_DIAMETER,
|
FORE_SHOULDER_DIAMETER,
|
||||||
FORE_SHOULDER_LENGTH,
|
FORE_SHOULDER_LENGTH,
|
||||||
|
STANDOFF_HEIGHT,
|
||||||
|
FLANGE_HEIGHT,
|
||||||
SHAPE,
|
SHAPE,
|
||||||
THICKNESS,
|
THICKNESS,
|
||||||
FILLED,
|
FILLED,
|
||||||
|
@ -5,6 +5,7 @@ import net.sf.openrocket.database.Databases;
|
|||||||
import net.sf.openrocket.material.Material;
|
import net.sf.openrocket.material.Material;
|
||||||
import net.sf.openrocket.preset.ComponentPreset.Type;
|
import net.sf.openrocket.preset.ComponentPreset.Type;
|
||||||
import net.sf.openrocket.rocketcomponent.NoseCone;
|
import net.sf.openrocket.rocketcomponent.NoseCone;
|
||||||
|
import net.sf.openrocket.rocketcomponent.RailButton;
|
||||||
import net.sf.openrocket.rocketcomponent.Transition;
|
import net.sf.openrocket.rocketcomponent.Transition;
|
||||||
|
|
||||||
public abstract class ComponentPresetFactory {
|
public abstract class ComponentPresetFactory {
|
||||||
@ -67,6 +68,10 @@ public abstract class ComponentPresetFactory {
|
|||||||
makeBodyTube(exceptions, preset);
|
makeBodyTube(exceptions, preset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case RAIL_BUTTON: {
|
||||||
|
makeRailButton(exceptions, preset);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case STREAMER: {
|
case STREAMER: {
|
||||||
makeStreamer(exceptions, preset);
|
makeStreamer(exceptions, preset);
|
||||||
break;
|
break;
|
||||||
@ -108,6 +113,30 @@ public abstract class ComponentPresetFactory {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void makeRailButton(InvalidComponentPresetException exceptions, ComponentPreset preset) throws InvalidComponentPresetException {
|
||||||
|
|
||||||
|
checkRequiredFields(exceptions, preset, HEIGHT);
|
||||||
|
checkRequiredFields(exceptions, preset, OUTER_DIAMETER);
|
||||||
|
checkRequiredFields(exceptions, preset, INNER_DIAMETER);
|
||||||
|
checkRequiredFields(exceptions, preset, FLANGE_HEIGHT);
|
||||||
|
checkRequiredFields(exceptions, preset, STANDOFF_HEIGHT);
|
||||||
|
|
||||||
|
if (preset.has(MASS)) {
|
||||||
|
double mass = preset.get(MASS);
|
||||||
|
RailButton rb = new RailButton();
|
||||||
|
rb.loadPreset(preset);
|
||||||
|
double density = mass / rb.getComponentVolume();
|
||||||
|
|
||||||
|
String materialName = "RailButtonCustom";
|
||||||
|
if (preset.has(MATERIAL)) {
|
||||||
|
materialName = preset.get(MATERIAL).getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
Material m = Databases.findMaterial(Material.Type.BULK, materialName, density);
|
||||||
|
preset.put(MATERIAL, m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void makeNoseCone(InvalidComponentPresetException exceptions, ComponentPreset preset) {
|
private static void makeNoseCone(InvalidComponentPresetException exceptions, ComponentPreset preset) {
|
||||||
|
|
||||||
checkRequiredFields(exceptions, preset, LENGTH, SHAPE, AFT_OUTER_DIAMETER);
|
checkRequiredFields(exceptions, preset, LENGTH, SHAPE, AFT_OUTER_DIAMETER);
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package net.sf.openrocket.preset.loader;
|
||||||
|
|
||||||
|
import net.sf.openrocket.preset.ComponentPreset;
|
||||||
|
import net.sf.openrocket.preset.ComponentPreset.Type;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class RailButtonLoader extends BaseComponentLoader {
|
||||||
|
|
||||||
|
public RailButtonLoader(MaterialHolder materials, File theBasePath) {
|
||||||
|
super(materials, theBasePath);
|
||||||
|
fileColumns.add(new DoubleUnitColumnParser("ID","Units",ComponentPreset.INNER_DIAMETER));
|
||||||
|
fileColumns.add(new DoubleUnitColumnParser("OD","Units",ComponentPreset.OUTER_DIAMETER));
|
||||||
|
fileColumns.add(new DoubleUnitColumnParser("Height","Units",ComponentPreset.HEIGHT));
|
||||||
|
fileColumns.add(new DoubleUnitColumnParser("Flange Height", "Units", ComponentPreset.FLANGE_HEIGHT));
|
||||||
|
fileColumns.add(new DoubleUnitColumnParser("Standoff Height", "Units", ComponentPreset.STANDOFF_HEIGHT));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Type getComponentPresetType() {
|
||||||
|
return ComponentPreset.Type.RAIL_BUTTON;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RocksimComponentFileType getFileType() {
|
||||||
|
return RocksimComponentFileType.LAUNCH_LUG;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -39,6 +39,7 @@ public class OpenRocketComponentDTO {
|
|||||||
@XmlElementRef(name = "CenteringRings", type = CenteringRingDTO.class),
|
@XmlElementRef(name = "CenteringRings", type = CenteringRingDTO.class),
|
||||||
@XmlElementRef(name = "EngineBlocks", type = EngineBlockDTO.class),
|
@XmlElementRef(name = "EngineBlocks", type = EngineBlockDTO.class),
|
||||||
@XmlElementRef(name = "LaunchLugs", type = LaunchLugDTO.class),
|
@XmlElementRef(name = "LaunchLugs", type = LaunchLugDTO.class),
|
||||||
|
@XmlElementRef(name = "RailButtons", type = RailButtonDTO.class),
|
||||||
@XmlElementRef(name = "Streamers", type = StreamerDTO.class),
|
@XmlElementRef(name = "Streamers", type = StreamerDTO.class),
|
||||||
@XmlElementRef(name = "Parachutes", type = ParachuteDTO.class)})
|
@XmlElementRef(name = "Parachutes", type = ParachuteDTO.class)})
|
||||||
private List<BaseComponentDTO> components = new ArrayList<BaseComponentDTO>();
|
private List<BaseComponentDTO> components = new ArrayList<BaseComponentDTO>();
|
||||||
|
@ -198,6 +198,8 @@ public class OpenRocketComponentSaver {
|
|||||||
return new EngineBlockDTO(thePreset);
|
return new EngineBlockDTO(thePreset);
|
||||||
case LAUNCH_LUG:
|
case LAUNCH_LUG:
|
||||||
return new LaunchLugDTO(thePreset);
|
return new LaunchLugDTO(thePreset);
|
||||||
|
case RAIL_BUTTON:
|
||||||
|
return new RailButtonDTO(thePreset);
|
||||||
case STREAMER:
|
case STREAMER:
|
||||||
return new StreamerDTO(thePreset);
|
return new StreamerDTO(thePreset);
|
||||||
case PARACHUTE:
|
case PARACHUTE:
|
||||||
|
132
core/src/net/sf/openrocket/preset/xml/RailButtonDTO.java
Normal file
132
core/src/net/sf/openrocket/preset/xml/RailButtonDTO.java
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
|
||||||
|
package net.sf.openrocket.preset.xml;
|
||||||
|
|
||||||
|
import net.sf.openrocket.preset.ComponentPreset;
|
||||||
|
import net.sf.openrocket.preset.ComponentPresetFactory;
|
||||||
|
import net.sf.openrocket.preset.InvalidComponentPresetException;
|
||||||
|
import net.sf.openrocket.preset.TypedPropertyMap;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Body tube preset XML handler.
|
||||||
|
*/
|
||||||
|
@XmlRootElement(name = "RailButton")
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class RailButtonDTO extends BaseComponentDTO {
|
||||||
|
|
||||||
|
@XmlElement(name = "InsideDiameter")
|
||||||
|
private AnnotatedLengthDTO insideDiameter;
|
||||||
|
@XmlElement(name = "OutsideDiameter")
|
||||||
|
private AnnotatedLengthDTO outsideDiameter;
|
||||||
|
@XmlElement(name = "Height")
|
||||||
|
private AnnotatedLengthDTO height;
|
||||||
|
@XmlElement(name = "StandoffHeight")
|
||||||
|
private AnnotatedLengthDTO standoffHeight;
|
||||||
|
@XmlElement(name = "FlangeHeight")
|
||||||
|
private AnnotatedLengthDTO flangeHeight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
public RailButtonDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Most-useful constructor that maps a RailButton preset to a RailButtonDTO.
|
||||||
|
*
|
||||||
|
* @param preset the preset
|
||||||
|
*
|
||||||
|
* @throws net.sf.openrocket.util.BugException thrown if the expected body tube keys are not in the preset
|
||||||
|
*/
|
||||||
|
public RailButtonDTO(final ComponentPreset preset) {
|
||||||
|
super(preset);
|
||||||
|
setInsideDiameter(preset.get(ComponentPreset.INNER_DIAMETER));
|
||||||
|
setOutsideDiameter(preset.get(ComponentPreset.OUTER_DIAMETER));
|
||||||
|
setHeight(preset.get(ComponentPreset.HEIGHT));
|
||||||
|
setStandoffHeight(preset.get(ComponentPreset.STANDOFF_HEIGHT));
|
||||||
|
setFlangeHeight(preset.get(ComponentPreset.FLANGE_HEIGHT));
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getInsideDiameter() {
|
||||||
|
return insideDiameter.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInsideDiameter( final AnnotatedLengthDTO theLength ) {
|
||||||
|
insideDiameter = theLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInsideDiameter(final double theId) {
|
||||||
|
insideDiameter = new AnnotatedLengthDTO(theId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getOutsideDiameter() {
|
||||||
|
return outsideDiameter.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutsideDiameter(final AnnotatedLengthDTO theOd) {
|
||||||
|
outsideDiameter = theOd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOutsideDiameter(final double theOd) {
|
||||||
|
outsideDiameter = new AnnotatedLengthDTO(theOd);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getHeight() {
|
||||||
|
return height.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeight(final AnnotatedLengthDTO theHeight) {
|
||||||
|
height = theHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeight(final double theHeight) {
|
||||||
|
height = new AnnotatedLengthDTO(theHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getStandoffHeight() {
|
||||||
|
return standoffHeight.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStandoffHeight(final AnnotatedLengthDTO theStandoffHeight) {
|
||||||
|
standoffHeight = theStandoffHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStandoffHeight(final double theStandoffHeight) {
|
||||||
|
standoffHeight = new AnnotatedLengthDTO(theStandoffHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getFlangeHeight() {
|
||||||
|
return flangeHeight.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFlangeHeight(final AnnotatedLengthDTO theFlangeHeight) {
|
||||||
|
flangeHeight = theFlangeHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFlangeHeight(final double theFlangeHeight) {
|
||||||
|
flangeHeight = new AnnotatedLengthDTO(theFlangeHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ComponentPreset asComponentPreset(java.util.List<MaterialDTO> materials) throws InvalidComponentPresetException {
|
||||||
|
return asComponentPreset(ComponentPreset.Type.RAIL_BUTTON, materials);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ComponentPreset asComponentPreset(ComponentPreset.Type type, List<MaterialDTO> materials) throws InvalidComponentPresetException {
|
||||||
|
TypedPropertyMap props = new TypedPropertyMap();
|
||||||
|
addProps(props, materials);
|
||||||
|
props.put(ComponentPreset.INNER_DIAMETER, this.getInsideDiameter());
|
||||||
|
props.put(ComponentPreset.OUTER_DIAMETER, this.getOutsideDiameter());
|
||||||
|
props.put(ComponentPreset.HEIGHT, this.getHeight());
|
||||||
|
props.put(ComponentPreset.STANDOFF_HEIGHT, this.getStandoffHeight());
|
||||||
|
props.put(ComponentPreset.FLANGE_HEIGHT, this.getFlangeHeight());
|
||||||
|
props.put(ComponentPreset.TYPE, type);
|
||||||
|
|
||||||
|
return ComponentPresetFactory.create(props);
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,9 @@ package net.sf.openrocket.rocketcomponent;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import net.sf.openrocket.database.Databases;
|
||||||
import net.sf.openrocket.l10n.Translator;
|
import net.sf.openrocket.l10n.Translator;
|
||||||
|
import net.sf.openrocket.material.Material;
|
||||||
import net.sf.openrocket.preset.ComponentPreset;
|
import net.sf.openrocket.preset.ComponentPreset;
|
||||||
import net.sf.openrocket.preset.ComponentPreset.Type;
|
import net.sf.openrocket.preset.ComponentPreset.Type;
|
||||||
import net.sf.openrocket.rocketcomponent.position.AngleMethod;
|
import net.sf.openrocket.rocketcomponent.position.AngleMethod;
|
||||||
@ -16,7 +18,7 @@ import net.sf.openrocket.util.Coordinate;
|
|||||||
import net.sf.openrocket.util.MathUtil;
|
import net.sf.openrocket.util.MathUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WARNING: This class is only partially implemented. Recomend a bit of testing before you attach it to the GUI.
|
* WARNING: This class is only partially implemented. Recommend a bit of testing before you attach it to the GUI.
|
||||||
* @author widget (Daniel Williams)
|
* @author widget (Daniel Williams)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -59,12 +61,13 @@ public class RailButton extends ExternalComponent implements AnglePositionable,
|
|||||||
|
|
||||||
public RailButton(){
|
public RailButton(){
|
||||||
super(AxialMethod.MIDDLE);
|
super(AxialMethod.MIDDLE);
|
||||||
this.outerDiameter_m = 1.0;
|
this.outerDiameter_m = 0.0097;
|
||||||
this.totalHeight_m = 1.0;
|
this.totalHeight_m = 0.0097;
|
||||||
this.innerDiameter_m = 0.8;
|
this.innerDiameter_m = 0.008;
|
||||||
this.flangeHeight_m = 0.002;
|
this.flangeHeight_m = 0.002;
|
||||||
this.setStandoff( 0.002);
|
this.setStandoff( 0.002);
|
||||||
this.setInstanceSeparation( 1.0);
|
this.setInstanceSeparation( this.outerDiameter_m * 6);
|
||||||
|
this.setMaterial(Databases.findMaterial(Material.Type.BULK, "Delrin"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public RailButton( final double od, final double ht ) {
|
public RailButton( final double od, final double ht ) {
|
||||||
@ -81,6 +84,7 @@ public class RailButton extends ExternalComponent implements AnglePositionable,
|
|||||||
this.flangeHeight_m = flangeThickness;
|
this.flangeHeight_m = flangeThickness;
|
||||||
this.setStandoff( _standoff);
|
this.setStandoff( _standoff);
|
||||||
this.setInstanceSeparation( od*2);
|
this.setInstanceSeparation( od*2);
|
||||||
|
this.setMaterial(Databases.findMaterial(Material.Type.BULK, "Delrin"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final RailButton make1010Button(){
|
private static final RailButton make1010Button(){
|
||||||
|
@ -6,6 +6,7 @@ import javax.swing.JPanel;
|
|||||||
import javax.swing.JSpinner;
|
import javax.swing.JSpinner;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
import net.sf.openrocket.database.Databases;
|
||||||
import net.sf.openrocket.document.OpenRocketDocument;
|
import net.sf.openrocket.document.OpenRocketDocument;
|
||||||
import net.sf.openrocket.gui.SpinnerEditor;
|
import net.sf.openrocket.gui.SpinnerEditor;
|
||||||
import net.sf.openrocket.gui.adaptors.DoubleModel;
|
import net.sf.openrocket.gui.adaptors.DoubleModel;
|
||||||
@ -14,7 +15,6 @@ import net.sf.openrocket.gui.components.BasicSlider;
|
|||||||
import net.sf.openrocket.gui.components.UnitSelector;
|
import net.sf.openrocket.gui.components.UnitSelector;
|
||||||
import net.sf.openrocket.l10n.Translator;
|
import net.sf.openrocket.l10n.Translator;
|
||||||
import net.sf.openrocket.material.Material;
|
import net.sf.openrocket.material.Material;
|
||||||
import net.sf.openrocket.rocketcomponent.BodyTube;
|
|
||||||
import net.sf.openrocket.rocketcomponent.RailButton;
|
import net.sf.openrocket.rocketcomponent.RailButton;
|
||||||
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
import net.sf.openrocket.rocketcomponent.RocketComponent;
|
||||||
import net.sf.openrocket.rocketcomponent.position.AxialMethod;
|
import net.sf.openrocket.rocketcomponent.position.AxialMethod;
|
||||||
@ -43,6 +43,9 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private JPanel buttonTab( final RailButton rbc ){
|
private JPanel buttonTab( final RailButton rbc ){
|
||||||
|
|
||||||
|
JPanel primary = new JPanel(new MigLayout("fill"));
|
||||||
|
|
||||||
JPanel panel = new JPanel( new MigLayout());
|
JPanel panel = new JPanel( new MigLayout());
|
||||||
|
|
||||||
|
|
||||||
@ -80,30 +83,35 @@ public class RailButtonConfig extends RocketComponentConfig {
|
|||||||
|
|
||||||
final EnumModel<AxialMethod> methodModel = new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods );
|
final EnumModel<AxialMethod> methodModel = new EnumModel<AxialMethod>(component, "AxialMethod", AxialMethod.axialOffsetMethods );
|
||||||
JComboBox<AxialMethod> relToCombo = new JComboBox<AxialMethod>( methodModel );
|
JComboBox<AxialMethod> relToCombo = new JComboBox<AxialMethod>( methodModel );
|
||||||
panel.add( relToCombo, "growx, wrap rel");
|
panel.add( relToCombo, "spanx, growx, wrap");
|
||||||
}
|
}
|
||||||
|
|
||||||
{ //// plus
|
{ //// plus
|
||||||
final double parentLength = ((BodyTube)rbc.getParent()).getLength();
|
|
||||||
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.Plus")), "right");
|
panel.add(new JLabel(trans.get("RailBtnCfg.lbl.Plus")), "right");
|
||||||
DoubleModel offsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH);
|
DoubleModel offsetModel = new DoubleModel(component, "AxialOffset", UnitGroup.UNITS_LENGTH);
|
||||||
JSpinner offsetSpinner = new JSpinner(offsetModel.getSpinnerModel());
|
JSpinner offsetSpinner = new JSpinner(offsetModel.getSpinnerModel());
|
||||||
offsetSpinner.setEditor(new SpinnerEditor(offsetSpinner));
|
offsetSpinner.setEditor(new SpinnerEditor(offsetSpinner));
|
||||||
panel.add(offsetSpinner, "growx");
|
panel.add(offsetSpinner, "growx");
|
||||||
panel.add(new UnitSelector( offsetModel), "growx");
|
panel.add(new UnitSelector(offsetModel), "growx");
|
||||||
panel.add(new BasicSlider( offsetModel.getSliderModel(0, parentLength)), "w 100lp, wrap para");
|
panel.add(new BasicSlider(offsetModel.getSliderModel(
|
||||||
|
new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE),
|
||||||
|
new DoubleModel(component.getParent(), "Length"))),
|
||||||
|
"w 100lp, wrap para");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//// Material
|
primary.add(panel, "grow, gapright 201p");
|
||||||
panel.add( instanceablePanel(rbc), "cell 4 0, spany 3, wrap para");
|
panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
|
||||||
|
|
||||||
|
//// Instance count
|
||||||
|
panel.add( instanceablePanel(rbc), "span, wrap");
|
||||||
|
|
||||||
//// Material
|
//// Material
|
||||||
panel.add(materialPanel(Material.Type.BULK),"cell 4 2, spany 2, gapleft paragraph, aligny 0%, growy");
|
panel.add(materialPanel(Material.Type.BULK),"span, wrap");
|
||||||
// ... spany");
|
|
||||||
|
|
||||||
return panel;
|
primary.add(panel, "grow");
|
||||||
|
|
||||||
|
return primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -168,6 +168,17 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
private ImageIcon llImage;
|
private ImageIcon llImage;
|
||||||
private JButton llImageBtn;
|
private JButton llImageBtn;
|
||||||
|
|
||||||
|
private JTextField rbPartNoTextField;
|
||||||
|
private JTextField rbDescTextField;
|
||||||
|
private DoubleModel rbOuterDia;
|
||||||
|
private DoubleModel rbInnerDia;
|
||||||
|
private DoubleModel rbHeight;
|
||||||
|
private DoubleModel rbStandoffHeight;
|
||||||
|
private DoubleModel rbFlangeHeight;
|
||||||
|
private DoubleModel rbMass;
|
||||||
|
private ImageIcon rbImage;
|
||||||
|
private JButton rbImageBtn;
|
||||||
|
|
||||||
private JTextField stPartNoTextField;
|
private JTextField stPartNoTextField;
|
||||||
private JTextField stDescTextField;
|
private JTextField stDescTextField;
|
||||||
private DoubleModel stThickness;
|
private DoubleModel stThickness;
|
||||||
@ -204,6 +215,7 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
private static final String BULKHEAD_KEY = "Bulkhead.Bulkhead";
|
private static final String BULKHEAD_KEY = "Bulkhead.Bulkhead";
|
||||||
private static final String EB_KEY = "ComponentIcons.Engineblock";
|
private static final String EB_KEY = "ComponentIcons.Engineblock";
|
||||||
private static final String LAUNCH_LUG_KEY = "ComponentIcons.Launchlug";
|
private static final String LAUNCH_LUG_KEY = "ComponentIcons.Launchlug";
|
||||||
|
private static final String RAIL_BUTTON_KEY = "ComponentIcons.RailButton";
|
||||||
private static final String STREAMER_KEY = "ComponentIcons.Streamer";
|
private static final String STREAMER_KEY = "ComponentIcons.Streamer";
|
||||||
private static final String PARACHUTE_KEY = "ComponentIcons.Parachute";
|
private static final String PARACHUTE_KEY = "ComponentIcons.Parachute";
|
||||||
|
|
||||||
@ -217,6 +229,7 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
componentMap.put(trans.get(BULKHEAD_KEY), "BULKHEAD");
|
componentMap.put(trans.get(BULKHEAD_KEY), "BULKHEAD");
|
||||||
componentMap.put(trans.get(EB_KEY), "ENGINEBLOCK");
|
componentMap.put(trans.get(EB_KEY), "ENGINEBLOCK");
|
||||||
componentMap.put(trans.get(LAUNCH_LUG_KEY), "LAUNCHLUG");
|
componentMap.put(trans.get(LAUNCH_LUG_KEY), "LAUNCHLUG");
|
||||||
|
componentMap.put(trans.get(RAIL_BUTTON_KEY), "RAILBUTTON");
|
||||||
componentMap.put(trans.get(PARACHUTE_KEY), "PARACHUTE");
|
componentMap.put(trans.get(PARACHUTE_KEY), "PARACHUTE");
|
||||||
componentMap.put(trans.get(STREAMER_KEY), "STREAMER");
|
componentMap.put(trans.get(STREAMER_KEY), "STREAMER");
|
||||||
}
|
}
|
||||||
@ -961,6 +974,103 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Railbutton
|
||||||
|
{
|
||||||
|
JPanel rbPanel = new JPanel();
|
||||||
|
componentOverlayPanel.add(rbPanel, "RAILBUTTON");
|
||||||
|
rbPanel.setLayout(new MigLayout("", "[][grow][][grow]", "[][][][]"));
|
||||||
|
JLabel rbPartNoLabel = new JLabel("Part No:");
|
||||||
|
rbPanel.add(rbPartNoLabel, "cell 0 0,alignx left");
|
||||||
|
|
||||||
|
rbPartNoTextField = new JTextField();
|
||||||
|
rbPanel.add(rbPartNoTextField, "cell 1 0,growx");
|
||||||
|
rbPartNoTextField.setColumns(10);
|
||||||
|
|
||||||
|
JLabel rbDescLabel = new JLabel("Description:");
|
||||||
|
rbPanel.add(rbDescLabel, "cell 3 0,alignx left");
|
||||||
|
|
||||||
|
rbDescTextField = new JTextField();
|
||||||
|
rbPanel.add(rbDescTextField, "cell 4 0,growx");
|
||||||
|
rbDescTextField.setColumns(10);
|
||||||
|
|
||||||
|
JLabel rbOuterDiaLabel = new JLabel("Outer Dia.:");
|
||||||
|
rbPanel.add(rbOuterDiaLabel, "cell 0 1,alignx left");
|
||||||
|
|
||||||
|
rbOuterDia = new DoubleModel(0, UnitGroup.UNITS_LENGTH, 0);
|
||||||
|
JSpinner spin = new JSpinner(rbOuterDia.getSpinnerModel());
|
||||||
|
spin.setEditor(new SpinnerEditor(spin));
|
||||||
|
rbPanel.add(spin, "cell 1 1, growx");
|
||||||
|
rbPanel.add(new UnitSelector(rbOuterDia), "growx");
|
||||||
|
|
||||||
|
JLabel rbMassLabel = new JLabel("Mass:");
|
||||||
|
rbPanel.add(rbMassLabel, "cell 3 1,alignx left");
|
||||||
|
|
||||||
|
rbMass = new DoubleModel(0, UnitGroup.UNITS_MASS, 0);
|
||||||
|
spin = new JSpinner(rbMass.getSpinnerModel());
|
||||||
|
spin.setEditor(new SpinnerEditor(spin));
|
||||||
|
rbPanel.add(spin, "cell 4 1, growx");
|
||||||
|
rbPanel.add(new UnitSelector(llMass), "w 34lp!");
|
||||||
|
|
||||||
|
JLabel rbInnerDiaLabel = new JLabel("Inner Dia.:");
|
||||||
|
rbPanel.add(rbInnerDiaLabel, "cell 0 2,alignx left");
|
||||||
|
|
||||||
|
rbInnerDia = new DoubleModel(0, UnitGroup.UNITS_LENGTH, 0);
|
||||||
|
spin = new JSpinner(rbInnerDia.getSpinnerModel());
|
||||||
|
spin.setEditor(new SpinnerEditor(spin));
|
||||||
|
rbPanel.add(spin, "cell 1 2, growx");
|
||||||
|
rbPanel.add(new UnitSelector(rbInnerDia), "growx");
|
||||||
|
|
||||||
|
JLabel rbHeightLabel = new JLabel("Height:");
|
||||||
|
rbPanel.add(rbHeightLabel, "cell 3 2,alignx left");
|
||||||
|
|
||||||
|
rbHeight = new DoubleModel(0, UnitGroup.UNITS_LENGTH, 0);
|
||||||
|
spin = new JSpinner(rbHeight.getSpinnerModel());
|
||||||
|
spin.setEditor(new SpinnerEditor(spin));
|
||||||
|
rbPanel.add(spin, "cell 4 2, growx");
|
||||||
|
rbPanel.add(new UnitSelector(rbHeight), "w 34lp!");
|
||||||
|
|
||||||
|
JLabel rbStandoffLabel = new JLabel("Standoff:");
|
||||||
|
rbPanel.add(rbStandoffLabel, "cell 0 3,alignx left");
|
||||||
|
|
||||||
|
rbStandoffHeight = new DoubleModel(0, UnitGroup.UNITS_LENGTH, 0);
|
||||||
|
spin = new JSpinner(rbStandoffHeight.getSpinnerModel());
|
||||||
|
spin.setEditor(new SpinnerEditor(spin));
|
||||||
|
rbPanel.add(spin, "cell 1 3, growx");
|
||||||
|
rbPanel.add(new UnitSelector(rbStandoffHeight), "growx");
|
||||||
|
|
||||||
|
JLabel rbFlangeLabel = new JLabel("Flange:");
|
||||||
|
rbPanel.add(rbFlangeLabel, "cell 3 3,alignx left");
|
||||||
|
|
||||||
|
rbFlangeHeight = new DoubleModel(0, UnitGroup.UNITS_LENGTH, 0);
|
||||||
|
spin = new JSpinner(rbFlangeHeight.getSpinnerModel());
|
||||||
|
spin.setEditor(new SpinnerEditor(spin));
|
||||||
|
rbPanel.add(spin, "cell 4 3, growx");
|
||||||
|
rbPanel.add(new UnitSelector(rbFlangeHeight), "w 34lp!");
|
||||||
|
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.setMinimumSize(new Dimension(200, 200));
|
||||||
|
rbPanel.add(panel, "cell 4 4");
|
||||||
|
panel.setLayout(null);
|
||||||
|
rbImageBtn = new JButton("No Image");
|
||||||
|
rbImageBtn.setMaximumSize(new Dimension(75, 75));
|
||||||
|
rbImageBtn.setMinimumSize(new Dimension(75, 75));
|
||||||
|
panel.add(rbImageBtn);
|
||||||
|
rbImageBtn.setBounds(new Rectangle(6, 6, 132, 145));
|
||||||
|
|
||||||
|
rbImageBtn.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(final ActionEvent e) {
|
||||||
|
int returnVal = imageChooser.showOpenDialog(PresetEditorDialog.this);
|
||||||
|
|
||||||
|
if (returnVal == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File file = imageChooser.getSelectedFile();
|
||||||
|
rbImage = scaleImage(new ImageIcon(file.getAbsolutePath()).getImage(), 155);
|
||||||
|
rbImageBtn.setIcon(rbImage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
JPanel stPanel = new JPanel();
|
JPanel stPanel = new JPanel();
|
||||||
componentOverlayPanel.add(stPanel, "STREAMER");
|
componentOverlayPanel.add(stPanel, "STREAMER");
|
||||||
@ -1188,6 +1298,7 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
cb.addItem(trans.get(TRANSITION_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.TRANSITION));
|
cb.addItem(trans.get(TRANSITION_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.TRANSITION));
|
||||||
cb.addItem(trans.get(TUBE_COUPLER_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.TUBE_COUPLER));
|
cb.addItem(trans.get(TUBE_COUPLER_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.TUBE_COUPLER));
|
||||||
cb.addItem(trans.get(LAUNCH_LUG_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.LAUNCH_LUG));
|
cb.addItem(trans.get(LAUNCH_LUG_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.LAUNCH_LUG));
|
||||||
|
cb.addItem(trans.get(RAIL_BUTTON_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.RAIL_BUTTON));
|
||||||
cb.addItem(trans.get(PARACHUTE_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.PARACHUTE));
|
cb.addItem(trans.get(PARACHUTE_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.PARACHUTE));
|
||||||
cb.addItem(trans.get(STREAMER_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.STREAMER));
|
cb.addItem(trans.get(STREAMER_KEY), preset != null && !preset.get(ComponentPreset.TYPE).equals(ComponentPreset.Type.STREAMER));
|
||||||
}
|
}
|
||||||
@ -1447,6 +1558,41 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
llImageBtn.setIcon(llImage);
|
llImageBtn.setIcon(llImage);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RAIL_BUTTON:
|
||||||
|
setMaterial(materialChooser, preset, matHolder, Material.Type.BULK, ComponentPreset.MATERIAL);
|
||||||
|
typeCombo.setSelectedItem(trans.get(RAIL_BUTTON_KEY));
|
||||||
|
rbDescTextField.setText(preset.get(ComponentPreset.DESCRIPTION));
|
||||||
|
if (preset.has(ComponentPreset.INNER_DIAMETER)) {
|
||||||
|
rbInnerDia.setValue(preset.get(ComponentPreset.INNER_DIAMETER));
|
||||||
|
rbInnerDia.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit());
|
||||||
|
}
|
||||||
|
if (preset.has(ComponentPreset.OUTER_DIAMETER)) {
|
||||||
|
rbOuterDia.setValue(preset.get(ComponentPreset.OUTER_DIAMETER));
|
||||||
|
rbOuterDia.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit());
|
||||||
|
}
|
||||||
|
if (preset.has(ComponentPreset.HEIGHT)) {
|
||||||
|
rbHeight.setValue(preset.get(ComponentPreset.HEIGHT));
|
||||||
|
rbHeight.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit());
|
||||||
|
}
|
||||||
|
if (preset.has(ComponentPreset.STANDOFF_HEIGHT)) {
|
||||||
|
rbStandoffHeight.setValue(preset.get(ComponentPreset.STANDOFF_HEIGHT));
|
||||||
|
rbStandoffHeight.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit());
|
||||||
|
}
|
||||||
|
if (preset.has(ComponentPreset.FLANGE_HEIGHT)) {
|
||||||
|
rbFlangeHeight.setValue(preset.get(ComponentPreset.FLANGE_HEIGHT));
|
||||||
|
rbFlangeHeight.setCurrentUnit(UnitGroup.UNITS_LENGTH.getDefaultUnit());
|
||||||
|
}
|
||||||
|
if (preset.has(ComponentPreset.MASS)) {
|
||||||
|
rbMass.setValue(preset.get(ComponentPreset.MASS));
|
||||||
|
rbMass.setCurrentUnit(UnitGroup.UNITS_MASS.getDefaultUnit());
|
||||||
|
}
|
||||||
|
|
||||||
|
rbPartNoTextField.setText(preset.get(ComponentPreset.PARTNO));
|
||||||
|
if (preset.has(ComponentPreset.IMAGE)) {
|
||||||
|
rbImage = new ImageIcon(byteArrayToImage(preset.get(ComponentPreset.IMAGE)));
|
||||||
|
rbImageBtn.setIcon(llImage);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PARACHUTE:
|
case PARACHUTE:
|
||||||
setMaterial(materialChooser, preset, matHolder, Material.Type.SURFACE, ComponentPreset.MATERIAL);
|
setMaterial(materialChooser, preset, matHolder, Material.Type.SURFACE, ComponentPreset.MATERIAL);
|
||||||
typeCombo.setSelectedItem(trans.get(PARACHUTE_KEY));
|
typeCombo.setSelectedItem(trans.get(PARACHUTE_KEY));
|
||||||
@ -1579,6 +1725,12 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
clearLaunchLug();
|
clearLaunchLug();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (type.equals(trans.get(RAIL_BUTTON_KEY))) {
|
||||||
|
result = extractRailButton();
|
||||||
|
if (result != null) {
|
||||||
|
clearRailButton();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (type.equals(trans.get(PARACHUTE_KEY))) {
|
else if (type.equals(trans.get(PARACHUTE_KEY))) {
|
||||||
result = extractParachute();
|
result = extractParachute();
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
@ -1954,6 +2106,52 @@ public class PresetEditorDialog extends JDialog implements ItemListener {
|
|||||||
llImageBtn.setIcon(null);
|
llImageBtn.setIcon(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ComponentPreset extractRailButton() {
|
||||||
|
TypedPropertyMap props = new TypedPropertyMap();
|
||||||
|
try {
|
||||||
|
props.put(ComponentPreset.TYPE, ComponentPreset.Type.RAIL_BUTTON);
|
||||||
|
props.put(ComponentPreset.OUTER_DIAMETER, rbOuterDia.getValue());
|
||||||
|
props.put(ComponentPreset.INNER_DIAMETER, rbInnerDia.getValue());
|
||||||
|
props.put(ComponentPreset.STANDOFF_HEIGHT, rbStandoffHeight.getValue());
|
||||||
|
props.put(ComponentPreset.FLANGE_HEIGHT, rbFlangeHeight.getValue());
|
||||||
|
props.put(ComponentPreset.DESCRIPTION, rbDescTextField.getText());
|
||||||
|
props.put(ComponentPreset.PARTNO, rbPartNoTextField.getText());
|
||||||
|
props.put(ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer(mfgTextField.getText()));
|
||||||
|
props.put(ComponentPreset.HEIGHT, rbHeight.getValue());
|
||||||
|
final Material material = (Material) materialChooser.getSelectedItem();
|
||||||
|
if (material != null) {
|
||||||
|
props.put(ComponentPreset.MATERIAL, material);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
JOptionPane.showMessageDialog(null, "A material must be selected.", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
props.put(ComponentPreset.MASS, rbMass.getValue());
|
||||||
|
if (llImage != null) {
|
||||||
|
props.put(ComponentPreset.IMAGE, imageToByteArray(rbImage.getImage()));
|
||||||
|
}
|
||||||
|
return ComponentPresetFactory.create(props);
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
JOptionPane.showMessageDialog(null, "Could not convert rail button attribute.", "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
} catch (InvalidComponentPresetException e) {
|
||||||
|
JOptionPane.showMessageDialog(null, craftErrorMessage(e, "Mandatory rail button attribute not set."), "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearRailButton() {
|
||||||
|
rbOuterDia.setValue(0);
|
||||||
|
rbInnerDia.setValue(0);
|
||||||
|
rbDescTextField.setText("");
|
||||||
|
rbPartNoTextField.setText("");
|
||||||
|
rbFlangeHeight.setValue(0);
|
||||||
|
rbHeight.setValue(0);
|
||||||
|
rbStandoffHeight.setValue(0);
|
||||||
|
rbMass.setValue(0);
|
||||||
|
rbImage = null;
|
||||||
|
rbImageBtn.setIcon(null);
|
||||||
|
}
|
||||||
|
|
||||||
public ComponentPreset extractParachute() {
|
public ComponentPreset extractParachute() {
|
||||||
TypedPropertyMap props = new TypedPropertyMap();
|
TypedPropertyMap props = new TypedPropertyMap();
|
||||||
try {
|
try {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user