1 package net.sf.openrocket.android.simulation;
\r
4 import net.sf.openrocket.R;
\r
5 import net.sf.openrocket.document.Simulation;
\r
6 import net.sf.openrocket.document.Simulation.Status;
\r
7 import net.sf.openrocket.simulation.FlightData;
\r
8 import net.sf.openrocket.unit.Unit;
\r
9 import net.sf.openrocket.unit.UnitGroup;
\r
10 import android.content.Context;
\r
11 import android.util.AttributeSet;
\r
12 import android.view.LayoutInflater;
\r
13 import android.widget.LinearLayout;
\r
14 import android.widget.TextView;
\r
16 public class SimulationListItem extends LinearLayout {
\r
18 private int[] SIMULATION_INVALID = { R.attr.simulation_invalid };
\r
19 private int[] SIMULATION_STALE = { R.attr.simulation_stale };
\r
21 private TextView text1;
\r
22 private TextView text2;
\r
23 private Status simStatus;
\r
25 public SimulationListItem(Context context, AttributeSet attrs, int defStyle) {
\r
26 super(context, attrs, defStyle);
\r
30 public SimulationListItem(Context context, AttributeSet attrs) {
\r
31 super(context, attrs);
\r
35 public SimulationListItem(Context context) {
\r
36 this(context, null);
\r
39 public void setSimulation(Simulation sim) {
\r
41 text1.setText( sim.getName() );
\r
43 StringBuilder sb = new StringBuilder();
\r
44 String motorConfig = sim.getOptions().getMotorConfigurationID();
\r
45 sb.append("motors: ").append(sim.getRocket().getMotorConfigurationNameOrDescription(motorConfig));
\r
46 Unit distanceUnit = UnitGroup.UNITS_DISTANCE.getDefaultUnit();
\r
47 FlightData flightData = sim.getSimulatedData();
\r
48 if ( flightData != null ) {
\r
49 sb.append(" apogee: ").append( distanceUnit.toStringUnit(flightData.getMaxAltitude()));
\r
50 sb.append(" time: ").append(flightData.getFlightTime()).append("s");
\r
52 sb.append(" No simulation data");
\r
54 text2.setText( sb.toString() );
\r
56 simStatus = sim.getStatus();
\r
58 // Refresh the drawable state so that it includes the status if required.
\r
59 refreshDrawableState();
\r
63 private void loadViews() {
\r
64 this.setOrientation(LinearLayout.HORIZONTAL);
\r
66 LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
\r
67 layoutInflater.inflate(R.layout.simulation_list_item, this, true);
\r
69 // setPadding(fiveDPInPixels, fiveDPInPixels, fiveDPInPixels, fiveDPInPixels);
\r
70 // setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, fiftyDPInPixels));
\r
71 // setBackgroundResource(R.drawable.message_list_item_background);
\r
73 text1 = (TextView) findViewById(android.R.id.text1);
\r
74 text2 = (TextView) findViewById(android.R.id.text2);
\r
78 protected int[] onCreateDrawableState(int extraSpace) {
\r
79 // We are going to add extra state.
\r
80 final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
\r
81 if ( simStatus == Status.OUTDATED || simStatus == Status.NOT_SIMULATED ) {
\r
82 return mergeDrawableStates(drawableState, SIMULATION_INVALID );
\r
84 } else if ( simStatus == Status.LOADED || simStatus == Status.EXTERNAL ) {
\r
85 return mergeDrawableStates(drawableState, SIMULATION_STALE);
\r
87 return super.onCreateDrawableState(extraSpace);
\r