1 package net.sf.openrocket.android.simulation;
\r
3 import java.util.ArrayList;
\r
4 import java.util.List;
\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
26 public class SimulationViewer extends Activity {
\r
28 private final static String TAG = "SimulationViewer";
\r
30 private ListView eventList;
\r
31 private Spinner series1Spinner;
\r
32 private Spinner series2Spinner;
\r
34 private Simulation sim;
\r
35 private FlightDataBranch data;
\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
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
48 TabHost tabs=(TabHost)findViewById(R.id.simulationConfigurationForm);
\r
52 TabHost.TabSpec spec=tabs.newTabSpec("tag1");
\r
54 spec.setContent(R.id.simulationEventsList);
\r
55 spec.setIndicator("Events");
\r
58 spec=tabs.newTabSpec("tag2");
\r
59 spec.setContent(R.id.simulationSeriesSelection);
\r
60 spec.setIndicator("Series");
\r
63 eventList = (ListView) findViewById(R.id.simulationEventsList);
\r
65 // Initialize the eventList
\r
66 ArrayAdapter<FlightEvent> events = new ArrayAdapter<FlightEvent>(this,android.R.layout.simple_list_item_multiple_choice,data.getEvents()) {
\r
69 public View getView(int position, View convertView,
\r
71 View v = convertView;
\r
73 LayoutInflater li = getLayoutInflater();
\r
74 v = li.inflate(android.R.layout.simple_list_item_multiple_choice,null);
\r
76 FlightEvent event = this.getItem(position);
\r
77 ((TextView)v.findViewById(android.R.id.text1)).setText( event.getType().toString() + " " + event.getTime() + " (s)" );
\r
82 eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
\r
83 eventList.setAdapter(events);
\r
85 series1Spinner = (Spinner) findViewById(R.id.simulationSeries1);
\r
86 series2Spinner = (Spinner) findViewById(R.id.simulationSeries2);
\r
88 List<FlightDataType> selectableSeries = new ArrayList<FlightDataType>();
\r
89 for( FlightDataType fdt : data.getTypes() ) {
\r
90 if ( fdt == FlightDataType.TYPE_TIME ) {
\r
93 selectableSeries.add(fdt);
\r
96 ArrayAdapter<FlightDataType> serieses = new ArrayAdapter<FlightDataType>(this,android.R.layout.simple_spinner_item,selectableSeries) {
\r
99 public View getView(int position, View convertView,
\r
100 ViewGroup parent) {
\r
101 View v = convertView;
\r
103 LayoutInflater li = getLayoutInflater();
\r
104 v = li.inflate(android.R.layout.simple_spinner_item,null);
\r
106 FlightDataType fdt = this.getItem(position);
\r
107 ((TextView)v.findViewById(android.R.id.text1)).setText( fdt.toString() );
\r
112 series1Spinner.setAdapter(serieses);
\r
113 series2Spinner.setAdapter(serieses);
\r
117 public void draw( View v ) {
\r
118 List<FlightEvent> eventsToShow = new ArrayList<FlightEvent>();
\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
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
133 SimulationChart chart = new SimulationChart();
\r
134 chart.setFlightDataBranch(data);
\r
135 chart.setSeries1(series1);
\r
136 chart.setSeries2(series2);
\r
137 chart.setFlightEvents(eventsToShow);
\r
139 startActivity(chart.execute(this));
\r