create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / SimulationEditFragment.java
1 \r
2 package net.sf.openrocket.android.simulation;\r
3 \r
4 import net.sf.openrocket.R;\r
5 import net.sf.openrocket.android.CurrentRocketHolder;\r
6 import net.sf.openrocket.android.rocket.MotorConfigSpinner;\r
7 import net.sf.openrocket.android.simservice.SimulationService;\r
8 import net.sf.openrocket.android.simservice.SimulationTask;\r
9 import net.sf.openrocket.document.OpenRocketDocument;\r
10 import net.sf.openrocket.document.Simulation;\r
11 import net.sf.openrocket.simulation.SimulationOptions;\r
12 import net.sf.openrocket.unit.UnitGroup;\r
13 import android.os.Bundle;\r
14 import android.support.v4.app.DialogFragment;\r
15 import android.view.LayoutInflater;\r
16 import android.view.View;\r
17 import android.view.View.OnClickListener;\r
18 import android.view.ViewGroup;\r
19 import android.widget.Button;\r
20 import android.widget.EditText;\r
21 \r
22 import com.actionbarsherlock.app.SherlockDialogFragment;\r
23 \r
24 /**\r
25  * An activity that encapsulates a graphical view of the chart.\r
26  */\r
27 public class SimulationEditFragment extends SherlockDialogFragment {\r
28 \r
29         private int simulationId;\r
30 \r
31         private EditText windspeedField;\r
32         private EditText rodlengthField;\r
33         private EditText rodangleField;\r
34         private EditText roddirectionField;\r
35         private MotorConfigSpinner motorSpinner;\r
36 \r
37         public static SimulationEditFragment newInstance( int simulationId ) {\r
38                 SimulationEditFragment frag = new SimulationEditFragment();\r
39                 Bundle b = new Bundle();\r
40                 b.putInt("simulationId", simulationId);\r
41                 frag.setArguments(b);\r
42                 return frag;\r
43         }\r
44 \r
45         @Override\r
46         public void onCreate(Bundle savedInstanceState) {\r
47                 super.onCreate(savedInstanceState);\r
48                 setStyle(DialogFragment.STYLE_NO_TITLE,getTheme());\r
49 \r
50                 if ( savedInstanceState != null ) {\r
51                         simulationId = savedInstanceState.getInt("simulationId");\r
52                 } else {\r
53                         Bundle b = getArguments();\r
54                         simulationId = b.getInt("simulationId");\r
55                 }\r
56         }\r
57 \r
58         @Override\r
59         public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
60                         Bundle savedInstanceState) {\r
61                 View v = inflater.inflate(R.layout.simulation_condition_dialog, container, false);\r
62                 \r
63                 Button deleteButton = (Button) v.findViewById(R.id.simulationConditionDelete);\r
64                 deleteButton.setOnClickListener( new OnClickListener() {\r
65                         @Override\r
66                         public void onClick(View v) {\r
67                                 onDelete();\r
68                         }\r
69                 });\r
70                 \r
71                 Button runButton = (Button) v.findViewById(R.id.simulationConditionRun);\r
72                 runButton.setOnClickListener( new OnClickListener() {\r
73                         @Override\r
74                         public void onClick(View v) {\r
75                                 onRun();\r
76                         }\r
77                 });\r
78 \r
79                 windspeedField = (EditText) v.findViewById(R.id.simulation_condition_windspeed);\r
80                 rodlengthField = (EditText) v.findViewById(R.id.simulation_condition_rodlength);\r
81                 rodangleField = (EditText) v.findViewById(R.id.simulation_condition_rodangle);\r
82                 roddirectionField = (EditText) v.findViewById(R.id.simulation_condition_roddirection);\r
83 \r
84                 motorSpinner = (MotorConfigSpinner) v.findViewById(R.id.simulationConditionConfigurationSpinner);\r
85 \r
86                 OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
87 \r
88                 motorSpinner.createAdapter(rocketDocument.getRocket());\r
89 \r
90                 Simulation sim = rocketDocument.getSimulation(simulationId);\r
91 \r
92                 SimulationOptions options = sim.getOptions();\r
93                 if ( options != null ) {\r
94                         windspeedField.setText( UnitGroup.UNITS_VELOCITY.toString( options.getWindSpeedAverage() ));\r
95                         rodlengthField.setText( UnitGroup.UNITS_LENGTH.toString( options.getLaunchRodLength() ));\r
96                         rodangleField.setText( UnitGroup.UNITS_ANGLE.toString( options.getLaunchRodAngle() ));\r
97                         roddirectionField.setText( UnitGroup.UNITS_ANGLE.toString( options.getLaunchRodDirection() ));\r
98                         motorSpinner.setSelectedConfiguration(options.getMotorConfigurationID());\r
99                 }\r
100 \r
101                 return v;\r
102         }\r
103 \r
104         @Override\r
105         public void onSaveInstanceState(Bundle outState) {\r
106                 super.onSaveInstanceState(outState);\r
107                 outState.putInt("simulationId", simulationId);\r
108 \r
109         }\r
110 \r
111         public void onDelete( ) {\r
112                 CurrentRocketHolder.getCurrentRocket().deleteSimulation(getActivity(), simulationId);\r
113                 getDialog().dismiss();\r
114         }\r
115         \r
116         public void onRun() {\r
117                 \r
118                 OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
119                 Simulation sim = rocketDocument.getSimulation(simulationId);\r
120                 SimulationOptions options = sim.getOptions();\r
121 \r
122                 options.setWindSpeedAverage( UnitGroup.UNITS_VELOCITY.fromUnit(Double.parseDouble( windspeedField.getText().toString() )));\r
123                 options.setLaunchRodLength( UnitGroup.UNITS_LENGTH.fromUnit(Double.parseDouble( rodlengthField.getText().toString() )));\r
124                 options.setLaunchRodAngle( UnitGroup.UNITS_ANGLE.fromUnit(Double.parseDouble( rodangleField.getText().toString() )));\r
125                 options.setLaunchRodDirection( UnitGroup.UNITS_ANGLE.fromUnit(Double.parseDouble( roddirectionField.getText().toString() )));\r
126                 options.setMotorConfigurationID( motorSpinner.getSelectedConfiguration() );\r
127                 \r
128                 SimulationTask t = new SimulationTask(simulationId);\r
129                 SimulationService.executeSimulationTask(getActivity(), t);\r
130                 getDialog().dismiss();\r
131         }\r
132 }