Have the SimulationPlotConfigDialog be populated with the currently selected items.

This commit is contained in:
Kevin Ruland 2012-08-10 20:56:38 +00:00
parent 43b269c0f4
commit 2ad8310a3c
2 changed files with 31 additions and 15 deletions

View File

@ -17,9 +17,7 @@ package net.sf.openrocket.android.simulation;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import net.sf.openrocket.android.util.AndroidLogWrapper; import net.sf.openrocket.android.util.AndroidLogWrapper;
import net.sf.openrocket.document.OpenRocketDocument; import net.sf.openrocket.document.OpenRocketDocument;
@ -58,7 +56,7 @@ public class SimulationChart implements Serializable {
private final int simulationIndex; private final int simulationIndex;
private transient FlightDataType series1; private transient FlightDataType series1;
private transient FlightDataType series2; private transient FlightDataType series2;
private transient Map<Double,String> events; private transient List<FlightEvent> events;
// Define 4 different colors and point styles to use for the series. // Define 4 different colors and point styles to use for the series.
// For now only 2 series are supported though. // For now only 2 series are supported though.
@ -79,14 +77,26 @@ public class SimulationChart implements Serializable {
this.series1 = series1; this.series1 = series1;
} }
public FlightDataType getSeries1() {
return series1;
}
public void setSeries2(FlightDataType series2) { public void setSeries2(FlightDataType series2) {
this.series2 = series2; this.series2 = series2;
} }
public void setEvents( Map<Double,String> events ) { public FlightDataType getSeries2() {
return series2;
}
public void setEvents( List<FlightEvent> events ) {
this.events = events; this.events = events;
} }
public List<FlightEvent> getEvents() {
return events;
}
public FlightDataBranch getFlightDataBranch( OpenRocketDocument rocketDocument ) { public FlightDataBranch getFlightDataBranch( OpenRocketDocument rocketDocument ) {
Simulation sim = rocketDocument.getSimulation(simulationIndex); Simulation sim = rocketDocument.getSimulation(simulationIndex);
FlightDataBranch flightDataBranch = sim.getSimulatedData().getBranch(0); FlightDataBranch flightDataBranch = sim.getSimulatedData().getBranch(0);
@ -111,9 +121,9 @@ public class SimulationChart implements Serializable {
} }
if ( events == null ) { if ( events == null ) {
events = new HashMap<Double,String>(); events = new ArrayList<FlightEvent>();
for ( FlightEvent event : flightDataBranch.getEvents() ) { for ( FlightEvent event : flightDataBranch.getEvents() ) {
events.put(event.getTime(), event.getType().toString() ); events.add(event);
} }
} }
@ -142,8 +152,8 @@ public class SimulationChart implements Serializable {
renderer.setShowCustomTextGrid(true); renderer.setShowCustomTextGrid(true);
renderer.setXLabelsAlign(Align.RIGHT); renderer.setXLabelsAlign(Align.RIGHT);
renderer.setXLabelsAngle(90); // rotate right renderer.setXLabelsAngle(90); // rotate right
for( Map.Entry<Double,String> event : events.entrySet() ) { for( FlightEvent event : events ) {
renderer.addXTextLabel(event.getKey(), event.getValue()); renderer.addXTextLabel(event.getTime(), event.getType().toString());
} }
renderer.setMargins(new int[] { 50, 30, 0, 20 }); renderer.setMargins(new int[] { 50, 30, 0, 20 });

View File

@ -1,9 +1,7 @@
package net.sf.openrocket.android.simulation; package net.sf.openrocket.android.simulation;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import net.sf.openrocket.R; import net.sf.openrocket.R;
import net.sf.openrocket.android.CurrentRocketHolder; import net.sf.openrocket.android.CurrentRocketHolder;
@ -68,14 +66,14 @@ public class SimulationPlotConfigDialog extends DialogFragment {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Map<Double,String> eventsToShow = new HashMap<Double,String>(); List<FlightEvent> eventsToShow = new ArrayList<FlightEvent>();
{ {
SparseBooleanArray eventsSelected = eventList.getCheckedItemPositions(); SparseBooleanArray eventsSelected = eventList.getCheckedItemPositions();
List<FlightEvent> flightEvents = chart.getFlightDataBranch(CurrentRocketHolder.getCurrentRocket().getRocketDocument()).getEvents(); List<FlightEvent> flightEvents = chart.getFlightDataBranch(CurrentRocketHolder.getCurrentRocket().getRocketDocument()).getEvents();
for( int i=0; i< flightEvents.size(); i++ ) { for( int i=0; i< flightEvents.size(); i++ ) {
if ( eventsSelected.get(i) ) { if ( eventsSelected.get(i) ) {
FlightEvent event = flightEvents.get(i); FlightEvent event = flightEvents.get(i);
eventsToShow.put( event.getTime(), event.getType().toString()); eventsToShow.add( event );
} }
} }
} }
@ -96,12 +94,13 @@ public class SimulationPlotConfigDialog extends DialogFragment {
series2Spinner = (Spinner) v.findViewById(R.id.simulationSeries2); series2Spinner = (Spinner) v.findViewById(R.id.simulationSeries2);
List<FlightDataType> selectableSeries = new ArrayList<FlightDataType>(); List<FlightDataType> selectableSeries = new ArrayList<FlightDataType>();
int index = 0;
for( FlightDataType fdt : chart.getFlightDataBranch(rocketDocument).getTypes() ) { for( FlightDataType fdt : chart.getFlightDataBranch(rocketDocument).getTypes() ) {
if ( fdt == FlightDataType.TYPE_TIME ) { if ( fdt == FlightDataType.TYPE_TIME ) {
} else { } else {
selectableSeries.add(fdt); selectableSeries.add(fdt);
} }
index++;
} }
ArrayAdapter<FlightDataType> serieses = new ArrayAdapter<FlightDataType>(getActivity(),android.R.layout.simple_spinner_item,selectableSeries) { ArrayAdapter<FlightDataType> serieses = new ArrayAdapter<FlightDataType>(getActivity(),android.R.layout.simple_spinner_item,selectableSeries) {
@ -118,10 +117,13 @@ public class SimulationPlotConfigDialog extends DialogFragment {
} }
}; };
series1Spinner.setAdapter(serieses); series1Spinner.setAdapter(serieses);
series1Spinner.setSelection(0); int selection1 = serieses.getPosition(chart.getSeries1());
series1Spinner.setSelection(selection1);
series2Spinner.setAdapter(serieses); series2Spinner.setAdapter(serieses);
series2Spinner.setSelection(1); int selection2 = serieses.getPosition(chart.getSeries2());
series2Spinner.setSelection(selection2);
eventList = (ListView) v.findViewById(R.id.simulationEventsList); eventList = (ListView) v.findViewById(R.id.simulationEventsList);
@ -147,6 +149,10 @@ public class SimulationPlotConfigDialog extends DialogFragment {
eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); eventList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
eventList.setAdapter(events); eventList.setAdapter(events);
for( FlightEvent evt : chart.getEvents() ) {
eventList.setItemChecked( events.getPosition(evt), true);
}
return builder.create(); return builder.create();
} }