Repackage a bunch of stuff. Rework the GuiModule so it stands alone.
This commit is contained in:
parent
ae7b2b3af1
commit
15ecef0bd7
@ -118,14 +118,14 @@
|
||||
</target>
|
||||
|
||||
<target name="serialize-presets" depends="build" description="Preprocess the orc preset files into serialized form">
|
||||
<java classname="net.sf.openrocket.startup.SerializePresets"
|
||||
<java classname="net.sf.openrocket.utils.SerializePresets"
|
||||
fork="true"
|
||||
classpathref="run-classpath"
|
||||
failonerror="true">
|
||||
</java>
|
||||
</target>
|
||||
<target name="serialize-motors" depends="build" description="Preprocess the motor files into serialized form">
|
||||
<java classname="net.sf.openrocket.startup.SerializeMotors"
|
||||
<java classname="net.sf.openrocket.utils.SerializeMotors"
|
||||
fork="true"
|
||||
classpathref="run-classpath"
|
||||
failonerror="true">
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.database;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@ -6,14 +6,13 @@ import java.io.ObjectInputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import net.sf.openrocket.database.AsynchronousDatabaseLoader;
|
||||
import net.sf.openrocket.database.ComponentPresetDatabase;
|
||||
import net.sf.openrocket.file.iterator.DirectoryIterator;
|
||||
import net.sf.openrocket.file.iterator.FileIterator;
|
||||
import net.sf.openrocket.gui.util.SimpleFileFilter;
|
||||
import net.sf.openrocket.gui.util.SwingPreferences;
|
||||
import net.sf.openrocket.preset.ComponentPreset;
|
||||
import net.sf.openrocket.preset.xml.OpenRocketComponentLoader;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
import net.sf.openrocket.util.Pair;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.database;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
@ -8,7 +8,6 @@ import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.util.List;
|
||||
|
||||
import net.sf.openrocket.database.AsynchronousDatabaseLoader;
|
||||
import net.sf.openrocket.database.motor.ThrustCurveMotorSetDatabase;
|
||||
import net.sf.openrocket.file.iterator.DirectoryIterator;
|
||||
import net.sf.openrocket.file.iterator.FileIterator;
|
||||
@ -17,6 +16,7 @@ import net.sf.openrocket.gui.util.SimpleFileFilter;
|
||||
import net.sf.openrocket.gui.util.SwingPreferences;
|
||||
import net.sf.openrocket.motor.Motor;
|
||||
import net.sf.openrocket.motor.ThrustCurveMotor;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.util.BugException;
|
||||
import net.sf.openrocket.util.Pair;
|
||||
|
@ -11,8 +11,8 @@ import javax.swing.SwingUtilities;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import net.sf.openrocket.gui.adaptors.DoubleModel;
|
||||
import net.sf.openrocket.gui.util.GUIUtil;
|
||||
import net.sf.openrocket.startup.BasicApplication;
|
||||
import net.sf.openrocket.unit.UnitGroup;
|
||||
import net.sf.openrocket.utils.BasicApplication;
|
||||
|
||||
public class Tester {
|
||||
|
||||
|
@ -42,7 +42,7 @@ 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.startup.BasicApplication;
|
||||
import net.sf.openrocket.utils.BasicApplication;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -9,8 +9,8 @@ import java.util.List;
|
||||
import net.sf.openrocket.material.Material;
|
||||
import net.sf.openrocket.preset.ComponentPreset;
|
||||
import net.sf.openrocket.preset.xml.OpenRocketComponentSaver;
|
||||
import net.sf.openrocket.startup.BasicApplication;
|
||||
import net.sf.openrocket.util.ArrayList;
|
||||
import net.sf.openrocket.utils.BasicApplication;
|
||||
|
||||
public class RocksimComponentFileTranslator {
|
||||
|
||||
|
@ -1,57 +1,71 @@
|
||||
package net.sf.openrocket.startup;
|
||||
|
||||
import net.sf.openrocket.database.ComponentPresetDao;
|
||||
import net.sf.openrocket.database.ComponentPresetDatabaseLoader;
|
||||
import net.sf.openrocket.database.MotorDatabaseLoader;
|
||||
import net.sf.openrocket.database.motor.MotorDatabase;
|
||||
import net.sf.openrocket.database.motor.ThrustCurveMotorSetDatabase;
|
||||
import net.sf.openrocket.formatting.RocketDescriptor;
|
||||
import net.sf.openrocket.formatting.RocketDescriptorImpl;
|
||||
import net.sf.openrocket.gui.util.SwingPreferences;
|
||||
import net.sf.openrocket.gui.watcher.WatchService;
|
||||
import net.sf.openrocket.gui.watcher.WatchServiceImpl;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.startup.providers.BlockingComponentPresetDatabaseProvider;
|
||||
import net.sf.openrocket.startup.providers.BlockingMotorDatabaseProvider;
|
||||
import net.sf.openrocket.startup.providers.TranslatorProvider;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
/**
|
||||
* GuiModule is the Guice Module for the OpenRocket Swing application.
|
||||
*
|
||||
* Because the swing application does not fully utilize injection of dependencies,
|
||||
* proper use of this module requires a little more work on the part of the startup code.
|
||||
*
|
||||
* <code>
|
||||
* GuiModule module = new GuiModule();
|
||||
* Application.setInjector( Guice.createInjector(guiModule));
|
||||
* module.startLoadin();
|
||||
* </code>
|
||||
*
|
||||
* @author kruland
|
||||
*
|
||||
*/
|
||||
public class GuiModule extends AbstractModule {
|
||||
|
||||
private final Provider<ThrustCurveMotorSetDatabase> motorDatabaseProvider;
|
||||
private final Provider<? extends ComponentPresetDao> componentDatabaseProvider;
|
||||
private final ComponentPresetDatabaseLoader presetLoader = new ComponentPresetDatabaseLoader();
|
||||
private final MotorDatabaseLoader motorLoader = new MotorDatabaseLoader();
|
||||
|
||||
|
||||
public GuiModule() {
|
||||
this.componentDatabaseProvider = loadPresetComponents();
|
||||
this.motorDatabaseProvider = loadMotor();
|
||||
}
|
||||
|
||||
@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);
|
||||
|
||||
BlockingComponentPresetDatabaseProvider componentDatabaseProvider = new BlockingComponentPresetDatabaseProvider(presetLoader);
|
||||
bind(ComponentPresetDao.class).toProvider(componentDatabaseProvider);
|
||||
|
||||
BlockingMotorDatabaseProvider motorDatabaseProvider = new BlockingMotorDatabaseProvider(motorLoader);
|
||||
bind(ThrustCurveMotorSetDatabase.class).toProvider(motorDatabaseProvider);
|
||||
bind(MotorDatabase.class).toProvider(motorDatabaseProvider);
|
||||
bind(WatchService.class).to(WatchServiceImpl.class);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Start loading preset components in background thread.
|
||||
*
|
||||
* startLoader must be called after the Injector created with this module is registered
|
||||
* in the Application object. This is because loading the database data requires the Application
|
||||
* object's locator methods to return the correct objects.
|
||||
*/
|
||||
public BlockingComponentPresetDatabaseProvider loadPresetComponents() {
|
||||
ComponentPresetDatabaseLoader bg = new ComponentPresetDatabaseLoader();
|
||||
bg.startLoading();
|
||||
BlockingComponentPresetDatabaseProvider db = new BlockingComponentPresetDatabaseProvider(bg);
|
||||
return db;
|
||||
public void startLoader() {
|
||||
presetLoader.startLoading();
|
||||
motorLoader.startLoading();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start loading motors in background thread.
|
||||
*
|
||||
* Public for Python bindings.
|
||||
*
|
||||
* @return a provider for the database which blocks before returning the db.
|
||||
*/
|
||||
public BlockingMotorDatabaseProvider loadMotor() {
|
||||
MotorDatabaseLoader bg = new MotorDatabaseLoader();
|
||||
bg.startLoading();
|
||||
BlockingMotorDatabaseProvider db = new BlockingMotorDatabaseProvider(bg);
|
||||
return db;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -15,8 +15,7 @@ import net.sf.openrocket.startup.jij.PluginClasspathProvider;
|
||||
*
|
||||
* The startup class sequence is the following:
|
||||
* 1. Startup
|
||||
* 2. GuiceStartup
|
||||
* 3. ApplicationStartup
|
||||
* 2. SwingApplication
|
||||
*
|
||||
* This class changes the current classpath to contain the jar-in-jar
|
||||
* library dependencies and plugins in the current classpath, and
|
||||
|
@ -35,12 +35,7 @@ import com.google.inject.Injector;
|
||||
import com.google.inject.Module;
|
||||
|
||||
/**
|
||||
* The second class in the OpenRocket startup sequence. This class can assume the
|
||||
* Application class to be properly set up, and can use any classes safely.
|
||||
* <p>
|
||||
* This class needs to complete the application setup, create a child Injector that
|
||||
* contains all necessary bindings for the system, replace the Injector in Application
|
||||
* and then continue the startup.
|
||||
* Start the OpenRocket swing application.
|
||||
*
|
||||
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
|
||||
*/
|
||||
@ -118,14 +113,6 @@ public class SwingApplication {
|
||||
System.setErr(PrintStreamToSLF4J.getPrintStream("STDERR", stdErr));
|
||||
}
|
||||
|
||||
private Injector initializeGuice() {
|
||||
Module applicationModule = new CoreServicesModule();
|
||||
GuiModule guiModule = new GuiModule();
|
||||
Module pluginModule = new PluginModule();
|
||||
|
||||
return Guice.createInjector(applicationModule, guiModule, pluginModule);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run in the EDT when starting up OpenRocket.
|
||||
*
|
||||
@ -146,18 +133,12 @@ public class SwingApplication {
|
||||
// Load motors etc.
|
||||
log.info("Loading databases");
|
||||
|
||||
// There are some latent dependencies in here so the guiced application
|
||||
// is created in two parts. In particular, the database loading processes
|
||||
// require the translator to be setup correctly.
|
||||
Module applicationModule = new CoreServicesModule();
|
||||
GuiModule guiModule = new GuiModule();
|
||||
Module pluginModule = new PluginModule();
|
||||
Injector injector = Guice.createInjector(applicationModule, pluginModule);
|
||||
Injector injector = Guice.createInjector(guiModule, pluginModule);
|
||||
Application.setInjector(injector);
|
||||
|
||||
// Update injector to contain database bindings
|
||||
GuiModule guiModule = new GuiModule();
|
||||
Injector injector2 = injector.createChildInjector(guiModule);
|
||||
Application.setInjector(injector2);
|
||||
guiModule.startLoader();
|
||||
|
||||
// Start update info fetching
|
||||
final UpdateInfoRetriever updateInfo;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.startup.providers;
|
||||
|
||||
import net.sf.openrocket.database.ComponentPresetDatabase;
|
||||
import net.sf.openrocket.database.ComponentPresetDatabaseLoader;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
|
||||
import org.slf4j.Logger;
|
@ -1,4 +1,4 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.startup.providers;
|
||||
|
||||
import java.awt.SplashScreen;
|
||||
import java.awt.event.ActionEvent;
|
||||
@ -11,6 +11,7 @@ import javax.swing.JProgressBar;
|
||||
import javax.swing.Timer;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import net.sf.openrocket.database.MotorDatabaseLoader;
|
||||
import net.sf.openrocket.database.motor.ThrustCurveMotorSetDatabase;
|
||||
import net.sf.openrocket.gui.main.Splash;
|
||||
import net.sf.openrocket.gui.util.GUIUtil;
|
@ -1,4 +1,4 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.startup.providers;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.prefs.Preferences;
|
@ -1,6 +1,7 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.utils;
|
||||
|
||||
import net.sf.openrocket.plugin.PluginModule;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
@ -1,9 +1,11 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.utils;
|
||||
|
||||
import net.sf.openrocket.formatting.RocketDescriptor;
|
||||
import net.sf.openrocket.formatting.RocketDescriptorImpl;
|
||||
import net.sf.openrocket.gui.util.SwingPreferences;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.startup.Preferences;
|
||||
import net.sf.openrocket.startup.providers.TranslatorProvider;
|
||||
|
||||
import com.google.inject.AbstractModule;
|
||||
|
@ -9,7 +9,6 @@ import net.sf.openrocket.document.StorageOptions;
|
||||
import net.sf.openrocket.file.GeneralRocketLoader;
|
||||
import net.sf.openrocket.file.GeneralRocketSaver;
|
||||
import net.sf.openrocket.file.RocketLoadException;
|
||||
import net.sf.openrocket.startup.BasicApplication;
|
||||
|
||||
/**
|
||||
* Utility that loads Rocksim file formats and saves them in ORK format.
|
||||
|
@ -1,4 +1,4 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
@ -1,4 +1,4 @@
|
||||
package net.sf.openrocket.startup;
|
||||
package net.sf.openrocket.utils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
@ -1,6 +1,6 @@
|
||||
package net.sf.openrocket.plugin;
|
||||
|
||||
import net.sf.openrocket.startup.CoreServicesModule;
|
||||
import net.sf.openrocket.utils.CoreServicesModule;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -4,7 +4,7 @@ import net.sf.openrocket.l10n.DebugTranslator;
|
||||
import net.sf.openrocket.l10n.Translator;
|
||||
import net.sf.openrocket.plugin.PluginModule;
|
||||
import net.sf.openrocket.startup.Application;
|
||||
import net.sf.openrocket.startup.CoreServicesModule;
|
||||
import net.sf.openrocket.utils.CoreServicesModule;
|
||||
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user