Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / Simulations.java
diff --git a/android/src/net/sf/openrocket/android/simulation/Simulations.java b/android/src/net/sf/openrocket/android/simulation/Simulations.java
new file mode 100644 (file)
index 0000000..4d8314a
--- /dev/null
@@ -0,0 +1,175 @@
+package net.sf.openrocket.android.simulation;\r
+\r
+import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
+import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import net.sf.openrocket.document.OpenRocketDocument;\r
+import net.sf.openrocket.document.Simulation;\r
+import android.app.Activity;\r
+import android.content.SharedPreferences;\r
+import android.os.Bundle;\r
+import android.preference.PreferenceManager;\r
+import android.support.v4.app.FragmentTransaction;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.AdapterView;\r
+import android.widget.AdapterView.OnItemClickListener;\r
+import android.widget.AdapterView.OnItemLongClickListener;\r
+import android.widget.ArrayAdapter;\r
+import android.widget.ListView;\r
+\r
+import com.actionbarsherlock.app.SherlockFragment;\r
+import com.actionbarsherlock.view.Menu;\r
+import com.actionbarsherlock.view.MenuInflater;\r
+import com.actionbarsherlock.view.MenuItem;\r
+\r
+public class Simulations extends SherlockFragment\r
+implements SharedPreferences.OnSharedPreferenceChangeListener\r
+{\r
+\r
+       private final static String wizardFrag = "wizardFrag";\r
+\r
+       public interface OnSimulationSelectedListener {\r
+               public void onSimulationSelected( int simulationId );\r
+       }\r
+\r
+       private ListView simulationList;\r
+       private OnSimulationSelectedListener listener;\r
+\r
+       @Override\r
+       public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
+                       Bundle savedInstanceState) {\r
+               setHasOptionsMenu(true);\r
+               View v = inflater.inflate(R.layout.rocket_simulations, container, false);\r
+               simulationList = (ListView) v.findViewById(R.id.openrocketviewerSimulationList);\r
+               return v;\r
+       }\r
+       \r
+       @Override\r
+       public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {\r
+               inflater.inflate(R.menu.rocket_viewer_simulation_option_menu, menu);\r
+       }\r
+\r
+       @Override\r
+       public boolean onOptionsItemSelected(MenuItem item) {\r
+               switch (item.getItemId())\r
+               {\r
+               case R.id.menu_add:\r
+                       addSimulation();\r
+                       return true;\r
+               default:\r
+                       return super.onOptionsItemSelected(item);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void onAttach(Activity activity) {\r
+               super.onAttach(activity);\r
+               if ( activity instanceof OnSimulationSelectedListener ) {\r
+                       listener = (OnSimulationSelectedListener) activity;\r
+               }\r
+       }\r
+\r
+\r
+       public void setListener(OnSimulationSelectedListener listener) {\r
+               this.listener = listener;\r
+       }\r
+\r
+       @Override\r
+       public void onActivityCreated(Bundle savedInstanceState) {\r
+               super.onActivityCreated(savedInstanceState);\r
+\r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+               prefs.registerOnSharedPreferenceChangeListener(this);\r
+\r
+       }\r
+\r
+       @Override\r
+       public void onResume() {\r
+               super.onResume();\r
+               setup();\r
+\r
+       }\r
+\r
+       @Override\r
+       public void onDestroy() {\r
+               super.onDestroy();\r
+\r
+               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());\r
+               prefs.unregisterOnSharedPreferenceChangeListener(this);\r
+       }\r
+\r
+       @Override\r
+       public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+               if ( this.isVisible() ) {\r
+                       setup();\r
+               }\r
+       }\r
+\r
+\r
+       public void refreshSimulationList() {\r
+               setup();\r
+       }\r
+       \r
+       private void setup() {\r
+               final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
+               AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());\r
+\r
+               ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this.getActivity(),android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {\r
+\r
+                       @Override\r
+                       public View getView(int position, View convertView,     ViewGroup parent) {\r
+                   SimulationListItem listItemView = (SimulationListItem) convertView;\r
+\r
+                   if (listItemView == null) {\r
+                       listItemView = new SimulationListItem(parent.getContext());\r
+                   }\r
+\r
+                               Simulation sim = this.getItem(position);\r
+                               listItemView.setSimulation(sim);\r
+\r
+                   return listItemView;\r
+                       }\r
+\r
+               };\r
+               simulationList.setOnItemClickListener( new OnItemClickListener() {\r
+                       @Override\r
+                       public void onItemClick(AdapterView l, View v, int position, long id) {\r
+                               Simulation sim = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getSimulation(position);\r
+                               // Check if there is data for this simulation.\r
+                               if ( sim.getSimulatedData() == null || sim.getSimulatedData().getBranchCount() == 0 ) {\r
+                                       openEditor(position);\r
+                               } else if (listener != null ) {\r
+                                       listener.onSimulationSelected(position);\r
+                               }\r
+                       }\r
+\r
+               });\r
+               simulationList.setOnItemLongClickListener( new OnItemLongClickListener() {\r
+\r
+                       @Override\r
+                       public boolean onItemLongClick(AdapterView<?> parent, View view,\r
+                                       int position, long id) {\r
+                               openEditor(position);\r
+\r
+                               return true;\r
+                       }\r
+                       \r
+               });\r
+               simulationList.setAdapter(sims);\r
+\r
+       }\r
+       \r
+       private void openEditor( int position ) {\r
+               final SimulationEditFragment f = SimulationEditFragment.newInstance(position);\r
+               FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();\r
+               ft.add(f, wizardFrag);\r
+               ft.commit();\r
+       }\r
+\r
+       private void addSimulation() {\r
+               CurrentRocketHolder.getCurrentRocket().addNewSimulation(getActivity());\r
+       }\r
+       \r
+}\r