]> git.gag.com Git - debian/openrocket/blob - android/src/net/sf/openrocket/android/motor/BurnPlotFragment.java
Remove all the zoom & pan stuff because it didn't work well. Change the line color...
[debian/openrocket] / android / src / net / sf / openrocket / android / motor / BurnPlotFragment.java
1 package net.sf.openrocket.android.motor;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 import java.util.Vector;\r
6 \r
7 import net.sf.openrocket.R;\r
8 import net.sf.openrocket.android.db.DbAdapter;\r
9 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
10 import android.graphics.Color;\r
11 import android.graphics.PointF;\r
12 import android.os.Bundle;\r
13 import android.support.v4.app.Fragment;\r
14 import android.view.LayoutInflater;\r
15 import android.view.View;\r
16 import android.view.ViewGroup;\r
17 \r
18 import com.androidplot.xy.LineAndPointFormatter;\r
19 import com.androidplot.xy.LineAndPointRenderer;\r
20 import com.androidplot.xy.SimpleXYSeries;\r
21 import com.androidplot.xy.XYPlot;\r
22 import com.androidplot.xy.YValueMarker;\r
23 \r
24 public class BurnPlotFragment extends Fragment {\r
25 \r
26         private ExtendedThrustCurveMotor motor;\r
27         private long motorId;\r
28 \r
29         private XYPlot mySimpleXYPlot;\r
30         private SimpleXYSeries mySeries;\r
31 \r
32         public static BurnPlotFragment newInstance( long motorId ) {\r
33                 BurnPlotFragment frag = new BurnPlotFragment();\r
34                 Bundle bundle = new Bundle();\r
35                 bundle.putLong("motorId", motorId);\r
36                 frag.setArguments(bundle);\r
37                 return frag;\r
38         }\r
39 \r
40         @Override\r
41         public void onCreate(Bundle savedInstanceState) {\r
42                 AndroidLogWrapper.d(BurnPlotFragment.class,"onCreate");\r
43 \r
44                 if ( savedInstanceState!= null) {\r
45                         motorId = savedInstanceState.getLong("motorId",-1);\r
46                 } else {\r
47                         Bundle b = getArguments();\r
48                         motorId = b.getLong("motorId");\r
49                 }\r
50 \r
51                 DbAdapter mDbHelper = new DbAdapter(getActivity());\r
52                 mDbHelper.open();\r
53 \r
54                 try {\r
55                         motor = mDbHelper.getMotorDao().fetchMotor(motorId);\r
56                 } catch ( Exception e ) {\r
57 \r
58                 }\r
59 \r
60                 mDbHelper.close();\r
61                 super.onCreate(savedInstanceState);\r
62         }\r
63 \r
64         @Override\r
65         public void onSaveInstanceState(Bundle outState) {\r
66                 super.onSaveInstanceState(outState);\r
67                 outState.putLong("motorId", motorId);\r
68         }\r
69 \r
70         @Override\r
71         public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
72                         Bundle savedInstanceState) {\r
73                 AndroidLogWrapper.d(BurnPlotFragment.class,"onCreateView");\r
74                 View v = inflater.inflate(R.layout.motor_burn, container, false);\r
75                 mySimpleXYPlot = (XYPlot) v.findViewById(R.id.xyplot);\r
76                 init(motor);\r
77                 return v;\r
78         }\r
79 \r
80         private static List<Double> fromArray( double[] arry ) {\r
81                 List<Double> l = new ArrayList<Double>(arry.length);\r
82                 for( double d: arry ) {\r
83                         l.add(d);\r
84                 }\r
85                 return l;\r
86         }\r
87 \r
88         private void init( ExtendedThrustCurveMotor motor ) {\r
89 \r
90                 mySimpleXYPlot.setUserDomainOrigin(0);\r
91                 mySimpleXYPlot.setUserRangeOrigin(0);\r
92                 mySimpleXYPlot.setRangeLabel("impuse (n)");\r
93                 mySimpleXYPlot.setDomainLabel("time (s)");\r
94                 YValueMarker average = new YValueMarker(motor.getThrustCurveMotor().getAverageThrustEstimate(),"average" );\r
95                 average.getLinePaint().setColor(Color.BLACK);\r
96                 average.getTextPaint().setColor(Color.BLACK);\r
97                 mySimpleXYPlot.addMarker( average );\r
98                 mySimpleXYPlot.disableAllMarkup();\r
99 \r
100                 try {\r
101                         mySeries = new SimpleXYSeries( \r
102                                         fromArray(motor.getThrustCurveMotor().getTimePoints()),\r
103                                         fromArray(motor.getThrustCurveMotor().getThrustPoints()), \r
104                                         motor.getThrustCurveMotor().getManufacturer().getDisplayName() + " " + motor.getThrustCurveMotor().getDesignation()\r
105                                         );\r
106                 } catch ( Exception ex ) {\r
107 \r
108                         Vector<Double> data = new Vector<Double>();\r
109                         data.add(0.0);\r
110                         data.add(0.0);\r
111                         data.add(1.0);\r
112                         data.add(1.0);\r
113                         mySeries = new SimpleXYSeries(data, SimpleXYSeries.ArrayFormat.XY_VALS_INTERLEAVED,"no data");\r
114                 }\r
115 \r
116                 LineAndPointFormatter formatter= new LineAndPointFormatter(Color.GREEN, Color.GREEN, Color.GREEN);\r
117 \r
118                 formatter.getLinePaint().setShadowLayer(0, 0, 0, 0);\r
119                 formatter.getVertexPaint().setShadowLayer(0, 0, 0, 0);\r
120                 mySimpleXYPlot.addSeries(mySeries, LineAndPointRenderer.class,formatter);\r
121 \r
122                 //Set of internal variables for keeping track of the boundaries\r
123                 mySimpleXYPlot.calculateMinMaxVals();\r
124 \r
125                 mySimpleXYPlot.redraw();\r
126 \r
127         }\r
128 \r
129 }\r
130 \r