From 832e6106753d484a89e15885d780f67f2a92d45c Mon Sep 17 00:00:00 2001 From: Kevin Ruland Date: Sat, 17 Dec 2011 04:45:16 +0000 Subject: [PATCH] Removed use of java.awt.Color from RocketComponent, OpenRocketLoader. The class net.sf.openrocket.util.Color is used instead in these components, and the conversion to/from java.awt.Color is done in the gui code. This is necessary to port RocketComponent to Android platform. --- .../file/openrocket/OpenRocketLoader.java | 2 +- .../savers/RocketComponentSaver.java | 2 +- .../configdialog/RocketComponentConfig.java | 15 ++++---- .../gui/scalefigure/RocketFigure.java | 7 ++-- .../openrocket/gui/util/SwingPreferences.java | 30 ---------------- .../rocketcomponent/RocketComponent.java | 2 +- .../sf/openrocket/startup/Preferences.java | 36 +++++++++++++++++++ src/net/sf/openrocket/util/TestRockets.java | 1 - .../rocketcomponent/ComponentCompareTest.java | 3 +- .../rocketcomponent/FinSetTest.java | 3 +- 10 files changed, 56 insertions(+), 45 deletions(-) diff --git a/src/net/sf/openrocket/file/openrocket/OpenRocketLoader.java b/src/net/sf/openrocket/file/openrocket/OpenRocketLoader.java index 73f43e500..26400c0bc 100644 --- a/src/net/sf/openrocket/file/openrocket/OpenRocketLoader.java +++ b/src/net/sf/openrocket/file/openrocket/OpenRocketLoader.java @@ -1,6 +1,5 @@ package net.sf.openrocket.file.openrocket; -import java.awt.Color; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Constructor; @@ -73,6 +72,7 @@ import net.sf.openrocket.simulation.SimulationOptions; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.util.BugException; +import net.sf.openrocket.util.Color; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.GeodeticComputationStrategy; import net.sf.openrocket.util.LineStyle; diff --git a/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java b/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java index ab0a00380..44e71e4b9 100644 --- a/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java +++ b/src/net/sf/openrocket/file/openrocket/savers/RocketComponentSaver.java @@ -1,6 +1,5 @@ package net.sf.openrocket.file.openrocket.savers; -import java.awt.Color; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -15,6 +14,7 @@ import net.sf.openrocket.rocketcomponent.MotorMount; import net.sf.openrocket.rocketcomponent.Rocket; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.util.BugException; +import net.sf.openrocket.util.Color; import net.sf.openrocket.util.LineStyle; diff --git a/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java b/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java index f4dfa8ba6..95853b024 100644 --- a/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/RocketComponentConfig.java @@ -35,6 +35,7 @@ import net.sf.openrocket.gui.components.ColorIcon; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.components.UnitSelector; +import net.sf.openrocket.gui.util.ColorConversion; import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.gui.util.SwingPreferences; import net.sf.openrocket.l10n.Translator; @@ -377,13 +378,15 @@ public class RocketComponentConfig extends JPanel { colorButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - Color c = component.getColor(); + net.sf.openrocket.util.Color c = component.getColor(); if (c == null) { - c = ((SwingPreferences) Application.getPreferences()).getDefaultColor(component.getClass()); + c = Application.getPreferences().getDefaultColor(component.getClass()); } //// Choose color - c = JColorChooser.showDialog(tabbedPane, trans.get("RocketCompCfg.lbl.Choosecolor"), c); + Color awtColor = ColorConversion.toAwtColor(c); + awtColor = JColorChooser.showDialog(tabbedPane, trans.get("RocketCompCfg.lbl.Choosecolor"), awtColor); + c = ColorConversion.fromAwtColor(awtColor); if (c != null) { component.setColor(c); } @@ -439,11 +442,11 @@ public class RocketComponentConfig extends JPanel { private Color getColor() { - Color c = component.getColor(); + net.sf.openrocket.util.Color c = component.getColor(); if (c == null) { - c = ((SwingPreferences) Application.getPreferences()).getDefaultColor(component.getClass()); + c = Application.getPreferences().getDefaultColor(component.getClass()); } - return c; + return ColorConversion.toAwtColor(c); } diff --git a/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java b/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java index 62b6ded5d..8045f4541 100644 --- a/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java +++ b/src/net/sf/openrocket/gui/scalefigure/RocketFigure.java @@ -21,6 +21,7 @@ import java.util.LinkedHashSet; import net.sf.openrocket.gui.figureelements.FigureElement; import net.sf.openrocket.gui.main.ExceptionHandler; +import net.sf.openrocket.gui.util.ColorConversion; import net.sf.openrocket.gui.util.SwingPreferences; import net.sf.openrocket.motor.Motor; import net.sf.openrocket.rocketcomponent.Configuration; @@ -310,11 +311,11 @@ public class RocketFigure extends AbstractScaleFigure { } // Set component color and line style - Color color = c.getColor(); + net.sf.openrocket.util.Color color = c.getColor(); if (color == null) { - color = ((SwingPreferences) Application.getPreferences()).getDefaultColor(c.getClass()); + color = Application.getPreferences().getDefaultColor(c.getClass()); } - g2.setColor(color); + g2.setColor(ColorConversion.toAwtColor(color)); LineStyle style = c.getLineStyle(); if (style == null) diff --git a/src/net/sf/openrocket/gui/util/SwingPreferences.java b/src/net/sf/openrocket/gui/util/SwingPreferences.java index 951ce919b..c1847a185 100644 --- a/src/net/sf/openrocket/gui/util/SwingPreferences.java +++ b/src/net/sf/openrocket/gui/util/SwingPreferences.java @@ -89,17 +89,6 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { } - private static final HashMap, String> DEFAULT_COLORS = - new HashMap, String>(); - static { - DEFAULT_COLORS.put(BodyComponent.class, "0,0,240"); - DEFAULT_COLORS.put(FinSet.class, "0,0,200"); - DEFAULT_COLORS.put(LaunchLug.class, "0,0,180"); - DEFAULT_COLORS.put(InternalComponent.class, "170,0,100"); - DEFAULT_COLORS.put(MassObject.class, "0,0,0"); - DEFAULT_COLORS.put(RecoveryDevice.class, "255,0,0"); - } - ////////////////////// @@ -315,25 +304,6 @@ public class SwingPreferences extends net.sf.openrocket.startup.Preferences { return new Color(0, 0, 0, 100); } - public Color getDefaultColor(Class c) { - String color = get("componentColors", c, DEFAULT_COLORS); - if (color == null) - return Color.BLACK; - - net.sf.openrocket.util.Color clr = parseColor(color); - if (clr != null) { - return ColorConversion.toAwtColor(clr); - } else { - return Color.BLACK; - } - } - - public final void setDefaultColor(Class c, Color color) { - if (color == null) - return; - putString("componentColors", c.getSimpleName(), stringifyColor(ColorConversion.fromAwtColor(color))); - } - public static int getMaxThreadCount() { diff --git a/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index fee3593f4..a5c8c66a2 100644 --- a/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1,6 +1,5 @@ package net.sf.openrocket.rocketcomponent; -import java.awt.Color; import java.util.ArrayDeque; import java.util.Collection; import java.util.Deque; @@ -16,6 +15,7 @@ import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.ArrayList; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.ChangeSource; +import net.sf.openrocket.util.Color; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.Invalidator; import net.sf.openrocket.util.LineStyle; diff --git a/src/net/sf/openrocket/startup/Preferences.java b/src/net/sf/openrocket/startup/Preferences.java index 77b13f410..e728d396f 100644 --- a/src/net/sf/openrocket/startup/Preferences.java +++ b/src/net/sf/openrocket/startup/Preferences.java @@ -6,7 +6,12 @@ import java.util.Map; import net.sf.openrocket.database.Databases; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.material.Material; +import net.sf.openrocket.rocketcomponent.BodyComponent; +import net.sf.openrocket.rocketcomponent.FinSet; +import net.sf.openrocket.rocketcomponent.InternalComponent; +import net.sf.openrocket.rocketcomponent.LaunchLug; import net.sf.openrocket.rocketcomponent.MassObject; +import net.sf.openrocket.rocketcomponent.RecoveryDevice; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.BuildProperties; @@ -168,6 +173,26 @@ public abstract class Preferences { } } + public Color getDefaultColor(Class c) { + String color = get("componentColors", c, DEFAULT_COLORS); + if (color == null) + return Color.BLACK; + + Color clr = parseColor(color); + if (clr != null) { + return clr; + } else { + return Color.BLACK; + } + } + + public final void setDefaultColor(Class c, Color color) { + if (color == null) + return; + putString("componentColors", c.getSimpleName(), stringifyColor(color)); + } + + /** * Retrieve a Line style for the given component. * @param c @@ -361,6 +386,17 @@ public abstract class Preferences { Databases.findMaterial(Material.Type.BULK, trans.get("Databases.materials.Cardboard"), 680, false); } + private static final HashMap, String> DEFAULT_COLORS = + new HashMap, String>(); + static { + DEFAULT_COLORS.put(BodyComponent.class, "0,0,240"); + DEFAULT_COLORS.put(FinSet.class, "0,0,200"); + DEFAULT_COLORS.put(LaunchLug.class, "0,0,180"); + DEFAULT_COLORS.put(InternalComponent.class, "170,0,100"); + DEFAULT_COLORS.put(MassObject.class, "0,0,0"); + DEFAULT_COLORS.put(RecoveryDevice.class, "255,0,0"); + } + } diff --git a/src/net/sf/openrocket/util/TestRockets.java b/src/net/sf/openrocket/util/TestRockets.java index 467d19dfb..0dfc56291 100644 --- a/src/net/sf/openrocket/util/TestRockets.java +++ b/src/net/sf/openrocket/util/TestRockets.java @@ -1,6 +1,5 @@ package net.sf.openrocket.util; -import java.awt.Color; import java.util.Random; import net.sf.openrocket.material.Material; diff --git a/test/net/sf/openrocket/rocketcomponent/ComponentCompareTest.java b/test/net/sf/openrocket/rocketcomponent/ComponentCompareTest.java index 11acf71ae..46c8f21d2 100644 --- a/test/net/sf/openrocket/rocketcomponent/ComponentCompareTest.java +++ b/test/net/sf/openrocket/rocketcomponent/ComponentCompareTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.*; import java.awt.Color; import java.util.Iterator; +import net.sf.openrocket.gui.util.ColorConversion; import net.sf.openrocket.util.Coordinate; import org.junit.Test; @@ -37,7 +38,7 @@ public class ComponentCompareTest { ComponentCompare.assertDeepSimilarity(r1, r2, false); - r1.setColor(Color.YELLOW); + r1.setColor(ColorConversion.fromAwtColor(Color.YELLOW)); try { ComponentCompare.assertEquality(r1, r2); fail(); diff --git a/test/net/sf/openrocket/rocketcomponent/FinSetTest.java b/test/net/sf/openrocket/rocketcomponent/FinSetTest.java index 3e1a8d61c..abec65cee 100644 --- a/test/net/sf/openrocket/rocketcomponent/FinSetTest.java +++ b/test/net/sf/openrocket/rocketcomponent/FinSetTest.java @@ -6,6 +6,7 @@ import static org.junit.Assert.assertTrue; import java.awt.Color; +import net.sf.openrocket.gui.util.ColorConversion; import net.sf.openrocket.material.Material; import net.sf.openrocket.material.Material.Type; import net.sf.openrocket.rocketcomponent.ExternalComponent.Finish; @@ -35,7 +36,7 @@ public class FinSetTest extends BaseTestCase { fin.setBaseRotation(1.1); fin.setCantAngle(0.001); fin.setCGOverridden(true); - fin.setColor(Color.YELLOW); + fin.setColor(ColorConversion.fromAwtColor(Color.YELLOW)); fin.setComment("cmt"); fin.setCrossSection(CrossSection.ROUNDED); fin.setFinCount(5);