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 {