create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / SimulationViewFragment.java
1 \r
2 package net.sf.openrocket.android.simulation;\r
3 \r
4 import net.sf.openrocket.R;\r
5 import net.sf.openrocket.android.CurrentRocketHolder;\r
6 import net.sf.openrocket.document.OpenRocketDocument;\r
7 \r
8 import org.achartengine.GraphicalView;\r
9 import org.achartengine.chart.XYChart;\r
10 \r
11 import android.os.Bundle;\r
12 import android.view.LayoutInflater;\r
13 import android.view.View;\r
14 import android.view.ViewGroup;\r
15 \r
16 import com.actionbarsherlock.app.SherlockFragment;\r
17 import com.actionbarsherlock.view.Menu;\r
18 import com.actionbarsherlock.view.MenuInflater;\r
19 import com.actionbarsherlock.view.MenuItem;\r
20 \r
21 /**\r
22  * An activity that encapsulates a graphical view of the chart.\r
23  */\r
24 public class SimulationViewFragment extends SherlockFragment implements SimulationPlotConfigDialog.OnConfirmListener {\r
25         \r
26         SimulationChart chart;\r
27 \r
28         ViewGroup container;\r
29         \r
30         /** The encapsulated graphical view. */\r
31         private GraphicalView mView;\r
32         /** The chart to be drawn. */\r
33         private XYChart mChart;\r
34 \r
35         public static SimulationViewFragment newInstance( SimulationChart chart ) {\r
36                 SimulationViewFragment frag = new SimulationViewFragment();\r
37                 frag.chart = chart;\r
38                 return frag;\r
39         }\r
40 \r
41         @Override\r
42         public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {\r
43                 setRetainInstance(true);\r
44                 setHasOptionsMenu(true);\r
45                 OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
46 \r
47                 this.container = container;\r
48                 if (savedInstanceState != null ) {\r
49                         chart = (SimulationChart) savedInstanceState.getSerializable("chart");\r
50                 }\r
51                 mChart = chart.buildChart(rocketDocument);\r
52                 mView = new GraphicalView(container.getContext(), mChart);\r
53                 return mView;\r
54         }\r
55 \r
56         @Override\r
57         public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {\r
58                 inflater.inflate(R.menu.simulation_option_menu, menu);\r
59         }\r
60 \r
61         @Override\r
62         public boolean onOptionsItemSelected(MenuItem item) {\r
63                 switch (item.getItemId())\r
64                 {\r
65                 case R.id.simulation_config_plot_menu_option:\r
66                         SimulationPlotConfigDialog seriesDialog = SimulationPlotConfigDialog.newInstance(chart);\r
67                         seriesDialog.show(getFragmentManager(), "AbraCadaver");\r
68                         seriesDialog.setOnConfirmListener(this);\r
69                         return true;\r
70                 case R.id.simulation_view_events_menu_option:\r
71                         SimulationEventsDialog eventsDialog = SimulationEventsDialog.newInstance(chart);\r
72                         eventsDialog.show(getFragmentManager(), "AbraCadaver");\r
73                         return true;\r
74                 default:\r
75                         return super.onOptionsItemSelected(item);\r
76                 }\r
77         }\r
78 \r
79         @Override\r
80         public void onConfirm() {\r
81                 OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
82 \r
83                 mChart = chart.buildChart(rocketDocument);\r
84                 ViewGroup parent = (ViewGroup) mView.getParent();\r
85                 parent.removeView(mView);\r
86                 mView = new GraphicalView(container.getContext(), mChart);\r
87                 parent.addView(mView);\r
88         }\r
89 \r
90         @Override\r
91         public void onSaveInstanceState(Bundle outState) {\r
92                 super.onSaveInstanceState(outState);\r
93                 outState.putSerializable("chart", chart);\r
94 \r
95         }\r
96         \r
97 }