Merge commit '46077ef99f953486550547c15bd60dd02bab9241' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / Simulations.java
1 package net.sf.openrocket.android.rocket;\r
2 \r
3 import net.sf.openrocket.R;\r
4 import net.sf.openrocket.android.Application;\r
5 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
6 import net.sf.openrocket.document.OpenRocketDocument;\r
7 import net.sf.openrocket.document.Simulation;\r
8 import net.sf.openrocket.unit.Unit;\r
9 import net.sf.openrocket.unit.UnitGroup;\r
10 import android.app.Activity;\r
11 import android.content.SharedPreferences;\r
12 import android.os.Bundle;\r
13 import android.preference.PreferenceManager;\r
14 import android.support.v4.app.Fragment;\r
15 import android.view.LayoutInflater;\r
16 import android.view.View;\r
17 import android.view.ViewGroup;\r
18 import android.widget.AdapterView;\r
19 import android.widget.AdapterView.OnItemClickListener;\r
20 import android.widget.ArrayAdapter;\r
21 import android.widget.ListView;\r
22 import android.widget.TextView;\r
23 \r
24 public class Simulations extends Fragment\r
25 implements SharedPreferences.OnSharedPreferenceChangeListener\r
26 {\r
27 \r
28         public interface OnSimulationSelectedListener {\r
29                 public void onSimulationSelected( int simulationId );\r
30         }\r
31 \r
32         private ListView simulationList;\r
33         private OnSimulationSelectedListener listener;\r
34 \r
35         @Override\r
36         public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
37                         Bundle savedInstanceState) {\r
38                 View v = inflater.inflate(R.layout.rocket_simulations, container, false);\r
39                 simulationList = (ListView) v.findViewById(R.id.openrocketviewerSimulationList);\r
40 \r
41                 return v;\r
42         }\r
43 \r
44         @Override\r
45         public void onAttach(Activity activity) {\r
46                 super.onAttach(activity);\r
47                 if ( activity instanceof OnSimulationSelectedListener ) {\r
48                         listener = (OnSimulationSelectedListener) activity;\r
49                 }\r
50         }\r
51 \r
52 \r
53         public void setListener(OnSimulationSelectedListener listener) {\r
54                 this.listener = listener;\r
55         }\r
56 \r
57         @Override\r
58         public void onActivityCreated(Bundle savedInstanceState) {\r
59                 super.onActivityCreated(savedInstanceState);\r
60 \r
61                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
62                 prefs.registerOnSharedPreferenceChangeListener(this);\r
63 \r
64                 setup();\r
65 \r
66         }\r
67 \r
68         @Override\r
69         public void onDestroy() {\r
70                 super.onDestroy();\r
71 \r
72                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
73                 prefs.unregisterOnSharedPreferenceChangeListener(this);\r
74         }\r
75 \r
76         @Override\r
77         public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
78                 if ( this.isVisible() ) {\r
79                         setup();\r
80                 }\r
81         }\r
82 \r
83 \r
84         private void setup() {\r
85                 final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
86                 AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());\r
87 \r
88                 ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this.getActivity(),android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {\r
89 \r
90                         @Override\r
91                         public View getView(int position, View convertView,     ViewGroup parent) {\r
92                                 View v = convertView;\r
93                                 if ( v == null ) {\r
94                                         LayoutInflater li = getActivity().getLayoutInflater();\r
95                                         v = li.inflate(android.R.layout.simple_list_item_2,null);\r
96                                 }\r
97                                 Simulation sim = this.getItem(position);\r
98                                 ((TextView)v.findViewById(android.R.id.text1)).setText( sim.getName() );\r
99                                 StringBuilder sb = new StringBuilder();\r
100                                 sb.append("motors: ").append(sim.getConfiguration().getMotorConfigurationDescription());\r
101                                 Unit distanceUnit = UnitGroup.UNITS_DISTANCE.getDefaultUnit();\r
102                                 sb.append(" apogee: ").append( distanceUnit.toStringUnit(sim.getSimulatedData().getMaxAltitude()));\r
103                                 sb.append(" time: ").append(sim.getSimulatedData().getFlightTime()).append("s");\r
104                                 ((TextView)v.findViewById(android.R.id.text2)).setText( sb.toString() );\r
105                                 return v;\r
106                         }\r
107 \r
108                 };\r
109                 simulationList.setOnItemClickListener( new OnItemClickListener() {\r
110                         @Override\r
111                         public void onItemClick(AdapterView l, View v, int position, long id) {\r
112                                 if (listener != null ) {\r
113                                         listener.onSimulationSelected(position);\r
114                                 }\r
115                         }\r
116 \r
117                 });\r
118                 simulationList.setAdapter(sims);\r
119 \r
120         }\r
121 \r
122 }\r