diff --git a/core/build.xml b/core/build.xml
index 1104bc19a..3096780d6 100644
--- a/core/build.xml
+++ b/core/build.xml
@@ -27,7 +27,7 @@
-
+
diff --git a/core/src/net/sf/openrocket/gui/main/BasicFrame.java b/core/src/net/sf/openrocket/gui/main/BasicFrame.java
index 3a0d1380d..e44fa0c24 100644
--- a/core/src/net/sf/openrocket/gui/main/BasicFrame.java
+++ b/core/src/net/sf/openrocket/gui/main/BasicFrame.java
@@ -83,7 +83,6 @@ import net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog;
import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog;
import net.sf.openrocket.gui.help.tours.GuidedTourSelectionDialog;
import net.sf.openrocket.gui.main.componenttree.ComponentTree;
-import net.sf.openrocket.gui.preset.ComponentPresetEditor;
import net.sf.openrocket.gui.scalefigure.RocketPanel;
import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.GUIUtil;
@@ -101,6 +100,7 @@ import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.MemoryManagement;
import net.sf.openrocket.util.MemoryManagement.MemoryData;
+import net.sf.openrocket.utils.ComponentPresetEditor;
import net.sf.openrocket.util.Reflection;
import net.sf.openrocket.util.StateChangeListener;
import net.sf.openrocket.util.TestRockets;
diff --git a/core/src/net/sf/openrocket/gui/print/ConceptPrintDialog.java b/core/src/net/sf/openrocket/gui/print/ConceptPrintDialog.java
deleted file mode 100644
index 9a07efa08..000000000
--- a/core/src/net/sf/openrocket/gui/print/ConceptPrintDialog.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package net.sf.openrocket.gui.print;
-
-import java.awt.Window;
-import java.lang.reflect.InvocationTargetException;
-
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.SwingUtilities;
-
-import net.miginfocom.swing.MigLayout;
-import net.sf.openrocket.gui.util.GUIUtil;
-
-public class ConceptPrintDialog extends JDialog {
-
- public ConceptPrintDialog() {
- super((Window) null, "Print");
-
- JPanel panel = new JPanel(new MigLayout("fill"));
-
- JList list = new JList(new Object[] {
- "Model name",
- "Parts detail",
- "Fin templates",
- "Design report"
- });
- panel.add(new JScrollPane(list), "spanx, growx, wrap");
-
- JCheckBox checkbox = new JCheckBox("Show by stage");
- panel.add(checkbox, "");
-
- JButton button = new JButton("Settings");
- panel.add(button, "right, wrap para");
-
- JLabel label = new JLabel("Printer: LaserJet 6L
Paper size: A4 Portrait");
- panel.add(label);
-
- button = new JButton("Change");
- panel.add(button, "right, wrap 20lp");
-
- panel.add(new JButton("Save as PDF"), "split, spanx, right");
- panel.add(new JButton("Preview"), "right");
- panel.add(new JButton("Print"), "right");
- panel.add(new JButton("Close"), "right");
-
-
- this.add(panel);
-
- }
-
-
-
- public static void main(String[] args) throws InterruptedException, InvocationTargetException {
- SwingUtilities.invokeAndWait(new Runnable() {
- @Override
- public void run() {
- GUIUtil.setBestLAF();
- JDialog dialog = new ConceptPrintDialog();
- GUIUtil.setDisposableDialogOptions(dialog, null);
- dialog.setSize(450, 350);
- dialog.setVisible(true);
- }
- });
- }
-
-}
diff --git a/core/src/net/sf/openrocket/startup/GuiModule.java b/core/src/net/sf/openrocket/startup/GuiModule.java
index c5f862330..a357bb08d 100644
--- a/core/src/net/sf/openrocket/startup/GuiModule.java
+++ b/core/src/net/sf/openrocket/startup/GuiModule.java
@@ -16,6 +16,7 @@ import net.sf.openrocket.startup.providers.BlockingMotorDatabaseProvider;
import net.sf.openrocket.startup.providers.TranslatorProvider;
import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
/**
* GuiModule is the Guice Module for the OpenRocket Swing application.
@@ -26,7 +27,7 @@ import com.google.inject.AbstractModule;
*
* GuiModule module = new GuiModule();
* Application.setInjector( Guice.createInjector(guiModule));
- * module.startLoadin();
+ * module.startLoading();
*
*
* @author kruland
@@ -44,17 +45,17 @@ public class GuiModule extends AbstractModule {
@Override
protected void configure() {
- bind(Preferences.class).to(SwingPreferences.class);
- bind(Translator.class).toProvider(TranslatorProvider.class);
- bind(RocketDescriptor.class).to(RocketDescriptorImpl.class);
- bind(WatchService.class).to(WatchServiceImpl.class);
+ bind(Preferences.class).to(SwingPreferences.class).in(Scopes.SINGLETON);
+ bind(Translator.class).toProvider(TranslatorProvider.class).in(Scopes.SINGLETON);
+ bind(RocketDescriptor.class).to(RocketDescriptorImpl.class).in(Scopes.SINGLETON);
+ bind(WatchService.class).to(WatchServiceImpl.class).in(Scopes.SINGLETON);
BlockingComponentPresetDatabaseProvider componentDatabaseProvider = new BlockingComponentPresetDatabaseProvider(presetLoader);
- bind(ComponentPresetDao.class).toProvider(componentDatabaseProvider);
+ bind(ComponentPresetDao.class).toProvider(componentDatabaseProvider).in(Scopes.SINGLETON);
BlockingMotorDatabaseProvider motorDatabaseProvider = new BlockingMotorDatabaseProvider(motorLoader);
- bind(ThrustCurveMotorSetDatabase.class).toProvider(motorDatabaseProvider);
- bind(MotorDatabase.class).toProvider(motorDatabaseProvider);
+ bind(ThrustCurveMotorSetDatabase.class).toProvider(motorDatabaseProvider).in(Scopes.SINGLETON);
+ bind(MotorDatabase.class).toProvider(motorDatabaseProvider).in(Scopes.SINGLETON);
}
diff --git a/core/src/net/sf/openrocket/startup/OSXStartup.java b/core/src/net/sf/openrocket/startup/OSXSetup.java
similarity index 95%
rename from core/src/net/sf/openrocket/startup/OSXStartup.java
rename to core/src/net/sf/openrocket/startup/OSXSetup.java
index fe657334f..d34a99825 100644
--- a/core/src/net/sf/openrocket/startup/OSXStartup.java
+++ b/core/src/net/sf/openrocket/startup/OSXSetup.java
@@ -26,8 +26,8 @@ import com.apple.eawt.AppEvent.QuitEvent;
* @author Bill Kuker
*
*/
-final class OSXStartup {
- private static final Logger log = LoggerFactory.getLogger(OSXStartup.class);
+final class OSXSetup {
+ private static final Logger log = LoggerFactory.getLogger(OSXSetup.class);
// The name in the app menu
private static final String APP_NAME = "OpenRocket";
@@ -103,7 +103,7 @@ final class OSXStartup {
// Set the dock icon to the largest icon
final Image dockIcon = Toolkit.getDefaultToolkit().getImage(
- SwingApplication.class.getResource(ICON_RSRC));
+ SwingStartup.class.getResource(ICON_RSRC));
osxApp.setDockIconImage(dockIcon);
} catch (final Throwable t) {
diff --git a/core/src/net/sf/openrocket/startup/JiJStartup.java b/core/src/net/sf/openrocket/startup/Startup.java
similarity index 94%
rename from core/src/net/sf/openrocket/startup/JiJStartup.java
rename to core/src/net/sf/openrocket/startup/Startup.java
index 8fb0c7553..2bc9754fa 100644
--- a/core/src/net/sf/openrocket/startup/JiJStartup.java
+++ b/core/src/net/sf/openrocket/startup/Startup.java
@@ -15,7 +15,7 @@ import net.sf.openrocket.startup.jij.PluginClasspathProvider;
*
* The startup class sequence is the following:
* 1. Startup
- * 2. SwingApplication
+ * 2. SwingStartup
*
* This class changes the current classpath to contain the jar-in-jar
* library dependencies and plugins in the current classpath, and
@@ -23,9 +23,9 @@ import net.sf.openrocket.startup.jij.PluginClasspathProvider;
*
* @author Sampo Niskanen
*/
-public class JiJStartup {
+public class Startup {
- private static final String STARTUP_CLASS = "net.sf.openrocket.startup.SwingApplication";
+ private static final String STARTUP_CLASS = "net.sf.openrocket.startup.SwingStartup";
public static void main(String[] args) {
addClasspathUrlHandler();
diff --git a/core/src/net/sf/openrocket/startup/SwingApplication.java b/core/src/net/sf/openrocket/startup/SwingStartup.java
similarity index 98%
rename from core/src/net/sf/openrocket/startup/SwingApplication.java
rename to core/src/net/sf/openrocket/startup/SwingStartup.java
index da1ae7069..2ccbb56a5 100644
--- a/core/src/net/sf/openrocket/startup/SwingApplication.java
+++ b/core/src/net/sf/openrocket/startup/SwingStartup.java
@@ -39,9 +39,9 @@ import com.google.inject.Module;
*
* @author Sampo Niskanen
*/
-public class SwingApplication {
+public class SwingStartup {
- private final static Logger log = LoggerFactory.getLogger(SwingApplication.class);
+ private final static Logger log = LoggerFactory.getLogger(SwingStartup.class);
/**
* OpenRocket startup main method.
@@ -61,10 +61,10 @@ public class SwingApplication {
// If running on a MAC set up OSX UI Elements.
if (SystemInfo.getPlatform() == Platform.MAC_OS) {
- OSXStartup.setupOSX();
+ OSXSetup.setupOSX();
}
- final SwingApplication runner = new SwingApplication();
+ final SwingStartup runner = new SwingStartup();
// Run the actual startup method in the EDT since it can use progress dialogs etc.
log.info("Moving startup to EDT");
diff --git a/core/src/net/sf/openrocket/startup/providers/TranslatorProvider.java b/core/src/net/sf/openrocket/startup/providers/TranslatorProvider.java
index 8111dd203..b10b83453 100644
--- a/core/src/net/sf/openrocket/startup/providers/TranslatorProvider.java
+++ b/core/src/net/sf/openrocket/startup/providers/TranslatorProvider.java
@@ -1,6 +1,7 @@
package net.sf.openrocket.startup.providers;
import java.util.Locale;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.prefs.Preferences;
import net.sf.openrocket.l10n.DebugTranslator;
@@ -17,9 +18,17 @@ public class TranslatorProvider implements Provider {
private final static Logger log = LoggerFactory.getLogger(TranslatorProvider.class);
+ private AtomicReference translator = new AtomicReference();
+
@Override
public Translator get() {
+ Translator oldTranslator = translator.get();
+
+ if (oldTranslator != null) {
+ return oldTranslator;
+ }
+
// Check for locale propery
String langcode = System.getProperty("openrocket.locale");
@@ -43,16 +52,20 @@ public class TranslatorProvider implements Provider {
}
// Setup the translator
- Translator t;
- t = new ResourceBundleTranslator("l10n.messages");
+ Translator newTranslator;
+ newTranslator = new ResourceBundleTranslator("l10n.messages");
if (Locale.getDefault().getLanguage().equals("xx")) {
- t = new DebugTranslator(t);
+ newTranslator = new DebugTranslator(newTranslator);
}
log.info("Set up translation for locale " + Locale.getDefault() +
- ", debug.currentFile=" + t.get("debug.currentFile"));
+ ", debug.currentFile=" + newTranslator.get("debug.currentFile"));
- return t;
+ if (translator.compareAndSet(null, newTranslator)) {
+ return newTranslator;
+ } else {
+ return translator.get();
+ }
}
diff --git a/core/src/net/sf/openrocket/gui/preset/ComponentPresetEditor.java b/core/src/net/sf/openrocket/utils/ComponentPresetEditor.java
similarity index 98%
rename from core/src/net/sf/openrocket/gui/preset/ComponentPresetEditor.java
rename to core/src/net/sf/openrocket/utils/ComponentPresetEditor.java
index 0f2b2f66b..f31092f21 100644
--- a/core/src/net/sf/openrocket/gui/preset/ComponentPresetEditor.java
+++ b/core/src/net/sf/openrocket/utils/ComponentPresetEditor.java
@@ -1,4 +1,4 @@
-package net.sf.openrocket.gui.preset;
+package net.sf.openrocket.utils;
import java.awt.Window;
import java.awt.event.ActionEvent;
@@ -31,6 +31,9 @@ import javax.swing.table.DefaultTableModel;
import javax.xml.bind.JAXBException;
import net.miginfocom.swing.MigLayout;
+import net.sf.openrocket.gui.preset.ButtonColumn;
+import net.sf.openrocket.gui.preset.PresetEditorDialog;
+import net.sf.openrocket.gui.preset.PresetResultListener;
import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.gui.util.SwingPreferences;
@@ -38,11 +41,9 @@ import net.sf.openrocket.logging.Markers;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.preset.loader.MaterialHolder;
-import net.sf.openrocket.preset.loader.RocksimComponentFileTranslator;
import net.sf.openrocket.preset.xml.OpenRocketComponentDTO;
import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
import net.sf.openrocket.startup.Application;
-import net.sf.openrocket.utils.BasicApplication;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/core/src/net/sf/openrocket/preset/loader/RocksimComponentFileTranslator.java b/core/src/net/sf/openrocket/utils/RocksimComponentFileTranslator.java
similarity index 88%
rename from core/src/net/sf/openrocket/preset/loader/RocksimComponentFileTranslator.java
rename to core/src/net/sf/openrocket/utils/RocksimComponentFileTranslator.java
index 15e69bea3..bbd12f143 100644
--- a/core/src/net/sf/openrocket/preset/loader/RocksimComponentFileTranslator.java
+++ b/core/src/net/sf/openrocket/utils/RocksimComponentFileTranslator.java
@@ -1,4 +1,4 @@
-package net.sf.openrocket.preset.loader;
+package net.sf.openrocket.utils;
import java.io.File;
import java.io.FileWriter;
@@ -8,9 +8,20 @@ import java.util.List;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.loader.BodyTubeLoader;
+import net.sf.openrocket.preset.loader.BulkHeadLoader;
+import net.sf.openrocket.preset.loader.CenteringRingLoader;
+import net.sf.openrocket.preset.loader.EngineBlockLoader;
+import net.sf.openrocket.preset.loader.LaunchLugLoader;
+import net.sf.openrocket.preset.loader.MaterialHolder;
+import net.sf.openrocket.preset.loader.MaterialLoader;
+import net.sf.openrocket.preset.loader.NoseConeLoader;
+import net.sf.openrocket.preset.loader.ParachuteLoader;
+import net.sf.openrocket.preset.loader.StreamerLoader;
+import net.sf.openrocket.preset.loader.TransitionLoader;
+import net.sf.openrocket.preset.loader.TubeCouplerLoader;
import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
import net.sf.openrocket.util.ArrayList;
-import net.sf.openrocket.utils.BasicApplication;
public class RocksimComponentFileTranslator {