--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/simulationSeries1Label" />
+
+ <Spinner
+ android:id="@+id/simulationSeries1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:drawSelectorOnTop="true" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/simulationSeries2Label" />
+
+ <Spinner
+ android:id="@+id/simulationSeries2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:drawSelectorOnTop="true" />
+
+ <ListView
+ android:id="@+id/simulationEventsList"
+ android:layout_width="fill_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+
+ <Button
+ android:id="@+id/simulationOkButton"
+ android:layout_width="70dp"
+ android:layout_height="45dp"
+ android:layout_gravity="center_horizontal"
+ android:text="@string/plot" />
+
+</LinearLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@android:id/text1"
+ android:layout_width="match_parent"
+ android:layout_height="?android:attr/listPreferredItemHeight"
+ android:textAppearance="?android:attr/textAppearanceListItem"
+ android:gravity="center_vertical"
+ android:checkMark="?android:attr/listChoiceIndicatorMultiple"
+ android:paddingLeft="8dip"
+ android:paddingRight="8dip"
+/>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <!-- shim to get dialog correct size ?? -->
- <!--
- <View
- android:layout_width="200dp"
- android:layout_height="0px"
- android:layout_margin="0px"
- android:orientation="horizontal" />
- -->
-
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/simulationSeries1Label" />
-
- <Spinner
- android:id="@+id/simulationSeries1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:drawSelectorOnTop="true" />
-
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/simulationSeries2Label" />
-
- <Spinner
- android:id="@+id/simulationSeries2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:drawSelectorOnTop="true" />
-
- <ListView
- android:id="@+id/simulationEventsList"
- android:layout_width="fill_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <Button
- android:id="@+id/simulationOkButton"
- android:layout_width="70dp"
- android:layout_height="45dp"
- android:layout_gravity="center_horizontal"
- android:text="ok" />
-
-</LinearLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/text1"
- android:layout_width="match_parent"
- android:layout_height="?android:attr/listPreferredItemHeight"
- android:textAppearance="?android:attr/textAppearanceListItem"
- android:gravity="center_vertical"
- android:checkMark="?android:attr/listChoiceIndicatorMultiple"
- android:paddingLeft="8dip"
- android:paddingRight="8dip"
-/>
<string name="select_series">Change Plot</string>\r
<string name="view_events">View Events</string>\r
<string name="simulationPlotDialogTitle">Select Series And Events</string>\r
+ <string name="plot">Plot</string>\r
\r
<string-array name="PreferenceMotorBrowserGroupingEntries">\r
<item>Case</item>\r
--- /dev/null
+package net.sf.openrocket.android.simulation;\r
+\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
+import net.sf.openrocket.document.OpenRocketDocument;\r
+import net.sf.openrocket.simulation.FlightDataBranch;\r
+import net.sf.openrocket.simulation.FlightDataType;\r
+import net.sf.openrocket.simulation.FlightEvent;\r
+import android.app.AlertDialog;\r
+import android.app.Dialog;\r
+import android.os.Bundle;\r
+import android.support.v4.app.DialogFragment;\r
+import android.util.SparseBooleanArray;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.widget.ArrayAdapter;\r
+import android.widget.Button;\r
+import android.widget.ListView;\r
+import android.widget.Spinner;\r
+import android.widget.TextView;\r
+\r
+public class SimulationPlotConfigDialog extends DialogFragment {\r
+ \r
+ public interface OnConfirmListener {\r
+ public void onConfirm();\r
+ }\r
+\r
+ private ListView eventList;\r
+ private Spinner series1Spinner;\r
+ private Spinner series2Spinner;\r
+\r
+ private SimulationChart chart;\r
+ private OnConfirmListener listener;\r
+\r
+ public static SimulationPlotConfigDialog newInstance( SimulationChart chart ) {\r
+ SimulationPlotConfigDialog d = new SimulationPlotConfigDialog();\r
+ d.chart = chart;\r
+ return d;\r
+ }\r
+\r
+ public void setOnConfirmListener(OnConfirmListener listener) {\r
+ this.listener = listener;\r
+ }\r
+\r
+ @Override\r
+ public Dialog onCreateDialog(Bundle savedInstanceState) {\r
+ if (savedInstanceState != null ) {\r
+ chart = (SimulationChart) savedInstanceState.getSerializable("chart");\r
+ }\r
+ \r
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
+ builder.setTitle(R.string.simulationPlotDialogTitle);\r
+ \r
+ final LayoutInflater inflater = getActivity().getLayoutInflater();\r
+ View v = inflater.inflate(R.layout.simulation_plot_config_dialog, null);\r
+ builder.setView(v);\r
+\r
+ OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
+\r
+ Button okButton = (Button) v.findViewById(R.id.simulationOkButton);\r
+ okButton.setOnClickListener( new View.OnClickListener() {\r
+\r
+ @Override\r
+ public void onClick(View v) {\r
+ Map<Double,String> eventsToShow = new HashMap<Double,String>();\r
+ {\r
+ SparseBooleanArray eventsSelected = eventList.getCheckedItemPositions();\r
+ List<FlightEvent> flightEvents = chart.getFlightDataBranch(CurrentRocketHolder.getCurrentRocket().getRocketDocument()).getEvents();\r
+ for( int i=0; i< flightEvents.size(); i++ ) {\r
+ if ( eventsSelected.get(i) ) {\r
+ FlightEvent event = flightEvents.get(i);\r
+ eventsToShow.put( event.getTime(), event.getType().toString());\r
+ }\r
+ }\r
+ }\r
+ chart.setEvents(eventsToShow);\r
+\r
+ chart.setSeries1((FlightDataType)series1Spinner.getSelectedItem());\r
+ chart.setSeries2((FlightDataType)series2Spinner.getSelectedItem());\r
+\r
+ if ( listener != null ) {\r
+ listener.onConfirm();\r
+ }\r
+ SimulationPlotConfigDialog.this.dismiss();\r
+ }\r
+ \r
+ });\r
+\r
+ series1Spinner = (Spinner) v.findViewById(R.id.simulationSeries1);\r
+ series2Spinner = (Spinner) v.findViewById(R.id.simulationSeries2);\r
+\r
+ List<FlightDataType> selectableSeries = new ArrayList<FlightDataType>();\r
+ for( FlightDataType fdt : chart.getFlightDataBranch(rocketDocument).getTypes() ) {\r
+ if ( fdt == FlightDataType.TYPE_TIME ) { \r
+\r
+ } else {\r
+ selectableSeries.add(fdt);\r
+ }\r
+ }\r
+ ArrayAdapter<FlightDataType> serieses = new ArrayAdapter<FlightDataType>(getActivity(),android.R.layout.simple_spinner_item,selectableSeries) {\r
+\r
+ @Override\r
+ public View getView(int position, View convertView, ViewGroup parent) {\r
+ View v = convertView;\r
+ if ( v == null ) {\r
+ LayoutInflater li = inflater;\r
+ v = li.inflate(android.R.layout.simple_spinner_item,null);\r
+ }\r
+ FlightDataType fdt = this.getItem(position);\r
+ ((TextView)v.findViewById(android.R.id.text1)).setText( fdt.toString() );\r
+ return v;\r
+ }\r
+\r
+ };\r
+ series1Spinner.setAdapter(serieses);\r
+ series1Spinner.setSelection(0);\r
+ series2Spinner.setAdapter(serieses);\r
+ series2Spinner.setSelection(1);\r
+\r
+ eventList = (ListView) v.findViewById(R.id.simulationEventsList);\r
+\r
+ FlightDataBranch data = chart.getFlightDataBranch(CurrentRocketHolder.getCurrentRocket().getRocketDocument());\r
+ // Initialize the eventList\r
+ \r
+ ArrayAdapter<FlightEvent> events = new ArrayAdapter<FlightEvent>(getActivity(),android.R.layout.simple_list_item_1,data.getEvents()) {\r
+\r
+ @Override\r
+ public View getView(int position, View convertView,\r
+ ViewGroup parent) {\r
+ View v = convertView;\r
+ if ( v == null ) {\r
+ LayoutInflater li = inflater;\r
+ v = li.inflate(android.R.layout.simple_list_item_multiple_choice,null);\r
+ }\r
+ FlightEvent event = this.getItem(position);\r
+ ((TextView)v.findViewById(android.R.id.text1)).setText( event.getType().toString() + " " + event.getTime() + " (s)" );\r
+ return v;\r
+ }\r
+\r
+ };\r
+ eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);\r
+ eventList.setAdapter(events);\r
+\r
+ return builder.create();\r
+\r
+ }\r
+\r
+ @Override\r
+ public void onSaveInstanceState(Bundle arg0) {\r
+ super.onSaveInstanceState(arg0);\r
+ arg0.putSerializable("chart", chart);\r
+ }\r
+\r
+}\r
+++ /dev/null
-package net.sf.openrocket.android.simulation;\r
-\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.CurrentRocketHolder;\r
-import net.sf.openrocket.document.OpenRocketDocument;\r
-import net.sf.openrocket.simulation.FlightDataBranch;\r
-import net.sf.openrocket.simulation.FlightDataType;\r
-import net.sf.openrocket.simulation.FlightEvent;\r
-import android.app.AlertDialog;\r
-import android.app.Dialog;\r
-import android.os.Bundle;\r
-import android.support.v4.app.DialogFragment;\r
-import android.util.SparseBooleanArray;\r
-import android.view.LayoutInflater;\r
-import android.view.View;\r
-import android.view.ViewGroup;\r
-import android.widget.ArrayAdapter;\r
-import android.widget.Button;\r
-import android.widget.ListView;\r
-import android.widget.Spinner;\r
-import android.widget.TextView;\r
-\r
-public class SimulationSeriesDialog extends DialogFragment {\r
- \r
- public interface OnConfirmListener {\r
- public void onConfirm();\r
- }\r
-\r
- private ListView eventList;\r
- private Spinner series1Spinner;\r
- private Spinner series2Spinner;\r
-\r
- private SimulationChart chart;\r
- private OnConfirmListener listener;\r
-\r
- public static SimulationSeriesDialog newInstance( SimulationChart chart ) {\r
- SimulationSeriesDialog d = new SimulationSeriesDialog();\r
- d.chart = chart;\r
- return d;\r
- }\r
-\r
- public void setOnConfirmListener(OnConfirmListener listener) {\r
- this.listener = listener;\r
- }\r
-\r
- @Override\r
- public Dialog onCreateDialog(Bundle savedInstanceState) {\r
- if (savedInstanceState != null ) {\r
- chart = (SimulationChart) savedInstanceState.getSerializable("chart");\r
- }\r
- \r
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
- builder.setTitle(R.string.simulationPlotDialogTitle);\r
- \r
- final LayoutInflater inflater = getActivity().getLayoutInflater();\r
- View v = inflater.inflate(R.layout.simulation_series_dialog, null);\r
- builder.setView(v);\r
-\r
- OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
-\r
- Button okButton = (Button) v.findViewById(R.id.simulationOkButton);\r
- okButton.setOnClickListener( new View.OnClickListener() {\r
-\r
- @Override\r
- public void onClick(View v) {\r
- Map<Double,String> eventsToShow = new HashMap<Double,String>();\r
- {\r
- SparseBooleanArray eventsSelected = eventList.getCheckedItemPositions();\r
- List<FlightEvent> flightEvents = chart.getFlightDataBranch(CurrentRocketHolder.getCurrentRocket().getRocketDocument()).getEvents();\r
- for( int i=0; i< flightEvents.size(); i++ ) {\r
- if ( eventsSelected.get(i) ) {\r
- FlightEvent event = flightEvents.get(i);\r
- eventsToShow.put( event.getTime(), event.getType().toString());\r
- }\r
- }\r
- }\r
- chart.setEvents(eventsToShow);\r
-\r
- chart.setSeries1((FlightDataType)series1Spinner.getSelectedItem());\r
- chart.setSeries2((FlightDataType)series2Spinner.getSelectedItem());\r
-\r
- if ( listener != null ) {\r
- listener.onConfirm();\r
- }\r
- SimulationSeriesDialog.this.dismiss();\r
- }\r
- \r
- });\r
-\r
- series1Spinner = (Spinner) v.findViewById(R.id.simulationSeries1);\r
- series2Spinner = (Spinner) v.findViewById(R.id.simulationSeries2);\r
-\r
- List<FlightDataType> selectableSeries = new ArrayList<FlightDataType>();\r
- for( FlightDataType fdt : chart.getFlightDataBranch(rocketDocument).getTypes() ) {\r
- if ( fdt == FlightDataType.TYPE_TIME ) { \r
-\r
- } else {\r
- selectableSeries.add(fdt);\r
- }\r
- }\r
- ArrayAdapter<FlightDataType> serieses = new ArrayAdapter<FlightDataType>(getActivity(),android.R.layout.simple_spinner_item,selectableSeries) {\r
-\r
- @Override\r
- public View getView(int position, View convertView, ViewGroup parent) {\r
- View v = convertView;\r
- if ( v == null ) {\r
- LayoutInflater li = inflater;\r
- v = li.inflate(android.R.layout.simple_spinner_item,null);\r
- }\r
- FlightDataType fdt = this.getItem(position);\r
- ((TextView)v.findViewById(android.R.id.text1)).setText( fdt.toString() );\r
- return v;\r
- }\r
-\r
- };\r
- series1Spinner.setAdapter(serieses);\r
- series1Spinner.setSelection(0);\r
- series2Spinner.setAdapter(serieses);\r
- series2Spinner.setSelection(1);\r
-\r
- eventList = (ListView) v.findViewById(R.id.simulationEventsList);\r
-\r
- FlightDataBranch data = chart.getFlightDataBranch(CurrentRocketHolder.getCurrentRocket().getRocketDocument());\r
- // Initialize the eventList\r
- \r
- ArrayAdapter<FlightEvent> events = new ArrayAdapter<FlightEvent>(getActivity(),android.R.layout.simple_list_item_1,data.getEvents()) {\r
-\r
- @Override\r
- public View getView(int position, View convertView,\r
- ViewGroup parent) {\r
- View v = convertView;\r
- if ( v == null ) {\r
- LayoutInflater li = inflater;\r
- v = li.inflate(android.R.layout.simple_list_item_multiple_choice,null);\r
- }\r
- FlightEvent event = this.getItem(position);\r
- ((TextView)v.findViewById(android.R.id.text1)).setText( event.getType().toString() + " " + event.getTime() + " (s)" );\r
- return v;\r
- }\r
-\r
- };\r
- eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);\r
- eventList.setAdapter(events);\r
-\r
- return builder.create();\r
-\r
- }\r
-\r
- @Override\r
- public void onSaveInstanceState(Bundle arg0) {\r
- super.onSaveInstanceState(arg0);\r
- arg0.putSerializable("chart", chart);\r
- }\r
-\r
-}\r
/**\r
* An activity that encapsulates a graphical view of the chart.\r
*/\r
-public class SimulationViewFragment extends SherlockFragment implements SimulationSeriesDialog.OnConfirmListener {\r
+public class SimulationViewFragment extends SherlockFragment implements SimulationPlotConfigDialog.OnConfirmListener {\r
\r
SimulationChart chart;\r
\r
switch (item.getItemId())\r
{\r
case R.id.simulation_select_series_menu_option:\r
- SimulationSeriesDialog seriesDialog = SimulationSeriesDialog.newInstance(chart);\r
+ SimulationPlotConfigDialog seriesDialog = SimulationPlotConfigDialog.newInstance(chart);\r
seriesDialog.show(getFragmentManager(), "AbraCadaver");\r
seriesDialog.setOnConfirmListener(this);\r
return true;\r