Rewrite the simulation graph component. It is now implemented as a fragment with...
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / OpenRocketViewer.java
1 package net.sf.openrocket.android.rocket;\r
2 \r
3 \r
4 import net.sf.openrocket.R;\r
5 import net.sf.openrocket.android.ActivityHelpers;\r
6 import net.sf.openrocket.android.Application;\r
7 import net.sf.openrocket.android.simulation.SimulationChart;\r
8 import net.sf.openrocket.android.simulation.SimulationFragment;\r
9 import net.sf.openrocket.android.simulation.SimulationViewActivity;\r
10 import net.sf.openrocket.android.util.TabsAdapter;\r
11 import net.sf.openrocket.document.OpenRocketDocument;\r
12 import net.sf.openrocket.document.Simulation;\r
13 import net.sf.openrocket.rocketcomponent.Configuration;\r
14 import android.content.Intent;\r
15 import android.content.SharedPreferences;\r
16 import android.os.Bundle;\r
17 import android.preference.PreferenceManager;\r
18 import android.support.v4.app.Fragment;\r
19 import android.support.v4.app.FragmentActivity;\r
20 import android.support.v4.app.FragmentTransaction;\r
21 import android.support.v4.view.ViewPager;\r
22 import android.util.Log;\r
23 import android.view.Menu;\r
24 import android.view.MenuInflater;\r
25 import android.view.MenuItem;\r
26 import android.view.View;\r
27 import android.widget.TabHost;\r
28 \r
29 public class OpenRocketViewer extends FragmentActivity\r
30 implements SharedPreferences.OnSharedPreferenceChangeListener,\r
31 Simulations.OnSimulationSelectedListener\r
32 {\r
33 \r
34         private static final String TAG = "OpenRocketViewer";\r
35 \r
36         OpenRocketDocument rocketDocument;\r
37         Configuration rocketConfiguration;\r
38 \r
39         private Application app;\r
40 \r
41         TabHost mTabHost;\r
42         ViewPager  mViewPager;\r
43         TabsAdapter mTabsAdapter;\r
44 \r
45         @Override\r
46         protected void onCreate(Bundle savedInstanceState) {\r
47                 super.onCreate(savedInstanceState);\r
48 \r
49                 app = (Application) this.getApplication();\r
50 \r
51                 setContentView(R.layout.openrocketviewer);\r
52 \r
53                 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);\r
54                 prefs.registerOnSharedPreferenceChangeListener(this);\r
55 \r
56                 mTabHost = (TabHost)findViewById(android.R.id.tabhost);\r
57                 mTabHost.setup();\r
58 \r
59                 mViewPager = (ViewPager)findViewById(R.id.pager);\r
60 \r
61                 mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);\r
62 \r
63                 mTabsAdapter.addTab(mTabHost.newTabSpec("overview").setIndicator("Overview"),\r
64                                 Overview.class, null);\r
65                 mTabsAdapter.addTab(mTabHost.newTabSpec("components").setIndicator("Components"),\r
66                                 Component.class, null);\r
67                 mTabsAdapter.addTab(mTabHost.newTabSpec("simulations").setIndicator("Simulations"),\r
68                                 Simulations.class, null);\r
69 \r
70                 if (savedInstanceState != null) {\r
71                         mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));\r
72                 }\r
73         }\r
74 \r
75         @Override\r
76         protected void onSaveInstanceState(Bundle outState) {\r
77                 super.onSaveInstanceState(outState);\r
78                 outState.putString("tab", mTabHost.getCurrentTabTag());\r
79         }\r
80 \r
81         /* (non-Javadoc)\r
82          * @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)\r
83          */\r
84         @Override\r
85         public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {\r
86                 // just in case the user changed the units, we redraw.\r
87                 //      TODO =  updateContents();  redraw all children..\r
88         }\r
89 \r
90         @Override\r
91         public boolean onCreateOptionsMenu(Menu menu) {\r
92                 MenuInflater inflater = getMenuInflater();\r
93                 inflater.inflate(R.menu.rocket_viewer_option_menu, menu);\r
94                 return true;\r
95         }\r
96 \r
97         @Override\r
98         public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
99                 Log.d(TAG,"onMenuItemSelected" + item.getItemId());\r
100                 switch(item.getItemId()) {\r
101                 case R.id.motor_list_menu_option:\r
102                         ActivityHelpers.browseMotors(this);\r
103                         return true;\r
104                 case R.id.preference_menu_option:\r
105                         ActivityHelpers.startPreferences(this);\r
106                         return true;\r
107                 }\r
108                 return super.onMenuItemSelected(featureId, item);\r
109         }\r
110 \r
111         @Override\r
112         public void onSimulationSelected(int simulationId) {\r
113                 View sidepane = findViewById(R.id.sidepane);\r
114                 if ( /* if multi pane */ sidepane != null ) {\r
115                         Simulation sim = app.getRocketDocument().getSimulation(simulationId);\r
116                         SimulationChart chart = new SimulationChart(simulationId);\r
117 \r
118                         Fragment graph = SimulationFragment.newInstance(chart);\r
119 \r
120                         FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
121                         ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
122                         // probably only want to update back stack for first time.\r
123                         ft.addToBackStack("simulationplot");\r
124                         ft.replace(R.id.sidepane, graph);\r
125                         ft.show(graph);\r
126                         ft.commit();\r
127 \r
128 \r
129                 } else {\r
130                         Intent i = new Intent(this, SimulationViewActivity.class);\r
131                         i.putExtra("Simulation",simulationId);\r
132                         startActivity(i);\r
133                 }\r
134         }\r
135 \r
136 }\r