1 package net.sf.openrocket.android.rocket;
\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 net.sf.openrocket.simulation.FlightData;
\r
9 import net.sf.openrocket.unit.Unit;
\r
10 import net.sf.openrocket.unit.UnitGroup;
\r
11 import android.app.Activity;
\r
12 import android.content.SharedPreferences;
\r
13 import android.os.Bundle;
\r
14 import android.preference.PreferenceManager;
\r
15 import android.support.v4.app.FragmentTransaction;
\r
16 import android.view.LayoutInflater;
\r
17 import android.view.View;
\r
18 import android.view.ViewGroup;
\r
19 import android.widget.AdapterView;
\r
20 import android.widget.AdapterView.OnItemClickListener;
\r
21 import android.widget.AdapterView.OnItemLongClickListener;
\r
22 import android.widget.ArrayAdapter;
\r
23 import android.widget.ListView;
\r
24 import android.widget.TextView;
\r
26 import com.actionbarsherlock.app.SherlockFragment;
\r
27 import com.actionbarsherlock.view.Menu;
\r
28 import com.actionbarsherlock.view.MenuInflater;
\r
29 import com.actionbarsherlock.view.MenuItem;
\r
31 public class Simulations extends SherlockFragment
\r
32 implements SharedPreferences.OnSharedPreferenceChangeListener
\r
35 private final static String wizardFrag = "wizardFrag";
\r
37 public interface OnSimulationSelectedListener {
\r
38 public void onSimulationSelected( int simulationId );
\r
41 private ListView simulationList;
\r
42 private OnSimulationSelectedListener listener;
\r
45 public View onCreateView(LayoutInflater inflater, ViewGroup container,
\r
46 Bundle savedInstanceState) {
\r
47 setHasOptionsMenu(true);
\r
48 View v = inflater.inflate(R.layout.rocket_simulations, container, false);
\r
49 simulationList = (ListView) v.findViewById(R.id.openrocketviewerSimulationList);
\r
54 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
\r
55 inflater.inflate(R.menu.rocket_viewer_simulation_option_menu, menu);
\r
59 public boolean onOptionsItemSelected(MenuItem item) {
\r
60 switch (item.getItemId())
\r
66 return super.onOptionsItemSelected(item);
\r
71 public void onAttach(Activity activity) {
\r
72 super.onAttach(activity);
\r
73 if ( activity instanceof OnSimulationSelectedListener ) {
\r
74 listener = (OnSimulationSelectedListener) activity;
\r
79 public void setListener(OnSimulationSelectedListener listener) {
\r
80 this.listener = listener;
\r
84 public void onActivityCreated(Bundle savedInstanceState) {
\r
85 super.onActivityCreated(savedInstanceState);
\r
87 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
\r
88 prefs.registerOnSharedPreferenceChangeListener(this);
\r
93 public void onResume() {
\r
100 public void onDestroy() {
\r
103 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
\r
104 prefs.unregisterOnSharedPreferenceChangeListener(this);
\r
108 public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {
\r
109 if ( this.isVisible() ) {
\r
115 public void refreshSimulationList() {
\r
119 private void setup() {
\r
120 final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();
\r
121 AndroidLogWrapper.d(Simulations.class,"activity = {0}", this.getActivity());
\r
123 ArrayAdapter<Simulation> sims = new ArrayAdapter<Simulation>(this.getActivity(),android.R.layout.simple_list_item_2,rocketDocument.getSimulations()) {
\r
126 public View getView(int position, View convertView, ViewGroup parent) {
\r
127 View v = convertView;
\r
129 LayoutInflater li = getActivity().getLayoutInflater();
\r
130 v = li.inflate(android.R.layout.simple_list_item_2,null);
\r
132 Simulation sim = this.getItem(position);
\r
133 ((TextView)v.findViewById(android.R.id.text1)).setText( sim.getName() );
\r
134 StringBuilder sb = new StringBuilder();
\r
135 String motorConfig = sim.getOptions().getMotorConfigurationID();
\r
136 sb.append("motors: ").append(rocketDocument.getRocket().getMotorConfigurationNameOrDescription(motorConfig));
\r
137 Unit distanceUnit = UnitGroup.UNITS_DISTANCE.getDefaultUnit();
\r
138 FlightData flightData = sim.getSimulatedData();
\r
139 if ( flightData != null ) {
\r
140 sb.append(" apogee: ").append( distanceUnit.toStringUnit(flightData.getMaxAltitude()));
\r
141 sb.append(" time: ").append(flightData.getFlightTime()).append("s");
\r
142 ((TextView)v.findViewById(android.R.id.text2)).setText( sb.toString() );
\r
144 ((TextView)v.findViewById(android.R.id.text2)).setText("No simulation data");
\r
150 simulationList.setOnItemClickListener( new OnItemClickListener() {
\r
152 public void onItemClick(AdapterView l, View v, int position, long id) {
\r
153 if (listener != null ) {
\r
154 listener.onSimulationSelected(position);
\r
159 simulationList.setOnItemLongClickListener( new OnItemLongClickListener() {
\r
162 public boolean onItemLongClick(AdapterView<?> parent, View view,
\r
163 int position, long id) {
\r
164 final SimulationEditFragment f = SimulationEditFragment.newInstance(position);
\r
165 FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
\r
166 ft.add(f, wizardFrag);
\r
173 simulationList.setAdapter(sims);
\r
177 private void addSimulation() {
\r
178 CurrentRocketHolder.getCurrentRocket().addNewSimulation();
\r