package net.sf.openrocket.android;\r
\r
-import java.io.File;\r
-import java.io.IOException;\r
import java.util.Locale;\r
\r
-import net.sf.openrocket.aerodynamics.WarningSet;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.database.ComponentPresetDatabase;\r
-import net.sf.openrocket.document.OpenRocketDocument;\r
-import net.sf.openrocket.document.Simulation;\r
-import net.sf.openrocket.file.openrocket.OpenRocketSaver;\r
import net.sf.openrocket.l10n.DebugTranslator;\r
import net.sf.openrocket.l10n.ResourceBundleTranslator;\r
import net.sf.openrocket.l10n.Translator;\r
-import net.sf.openrocket.rocketcomponent.Rocket;\r
import android.content.pm.ApplicationInfo;\r
-import android.net.Uri;\r
import android.preference.PreferenceManager;\r
\r
public class Application extends android.app.Application {\r
\r
- private OpenRocketDocument rocketDocument;\r
- private Uri fileUri;\r
-\r
- private WarningSet warnings;\r
-\r
// Big B boolean so I can synchronize on it.\r
private static Boolean initialized = false;\r
\r
PreferencesActivity.initializePreferences(this, PreferenceManager.getDefaultSharedPreferences(this));\r
}\r
\r
- private RocketChangedEventHandler handler;\r
- \r
- public void setHandler( RocketChangedEventHandler handler ) {\r
- this.handler = handler;\r
- }\r
- \r
- /**\r
- * @return the rocketDocument\r
- */\r
- public OpenRocketDocument getRocketDocument() {\r
- return rocketDocument;\r
- }\r
-\r
- public void addNewSimulation() {\r
- Rocket rocket = rocketDocument.getRocket();\r
- Simulation newSim = new Simulation(rocket);\r
- newSim.setName(rocketDocument.getNextSimulationName());\r
- rocketDocument.addSimulation(newSim);\r
- if ( handler != null ) {\r
- handler.simsChangedMessage();\r
- }\r
- }\r
- \r
- public void deleteSimulation( int simulationPos ) {\r
- rocketDocument.removeSimulation( simulationPos );\r
- if ( handler != null ) {\r
- handler.simsChangedMessage();\r
- }\r
- }\r
- \r
- public String addNewMotorConfig() {\r
- String configId = rocketDocument.getRocket().newMotorConfigurationID();\r
- if ( handler != null ) {\r
- handler.configsChangedMessage();\r
- }\r
- return configId;\r
- }\r
- /**\r
- * @param rocketDocument the rocketDocument to set\r
- */\r
- public void setRocketDocument(OpenRocketDocument rocketDocument) {\r
- this.rocketDocument = rocketDocument;\r
- }\r
-\r
- public WarningSet getWarnings() {\r
- return warnings;\r
- }\r
-\r
- public void setWarnings(WarningSet warnings) {\r
- this.warnings = warnings;\r
- }\r
-\r
- public Uri getFileUri() {\r
- return fileUri;\r
- }\r
-\r
- public void setFileUri(Uri fileUri) {\r
- this.fileUri = fileUri;\r
- }\r
-\r
- public void saveOpenRocketDocument() throws IOException {\r
- OpenRocketSaver saver = new OpenRocketSaver();\r
- saver.save(new File(fileUri.getPath()),rocketDocument);\r
-\r
- }\r
}\r
--- /dev/null
+package net.sf.openrocket.android;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+import net.sf.openrocket.aerodynamics.WarningSet;\r
+import net.sf.openrocket.document.OpenRocketDocument;\r
+import net.sf.openrocket.document.Simulation;\r
+import net.sf.openrocket.file.openrocket.OpenRocketSaver;\r
+import net.sf.openrocket.rocketcomponent.Rocket;\r
+import android.net.Uri;\r
+\r
+public class CurrentRocket {\r
+\r
+ private Uri fileUri;\r
+\r
+ private OpenRocketDocument rocketDocument;\r
+ private WarningSet warnings;\r
+\r
+ private RocketChangedEventHandler handler;\r
+ \r
+ public void setHandler( RocketChangedEventHandler handler ) {\r
+ this.handler = handler;\r
+ }\r
+ \r
+ /**\r
+ * @return the rocketDocument\r
+ */\r
+ public OpenRocketDocument getRocketDocument() {\r
+ return rocketDocument;\r
+ }\r
+\r
+ public void addNewSimulation() {\r
+ Rocket rocket = rocketDocument.getRocket();\r
+ Simulation newSim = new Simulation(rocket);\r
+ newSim.setName(rocketDocument.getNextSimulationName());\r
+ rocketDocument.addSimulation(newSim);\r
+ if ( handler != null ) {\r
+ handler.simsChangedMessage();\r
+ }\r
+ }\r
+ \r
+ public void deleteSimulation( int simulationPos ) {\r
+ rocketDocument.removeSimulation( simulationPos );\r
+ if ( handler != null ) {\r
+ handler.simsChangedMessage();\r
+ }\r
+ }\r
+ \r
+ public String addNewMotorConfig() {\r
+ String configId = rocketDocument.getRocket().newMotorConfigurationID();\r
+ if ( handler != null ) {\r
+ handler.configsChangedMessage();\r
+ }\r
+ return configId;\r
+ }\r
+ /**\r
+ * @param rocketDocument the rocketDocument to set\r
+ */\r
+ public void setRocketDocument(OpenRocketDocument rocketDocument) {\r
+ this.rocketDocument = rocketDocument;\r
+ }\r
+\r
+ public WarningSet getWarnings() {\r
+ return warnings;\r
+ }\r
+\r
+ public void setWarnings(WarningSet warnings) {\r
+ this.warnings = warnings;\r
+ }\r
+\r
+ public Uri getFileUri() {\r
+ return fileUri;\r
+ }\r
+\r
+ public void setFileUri(Uri fileUri) {\r
+ this.fileUri = fileUri;\r
+ }\r
+\r
+ public void saveOpenRocketDocument() throws IOException {\r
+ OpenRocketSaver saver = new OpenRocketSaver();\r
+ saver.save(new File(fileUri.getPath()),rocketDocument);\r
+\r
+ }\r
+\r
+\r
+}\r
--- /dev/null
+package net.sf.openrocket.android;\r
+\r
+\r
+public abstract class CurrentRocketHolder {\r
+\r
+ private static CurrentRocket currentRocket = new CurrentRocket();\r
+ \r
+ public static CurrentRocket getCurrentRocket() {\r
+ return currentRocket;\r
+ }\r
+ \r
+}\r
package net.sf.openrocket.android.rocket;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.android.rocket.RocketComponentTreeAdapter.RocketComponentWithId;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.rocketcomponent.Rocket;\r
public void onActivityCreated(Bundle savedInstanceState) {\r
super.onActivityCreated(savedInstanceState);\r
\r
- final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
componentTree.setAdapter( buildAdapter( rocketDocument.getRocket() ) );\r
}\r
\r
import java.util.List;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.android.db.DbAdapter;\r
import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;\r
import net.sf.openrocket.android.motor.MotorDelayDialogFragment;\r
}\r
\r
private void addConfiguration() {\r
- ((Application)getActivity().getApplication()).addNewMotorConfig();\r
+ CurrentRocketHolder.getCurrentRocket().addNewMotorConfig();\r
}\r
\r
private static class MotorMountInfo {\r
}\r
\r
private void setup() {\r
- final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
ExpandableListAdapter configurationAdapter = new BaseExpandableListAdapter() {\r
\r
\r
import net.sf.openrocket.R;\r
import net.sf.openrocket.aerodynamics.WarningSet;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.android.thrustcurve.TCMissingMotorDownloadAction;\r
import net.sf.openrocket.android.thrustcurve.TCQueryAction;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
}\r
\r
private void loadOrkFile( Uri file ) {\r
- ((Application)getApplication()).setFileUri( file );\r
+ CurrentRocketHolder.getCurrentRocket().setFileUri( file );\r
AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);\r
String path = file.getPath();\r
File orkFile = new File(path);\r
dialogBuilder.create().show();\r
\r
} else {\r
- ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
- ((Application)OpenRocketLoaderActivity.this.getApplication()).setWarnings( result.warnings );\r
+ CurrentRocketHolder.getCurrentRocket().setRocketDocument( result.rocket );\r
+ CurrentRocketHolder.getCurrentRocket().setWarnings( result.warnings );\r
\r
updateMissingMotors();\r
}\r
}\r
\r
private void updateMissingMotors() {\r
- Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+ Rocket rocket = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getRocket();\r
Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
\r
if ( missingMotors.size() > 0 ) {\r
@Override\r
public void onTCQueryComplete(String message) {\r
\r
- Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
- WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
+ Rocket rocket = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getRocket();\r
+ WarningSet warnings = CurrentRocketHolder.getCurrentRocket().getWarnings();\r
// Need to update the motor references.\r
MissingMotorHelpers.updateMissingMotors(rocket, warnings);\r
\r
}\r
\r
private void displayWarningDialog() {\r
- WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
+ WarningSet warnings = CurrentRocketHolder.getCurrentRocket().getWarnings();\r
if (warnings == null || warnings.isEmpty()) {\r
} else {\r
DialogFragment newFragment = WarningDialogFragment.newInstance();\r
}\r
\r
public void doFixMissingMotors() {\r
- Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+ Rocket rocket = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getRocket();\r
Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
\r
TCMissingMotorDownloadAction motorfrag = TCMissingMotorDownloadAction.newInstance( missingMotors );\r
\r
import net.sf.openrocket.R;\r
import net.sf.openrocket.android.ActivityHelpers;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.android.simulation.SimulationChart;\r
import net.sf.openrocket.android.simulation.SimulationViewActivity;\r
import net.sf.openrocket.android.simulation.SimulationViewFragment;\r
implements Simulations.OnSimulationSelectedListener\r
{\r
\r
- private Application app;\r
-\r
private final static int OVERVIEW_POS = 0;\r
private final static int COMPONENT_POS = 1;\r
private final static int SIMS_POS = 2;\r
protected void onCreate(Bundle savedInstanceState) {\r
super.onCreate(savedInstanceState);\r
\r
- app = (Application) this.getApplication();\r
-\r
- setTitle(app.getRocketDocument().getRocket().getName());\r
+ setTitle(CurrentRocketHolder.getCurrentRocket().getRocketDocument().getRocket().getName());\r
getSupportActionBar().setDisplayHomeAsUpEnabled(true);\r
\r
setContentView(R.layout.openrocketviewer);\r
viewPagerAdapter = new OpenRocketViewerPagerAdapter( this.getSupportFragmentManager() );\r
viewPager.setAdapter( viewPagerAdapter );\r
\r
- app.setHandler( new RocketChangedEventHandler( ) );\r
+ CurrentRocketHolder.getCurrentRocket().setHandler( new RocketChangedEventHandler( ) );\r
}\r
\r
@Override\r
protected void onPause() {\r
- app.setHandler(null);\r
+ CurrentRocketHolder.getCurrentRocket().setHandler(null);\r
super.onPause();\r
}\r
\r
case R.id.menu_save:\r
// FIXME - Probably want to open a dialog here.\r
try {\r
- ((Application)getApplication()).saveOpenRocketDocument();\r
+ CurrentRocketHolder.getCurrentRocket().saveOpenRocketDocument();\r
} catch ( IOException iex ) {\r
AndroidLogWrapper.d(OpenRocketViewer.class, iex.getMessage());\r
}\r
@Override\r
public void onSimulationSelected(int simulationId) {\r
\r
- Simulation sim = app.getRocketDocument().getSimulation(simulationId);\r
+ Simulation sim = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getSimulation(simulationId);\r
// Check if there is data for this simulation.\r
if ( sim.getSimulatedData() == null || sim.getSimulatedData().getBranchCount() == 0 ) {\r
AlertDialog.Builder builder = new AlertDialog.Builder(this);\r
import net.sf.openrocket.aerodynamics.BarrowmanCalculator;\r
import net.sf.openrocket.aerodynamics.FlightConditions;\r
import net.sf.openrocket.aerodynamics.WarningSet;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.masscalc.BasicMassCalculator;\r
}\r
\r
private void setup() {\r
- final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
Rocket rocket = rocketDocument.getRocket();\r
\r
// Find the index of the default configuration so we can preselect it.\r
package net.sf.openrocket.android.rocket;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.document.Simulation;\r
import net.sf.openrocket.simulation.SimulationOptions;\r
\r
motorSpinner = (MotorConfigSpinner) v.findViewById(R.id.simulationConditionConfigurationSpinner);\r
\r
- OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
motorSpinner.createAdapter(rocketDocument.getRocket());\r
\r
}\r
\r
public void onDelete( ) {\r
- ((Application)getActivity().getApplication()).deleteSimulation(simulationId);\r
+ CurrentRocketHolder.getCurrentRocket().deleteSimulation(simulationId);\r
getDialog().dismiss();\r
}\r
\r
package net.sf.openrocket.android.rocket;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.document.Simulation;\r
}\r
\r
private void setup() {\r
- final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());\r
\r
ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this.getActivity(),android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {\r
}\r
\r
private void addSimulation() {\r
- ((Application)getActivity().getApplication()).addNewSimulation();\r
+ CurrentRocketHolder.getCurrentRocket().addNewSimulation();\r
}\r
\r
}\r
\r
import net.sf.openrocket.aerodynamics.Warning;\r
import net.sf.openrocket.aerodynamics.WarningSet;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import android.app.AlertDialog;\r
import android.app.Dialog;\r
import android.content.DialogInterface;\r
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
// .setIcon(android.R.drawable.alert_dialog_icon)\r
builder.setTitle("Warnings");\r
- WarningSet warnings = ((Application)(getActivity().getApplication())).getWarnings();\r
+ WarningSet warnings = CurrentRocketHolder.getCurrentRocket().getWarnings();\r
StringBuilder message = new StringBuilder();\r
for ( Warning w : warnings ) {\r
message.append(w.toString()).append("\n");\r
import java.util.List;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.simulation.FlightDataBranch;\r
import net.sf.openrocket.simulation.FlightDataType;\r
eventList = (TableLayout) v.findViewById(R.id.simulationEventsList);\r
eventList.setColumnShrinkable(0, true);\r
\r
- final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
List<FlightEvent> events = chart.getFlightDataBranch(rocketDocument).getEvents();\r
\r
import java.util.List;\r
\r
import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.simulation.FlightDataType;\r
-import android.content.DialogInterface;\r
import android.os.Bundle;\r
import android.support.v4.app.DialogFragment;\r
import android.view.LayoutInflater;\r
\r
View v = inflater.inflate(R.layout.simulation_series_dialog, container, false);\r
\r
- OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
Button okButton = (Button) v.findViewById(R.id.simulationOkButton);\r
okButton.setOnClickListener( new View.OnClickListener() {\r
\r
import net.sf.openrocket.R;\r
import net.sf.openrocket.android.ActivityHelpers;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.document.Simulation;\r
import android.os.Bundle;\r
//setContentView(R.layout.simulation_graph_activity);\r
int simulationNumber = getIntent().getIntExtra("Simulation", 0);\r
\r
- final OpenRocketDocument rocketDocument = ((Application)getApplication()).getRocketDocument();\r
+ final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
Simulation sim = rocketDocument.getSimulation(simulationNumber);\r
\r
\r
import net.sf.openrocket.R;\r
import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
import net.sf.openrocket.document.OpenRocketDocument;\r
\r
import org.achartengine.GraphicalView;\r
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\r
setRetainInstance(true);\r
setHasOptionsMenu(true);\r
- OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
this.container = container;\r
if (savedInstanceState != null ) {\r
\r
@Override\r
public void onConfirm() {\r
- OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+ OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
\r
mChart = chart.buildChart(rocketDocument);\r
ViewGroup parent = (ViewGroup) mView.getParent();\r