--- /dev/null
+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