Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / SimulationEditFragment.java
diff --git a/android/src/net/sf/openrocket/android/simulation/SimulationEditFragment.java b/android/src/net/sf/openrocket/android/simulation/SimulationEditFragment.java
new file mode 100644 (file)
index 0000000..b66a3d7
--- /dev/null
@@ -0,0 +1,132 @@
+\r
+package net.sf.openrocket.android.simulation;\r
+\r
+import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
+import net.sf.openrocket.android.rocket.MotorConfigSpinner;\r
+import net.sf.openrocket.android.simservice.SimulationService;\r
+import net.sf.openrocket.android.simservice.SimulationTask;\r
+import net.sf.openrocket.document.OpenRocketDocument;\r
+import net.sf.openrocket.document.Simulation;\r
+import net.sf.openrocket.simulation.SimulationOptions;\r
+import net.sf.openrocket.unit.UnitGroup;\r
+import android.os.Bundle;\r
+import android.support.v4.app.DialogFragment;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.View.OnClickListener;\r
+import android.view.ViewGroup;\r
+import android.widget.Button;\r
+import android.widget.EditText;\r
+\r
+import com.actionbarsherlock.app.SherlockDialogFragment;\r
+\r
+/**\r
+ * An activity that encapsulates a graphical view of the chart.\r
+ */\r
+public class SimulationEditFragment extends SherlockDialogFragment {\r
+\r
+       private int simulationId;\r
+\r
+       private EditText windspeedField;\r
+       private EditText rodlengthField;\r
+       private EditText rodangleField;\r
+       private EditText roddirectionField;\r
+       private MotorConfigSpinner motorSpinner;\r
+\r
+       public static SimulationEditFragment newInstance( int simulationId ) {\r
+               SimulationEditFragment frag = new SimulationEditFragment();\r
+               Bundle b = new Bundle();\r
+               b.putInt("simulationId", simulationId);\r
+               frag.setArguments(b);\r
+               return frag;\r
+       }\r
+\r
+       @Override\r
+       public void onCreate(Bundle savedInstanceState) {\r
+               super.onCreate(savedInstanceState);\r
+               setStyle(DialogFragment.STYLE_NO_TITLE,getTheme());\r
+\r
+               if ( savedInstanceState != null ) {\r
+                       simulationId = savedInstanceState.getInt("simulationId");\r
+               } else {\r
+                       Bundle b = getArguments();\r
+                       simulationId = b.getInt("simulationId");\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
+                       Bundle savedInstanceState) {\r
+               View v = inflater.inflate(R.layout.simulation_condition_dialog, container, false);\r
+               \r
+               Button deleteButton = (Button) v.findViewById(R.id.simulationConditionDelete);\r
+               deleteButton.setOnClickListener( new OnClickListener() {\r
+                       @Override\r
+                       public void onClick(View v) {\r
+                               onDelete();\r
+                       }\r
+               });\r
+               \r
+               Button runButton = (Button) v.findViewById(R.id.simulationConditionRun);\r
+               runButton.setOnClickListener( new OnClickListener() {\r
+                       @Override\r
+                       public void onClick(View v) {\r
+                               onRun();\r
+                       }\r
+               });\r
+\r
+               windspeedField = (EditText) v.findViewById(R.id.simulation_condition_windspeed);\r
+               rodlengthField = (EditText) v.findViewById(R.id.simulation_condition_rodlength);\r
+               rodangleField = (EditText) v.findViewById(R.id.simulation_condition_rodangle);\r
+               roddirectionField = (EditText) v.findViewById(R.id.simulation_condition_roddirection);\r
+\r
+               motorSpinner = (MotorConfigSpinner) v.findViewById(R.id.simulationConditionConfigurationSpinner);\r
+\r
+               OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
+\r
+               motorSpinner.createAdapter(rocketDocument.getRocket());\r
+\r
+               Simulation sim = rocketDocument.getSimulation(simulationId);\r
+\r
+               SimulationOptions options = sim.getOptions();\r
+               if ( options != null ) {\r
+                       windspeedField.setText( UnitGroup.UNITS_VELOCITY.toString( options.getWindSpeedAverage() ));\r
+                       rodlengthField.setText( UnitGroup.UNITS_LENGTH.toString( options.getLaunchRodLength() ));\r
+                       rodangleField.setText( UnitGroup.UNITS_ANGLE.toString( options.getLaunchRodAngle() ));\r
+                       roddirectionField.setText( UnitGroup.UNITS_ANGLE.toString( options.getLaunchRodDirection() ));\r
+                       motorSpinner.setSelectedConfiguration(options.getMotorConfigurationID());\r
+               }\r
+\r
+               return v;\r
+       }\r
+\r
+       @Override\r
+       public void onSaveInstanceState(Bundle outState) {\r
+               super.onSaveInstanceState(outState);\r
+               outState.putInt("simulationId", simulationId);\r
+\r
+       }\r
+\r
+       public void onDelete( ) {\r
+               CurrentRocketHolder.getCurrentRocket().deleteSimulation(getActivity(), simulationId);\r
+               getDialog().dismiss();\r
+       }\r
+       \r
+       public void onRun() {\r
+               \r
+               OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
+               Simulation sim = rocketDocument.getSimulation(simulationId);\r
+               SimulationOptions options = sim.getOptions();\r
+\r
+               options.setWindSpeedAverage( UnitGroup.UNITS_VELOCITY.fromUnit(Double.parseDouble( windspeedField.getText().toString() )));\r
+               options.setLaunchRodLength( UnitGroup.UNITS_LENGTH.fromUnit(Double.parseDouble( rodlengthField.getText().toString() )));\r
+               options.setLaunchRodAngle( UnitGroup.UNITS_ANGLE.fromUnit(Double.parseDouble( rodangleField.getText().toString() )));\r
+               options.setLaunchRodDirection( UnitGroup.UNITS_ANGLE.fromUnit(Double.parseDouble( roddirectionField.getText().toString() )));\r
+               options.setMotorConfigurationID( motorSpinner.getSelectedConfiguration() );\r
+               \r
+               SimulationTask t = new SimulationTask(simulationId);\r
+               SimulationService.executeSimulationTask(getActivity(), t);\r
+               getDialog().dismiss();\r
+       }\r
+}
\ No newline at end of file