create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / Simulations.java
1 package net.sf.openrocket.android.simulation;\r
2 \r
3 import net.sf.openrocket.R;\r
4 import net.sf.openrocket.android.CurrentRocketHolder;\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 android.app.Activity;\r
9 import android.content.SharedPreferences;\r
10 import android.os.Bundle;\r
11 import android.preference.PreferenceManager;\r
12 import android.support.v4.app.FragmentTransaction;\r
13 import android.view.LayoutInflater;\r
14 import android.view.View;\r
15 import android.view.ViewGroup;\r
16 import android.widget.AdapterView;\r
17 import android.widget.AdapterView.OnItemClickListener;\r
18 import android.widget.AdapterView.OnItemLongClickListener;\r
19 import android.widget.ArrayAdapter;\r
20 import android.widget.ListView;\r
21 \r
22 import com.actionbarsherlock.app.SherlockFragment;\r
23 import com.actionbarsherlock.view.Menu;\r
24 import com.actionbarsherlock.view.MenuInflater;\r
25 import com.actionbarsherlock.view.MenuItem;\r
26 \r
27 public class Simulations extends SherlockFragment\r
28 implements SharedPreferences.OnSharedPreferenceChangeListener\r
29 {\r
30 \r
31         private final static String wizardFrag = "wizardFrag";\r
32 \r
33         public interface OnSimulationSelectedListener {\r
34                 public void onSimulationSelected( int simulationId );\r
35         }\r
36 \r
37         private ListView simulationList;\r
38         private OnSimulationSelectedListener listener;\r
39 \r
40         @Override\r
41         public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
42                         Bundle savedInstanceState) {\r
43                 setHasOptionsMenu(true);\r
44                 View v = inflater.inflate(R.layout.rocket_simulations, container, false);\r
45                 simulationList = (ListView) v.findViewById(R.id.openrocketviewerSimulationList);\r
46                 return v;\r
47         }\r
48         \r
49         @Override\r
50         public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {\r
51                 inflater.inflate(R.menu.rocket_viewer_simulation_option_menu, menu);\r
52         }\r
53 \r
54         @Override\r
55         public boolean onOptionsItemSelected(MenuItem item) {\r
56                 switch (item.getItemId())\r
57                 {\r
58                 case R.id.menu_add:\r
59                         addSimulation();\r
60                         return true;\r
61                 default:\r
62                         return super.onOptionsItemSelected(item);\r
63                 }\r
64         }\r
65 \r
66         @Override\r
67         public void onAttach(Activity activity) {\r
68                 super.onAttach(activity);\r
69                 if ( activity instanceof OnSimulationSelectedListener ) {\r
70                         listener = (OnSimulationSelectedListener) activity;\r
71                 }\r
72         }\r
73 \r
74 \r
75         public void setListener(OnSimulationSelectedListener listener) {\r
76                 this.listener = listener;\r
77         }\r
78 \r
79         @Override\r
80         public void onActivityCreated(Bundle savedInstanceState) {\r
81                 super.onActivityCreated(savedInstanceState);\r
82 \r
83                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
84                 prefs.registerOnSharedPreferenceChangeListener(this);\r
85 \r
86         }\r
87 \r
88         @Override\r
89         public void onResume() {\r
90                 super.onResume();\r
91                 setup();\r
92 \r
93         }\r
94 \r
95         @Override\r
96         public void onDestroy() {\r
97                 super.onDestroy();\r
98 \r
99                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
100                 prefs.unregisterOnSharedPreferenceChangeListener(this);\r
101         }\r
102 \r
103         @Override\r
104         public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
105                 if ( this.isVisible() ) {\r
106                         setup();\r
107                 }\r
108         }\r
109 \r
110 \r
111         public void refreshSimulationList() {\r
112                 setup();\r
113         }\r
114         \r
115         private void setup() {\r
116                 final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
117                 AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());\r
118 \r
119                 ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this.getActivity(),android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {\r
120 \r
121                         @Override\r
122                         public View getView(int position, View convertView,     ViewGroup parent) {\r
123                     SimulationListItem listItemView = (SimulationListItem) convertView;\r
124 \r
125                     if (listItemView == null) {\r
126                         listItemView = new SimulationListItem(parent.getContext());\r
127                     }\r
128 \r
129                                 Simulation sim = this.getItem(position);\r
130                                 listItemView.setSimulation(sim);\r
131 \r
132                     return listItemView;\r
133                         }\r
134 \r
135                 };\r
136                 simulationList.setOnItemClickListener( new OnItemClickListener() {\r
137                         @Override\r
138                         public void onItemClick(AdapterView l, View v, int position, long id) {\r
139                                 Simulation sim = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getSimulation(position);\r
140                                 // Check if there is data for this simulation.\r
141                                 if ( sim.getSimulatedData() == null || sim.getSimulatedData().getBranchCount() == 0 ) {\r
142                                         openEditor(position);\r
143                                 } else if (listener != null ) {\r
144                                         listener.onSimulationSelected(position);\r
145                                 }\r
146                         }\r
147 \r
148                 });\r
149                 simulationList.setOnItemLongClickListener( new OnItemLongClickListener() {\r
150 \r
151                         @Override\r
152                         public boolean onItemLongClick(AdapterView<?> parent, View view,\r
153                                         int position, long id) {\r
154                                 openEditor(position);\r
155 \r
156                                 return true;\r
157                         }\r
158                         \r
159                 });\r
160                 simulationList.setAdapter(sims);\r
161 \r
162         }\r
163         \r
164         private void openEditor( int position ) {\r
165                 final SimulationEditFragment f = SimulationEditFragment.newInstance(position);\r
166                 FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();\r
167                 ft.add(f, wizardFrag);\r
168                 ft.commit();\r
169         }\r
170 \r
171         private void addSimulation() {\r
172                 CurrentRocketHolder.getCurrentRocket().addNewSimulation(getActivity());\r
173         }\r
174         \r
175 }\r