package net.sf.openrocket.android.simulation;
import java.util.List;
import net.sf.openrocket.R;
import net.sf.openrocket.android.CurrentRocketHolder;
import net.sf.openrocket.document.OpenRocketDocument;
import net.sf.openrocket.simulation.FlightDataBranch;
import net.sf.openrocket.simulation.FlightDataType;
import net.sf.openrocket.simulation.FlightEvent;
import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.MathUtil;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TableLayout;
import android.widget.TextView;
public class SimulationEventsDialog extends DialogFragment {
private SimulationChart chart;
private TableLayout eventList;
public static SimulationEventsDialog newInstance( SimulationChart chart ) {
SimulationEventsDialog d = new SimulationEventsDialog();
d.chart = chart;
return d;
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.simulation_event_dialog, container, false);
eventList = (TableLayout) v.findViewById(R.id.simulationEventsList);
eventList.setColumnShrinkable(0, true);
final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();
List<FlightEvent> events = chart.getFlightDataBranch(rocketDocument).getEvents();
for ( FlightEvent event : events ) {
View tableRow = inflater.inflate(R.layout.simulation_event_item,null);
((TextView)tableRow.findViewById(R.id.eventName)).setText( event.getType().toString() );
((TextView)tableRow.findViewById(R.id.eventTime)).setText( event.getTime() + " (s)" );
FlightDataBranch data = chart.getFlightDataBranch(rocketDocument);
double vel = MathUtil.interpolate(data.get(FlightDataType.TYPE_TIME), data.get(FlightDataType.TYPE_VELOCITY_TOTAL), event.getTime());
((TextView)tableRow.findViewById(R.id.eventVelocity)).setText( UnitGroup.UNITS_VELOCITY.getDefaultUnit().toStringUnit(vel) );
double alt = MathUtil.interpolate(data.get(FlightDataType.TYPE_TIME), data.get(FlightDataType.TYPE_ALTITUDE), event.getTime());
((TextView)tableRow.findViewById(R.id.eventAltitude)).setText( UnitGroup.UNITS_DISTANCE.getDefaultUnit().toStringUnit(alt) );
eventList.addView( tableRow );
}
return v;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null ) {
chart = (SimulationChart) savedInstanceState.getSerializable("chart");
}
}
@Override
public void onSaveInstanceState(Bundle arg0) {
super.onSaveInstanceState(arg0);
arg0.putSerializable("chart", chart);
}
}