diff --git a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java index 3cc791d79..0aa872706 100644 --- a/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/OpenRocketSaver.java @@ -46,6 +46,7 @@ public class OpenRocketSaver extends RocketSaver { private static final String METHOD_PACKAGE = "net.sf.openrocket.file.openrocket.savers"; private static final String METHOD_SUFFIX = "Saver"; + public static final String INDENT = " "; // Estimated storage used by different portions @@ -636,10 +637,7 @@ public class OpenRocketSaver extends RocketSaver { dest.write("\n"); return; } - String s = ""; - for (int i = 0; i < indent; i++) - s = s + " "; - s = s + str + "\n"; + String s = INDENT.repeat(Math.max(0, indent)) + str + "\n"; dest.write(s); } diff --git a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java index 2ae1b1085..30da61d9d 100644 --- a/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java +++ b/core/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java @@ -9,6 +9,7 @@ import java.util.Map; import net.sf.openrocket.appearance.Appearance; import net.sf.openrocket.appearance.Decal; import net.sf.openrocket.appearance.Decal.EdgeMode; +import net.sf.openrocket.file.openrocket.OpenRocketSaver; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; import net.sf.openrocket.motor.Motor; @@ -57,8 +58,8 @@ public class RocketComponentSaver { Appearance ap_in = handler.getInsideAppearance(); if (ap_in != null) { elements.add(""); - elements.add("" + handler.isEdgesSameAsInside() + ""); - elements.add("" + handler.isSeparateInsideOutside() + ""); + appendElement(elements, "edgesSameAsInside", handler.isEdgesSameAsInside(), 1); + appendElement(elements, "insideSameAsOutside", handler.isSeparateInsideOutside(), 1); buildAppearanceElements(elements, ap_in); elements.add(""); } @@ -67,7 +68,7 @@ public class RocketComponentSaver { // Save color and line style if significant if (!(c instanceof Rocket || c instanceof ComponentAssembly)) { Color color = c.getColor(); - emitColor("color", elements, color); + emitColor("color", elements, color, 0); LineStyle style = c.getLineStyle(); if (style != null) { @@ -154,21 +155,21 @@ public class RocketComponentSaver { private void buildAppearanceElements(List elements, Appearance a) { Color paint = a.getPaint(); - emitColor("paint", elements, paint); - elements.add("" + a.getShine() + ""); + emitColor("paint", elements, paint, 1); + appendElement(elements, "shine", a.getShine(), 1); Decal decal = a.getTexture(); if (decal != null) { String name = decal.getImage().getName(); double rotation = decal.getRotation(); EdgeMode edgeMode = decal.getEdgeMode(); - elements.add(""); + elements.add(OpenRocketSaver.INDENT + ""); Coordinate center = decal.getCenter(); - elements.add("
"); + elements.add(OpenRocketSaver.INDENT.repeat(2) + "
"); Coordinate offset = decal.getOffset(); - elements.add(""); + elements.add(OpenRocketSaver.INDENT.repeat(2) + ""); Coordinate scale = decal.getScale(); - elements.add(""); - elements.add(""); + elements.add(OpenRocketSaver.INDENT.repeat(2) + ""); + elements.add(OpenRocketSaver.INDENT + ""); } } @@ -268,12 +269,11 @@ public class RocketComponentSaver { return elements; } - private final static void emitColor(String elementName, List elements, Color color) { + private final static void emitColor(String elementName, List elements, Color color, int indents) { if (color != null) { - elements.add("<" + elementName + " red=\"" + color.getRed() + "\" green=\"" + color.getGreen() + elements.add(OpenRocketSaver.INDENT.repeat(Math.max(0, indents)) + "<" + elementName + " red=\"" + color.getRed() + "\" green=\"" + color.getGreen() + "\" blue=\"" + color.getBlue() + "\" alpha=\"" + color.getAlpha() + "\"/>"); } - } protected static void emitDouble( final List elements, final String enclosingTag, final double value){ @@ -300,8 +300,20 @@ public class RocketComponentSaver { return buf.toString(); } + protected static void appendElement( final List elements, final String openTag, final String closeTag, final String elementValue, final int indents){ + elements.add(OpenRocketSaver.INDENT.repeat(Math.max(0, indents)) + "<"+openTag+">" + elementValue + ""); + } + + protected static void appendElement( final List elements, final String tag, final double elementValue, final int indents){ + appendElement(elements, tag, tag, Double.toString(elementValue), indents); + } + + protected static void appendElement( final List elements, final String tag, final boolean elementValue, final int indents){ + appendElement(elements, tag, tag, Boolean.toString(elementValue), indents); + } + protected static void appendElement( final List elements, final String openTag, final String closeTag, final String elementValue ){ - elements.add("<"+openTag+">" + elementValue + ""); + appendElement(elements, openTag, closeTag, elementValue, 0); } }