Show the simulation name as the chart title. Made some UI concessions because drawin...
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / SimulationViewer.java
1 package net.sf.openrocket.android.simulation;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import net.sf.openrocket.R;\r
7 import net.sf.openrocket.android.Application;\r
8 import net.sf.openrocket.document.Simulation;\r
9 import net.sf.openrocket.simulation.FlightDataBranch;\r
10 import net.sf.openrocket.simulation.FlightDataType;\r
11 import net.sf.openrocket.simulation.FlightEvent;\r
12 import android.app.Activity;\r
13 import android.content.Intent;\r
14 import android.os.Bundle;\r
15 import android.util.Log;\r
16 import android.util.SparseBooleanArray;\r
17 import android.view.LayoutInflater;\r
18 import android.view.View;\r
19 import android.view.ViewGroup;\r
20 import android.widget.ArrayAdapter;\r
21 import android.widget.ListView;\r
22 import android.widget.Spinner;\r
23 import android.widget.TabHost;\r
24 import android.widget.TextView;\r
25 \r
26 public class SimulationViewer extends Activity {\r
27 \r
28         private final static String TAG = "SimulationViewer";\r
29 \r
30         private ListView eventList;\r
31         private Spinner series1Spinner;\r
32         private Spinner series2Spinner;\r
33 \r
34         private Simulation sim;\r
35         private FlightDataBranch data;\r
36 \r
37         @Override\r
38         public void onCreate(Bundle savedInstanceState) {\r
39                 super.onCreate(savedInstanceState);\r
40                 Log.d(TAG,"onCreate Bundle = "+ String.valueOf(savedInstanceState));\r
41                 setContentView(R.layout.simulation_detail);\r
42 \r
43                 Intent i = getIntent();\r
44                 int simnumber = i.getIntExtra("Simulation", 0);\r
45                 sim = ((Application)this.getApplication()).getRocketDocument().getSimulation(simnumber);\r
46                 data = sim.getSimulatedData().getBranch(0);\r
47 \r
48                 TabHost tabs=(TabHost)findViewById(R.id.simulationConfigurationForm);\r
49 \r
50                 tabs.setup();\r
51 \r
52                 TabHost.TabSpec spec=tabs.newTabSpec("tag1");\r
53 \r
54                 spec.setContent(R.id.simulationEventsList);\r
55                 spec.setIndicator("Events");\r
56                 tabs.addTab(spec);\r
57 \r
58                 spec=tabs.newTabSpec("tag2");\r
59                 spec.setContent(R.id.simulationSeriesSelection);\r
60                 spec.setIndicator("Series");\r
61                 tabs.addTab(spec);      \r
62 \r
63                 eventList = (ListView) findViewById(R.id.simulationEventsList);\r
64 \r
65                 // Initialize the eventList\r
66                 ArrayAdapter<FlightEvent> events = new ArrayAdapter<FlightEvent>(this,android.R.layout.simple_list_item_1,data.getEvents()) {\r
67 \r
68                         @Override\r
69                         public View getView(int position, View convertView,\r
70                                         ViewGroup parent) {\r
71                                 View v = convertView;\r
72                                 if ( v == null ) {\r
73                                         LayoutInflater li = getLayoutInflater();\r
74                                         v = li.inflate(android.R.layout.simple_list_item_1,null);\r
75                                 }\r
76                                 FlightEvent event = this.getItem(position);\r
77                                 ((TextView)v.findViewById(android.R.id.text1)).setText( event.getType().toString() + " " + event.getTime() + " (s)" );\r
78                                 return v;\r
79                         }\r
80 \r
81                 };\r
82                 //eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);\r
83                 eventList.setAdapter(events);\r
84 \r
85                 series1Spinner = (Spinner) findViewById(R.id.simulationSeries1);\r
86                 series2Spinner = (Spinner) findViewById(R.id.simulationSeries2);\r
87 \r
88                 List<FlightDataType> selectableSeries = new ArrayList<FlightDataType>();\r
89                 for( FlightDataType fdt : data.getTypes() ) {\r
90                         if ( fdt == FlightDataType.TYPE_TIME ) { \r
91 \r
92                         } else {\r
93                                 selectableSeries.add(fdt);\r
94                         }\r
95                 }\r
96                 ArrayAdapter<FlightDataType> serieses = new ArrayAdapter<FlightDataType>(this,android.R.layout.simple_spinner_item,selectableSeries) {\r
97 \r
98                         @Override\r
99                         public View getView(int position, View convertView,\r
100                                         ViewGroup parent) {\r
101                                 View v = convertView;\r
102                                 if ( v == null ) {\r
103                                         LayoutInflater li = getLayoutInflater();\r
104                                         v = li.inflate(android.R.layout.simple_spinner_item,null);\r
105                                 }\r
106                                 FlightDataType fdt = this.getItem(position);\r
107                                 ((TextView)v.findViewById(android.R.id.text1)).setText( fdt.toString() );\r
108                                 return v;\r
109                         }\r
110 \r
111                 };\r
112                 series1Spinner.setAdapter(serieses);\r
113                 series2Spinner.setAdapter(serieses);\r
114 \r
115         }\r
116 \r
117         public void draw( View v ) {\r
118                 List<FlightEvent> eventsToShow = new ArrayList<FlightEvent>();\r
119                 {\r
120                         SparseBooleanArray eventsSelected = eventList.getCheckedItemPositions();\r
121                         List<FlightEvent> flightEvents = data.getEvents();\r
122                         for( int i=0; i< flightEvents.size(); i++ ) {\r
123                                 if ( eventsSelected.get(i) ) {\r
124                                         eventsToShow.add(flightEvents.get(i) );\r
125                                 }\r
126                         }\r
127                 }\r
128                 FlightDataType series1 = (FlightDataType) series1Spinner.getSelectedItem();\r
129                 Log.d(TAG,"sereis1 = " + series1.toString());\r
130                 FlightDataType series2 = (FlightDataType) series2Spinner.getSelectedItem();\r
131                 Log.d(TAG,"series2 = " + series2.toString());\r
132 \r
133                 SimulationChart chart = new SimulationChart();\r
134                 chart.setSimulationName( sim.getName() );\r
135                 chart.setFlightDataBranch(data);\r
136                 chart.setSeries1(series1);\r
137                 chart.setSeries2(series2);\r
138                 chart.setFlightEvents(eventsToShow);\r
139                 \r
140                 startActivity(chart.execute(this));\r
141         }\r
142 \r
143 }\r