create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / SimulationListItem.java
1 package net.sf.openrocket.android.simulation;\r
2 \r
3 \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
15 \r
16 public class SimulationListItem extends LinearLayout {\r
17 \r
18         private int[] SIMULATION_INVALID = { R.attr.simulation_invalid };\r
19         private int[] SIMULATION_STALE = { R.attr.simulation_stale };\r
20         \r
21         private TextView text1;\r
22         private TextView text2;\r
23         private Status simStatus;\r
24         \r
25         public SimulationListItem(Context context, AttributeSet attrs, int defStyle) {\r
26                 super(context, attrs, defStyle);\r
27                 loadViews();\r
28         }\r
29 \r
30         public SimulationListItem(Context context, AttributeSet attrs) {\r
31                 super(context, attrs);\r
32                 loadViews();\r
33         }\r
34 \r
35         public SimulationListItem(Context context) {\r
36                 this(context, null);\r
37         }\r
38 \r
39         public void setSimulation(Simulation sim) {\r
40 \r
41                 text1.setText( sim.getName() );\r
42 \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
51                 } else {\r
52                         sb.append(" No simulation data");\r
53                 }\r
54                 text2.setText( sb.toString() );\r
55                 \r
56                 simStatus = sim.getStatus();\r
57 \r
58                 // Refresh the drawable state so that it includes the status if required.\r
59                 refreshDrawableState();\r
60 \r
61         }\r
62 \r
63         private void loadViews() {\r
64                 this.setOrientation(LinearLayout.HORIZONTAL);\r
65                 \r
66                 LayoutInflater layoutInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);\r
67                 layoutInflater.inflate(R.layout.simulation_list_item, this, true);\r
68 \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
72 \r
73                 text1 = (TextView) findViewById(android.R.id.text1);\r
74                 text2 = (TextView) findViewById(android.R.id.text2);\r
75         }\r
76 \r
77         @Override\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
83                 \r
84         } else if ( simStatus == Status.LOADED || simStatus == Status.EXTERNAL ) {\r
85                         return mergeDrawableStates(drawableState, SIMULATION_STALE);\r
86         } else {\r
87                         return super.onCreateDrawableState(extraSpace);\r
88                 }\r
89         }\r
90 \r
91 }\r