Added Configuration tab to the rocket viewer which displays all the motor configurati...
[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 java.io.IOException;\r
5 \r
6 import net.sf.openrocket.R;\r
7 import net.sf.openrocket.android.ActivityHelpers;\r
8 import net.sf.openrocket.android.Application;\r
9 import net.sf.openrocket.android.actionbarcompat.ActionBarFragmentActivity;\r
10 import net.sf.openrocket.android.simulation.SimulationChart;\r
11 import net.sf.openrocket.android.simulation.SimulationViewActivity;\r
12 import net.sf.openrocket.android.simulation.SimulationViewFragment;\r
13 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
14 import net.sf.openrocket.document.Simulation;\r
15 import android.app.AlertDialog;\r
16 import android.content.Intent;\r
17 import android.os.Bundle;\r
18 import android.support.v4.app.Fragment;\r
19 import android.support.v4.app.FragmentManager;\r
20 import android.support.v4.app.FragmentPagerAdapter;\r
21 import android.support.v4.app.FragmentTransaction;\r
22 import android.support.v4.view.ViewPager;\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 \r
28 public class OpenRocketViewer extends ActionBarFragmentActivity\r
29 implements Simulations.OnSimulationSelectedListener\r
30 {\r
31 \r
32         private Application app;\r
33 \r
34         @Override\r
35         protected void onCreate(Bundle savedInstanceState) {\r
36                 super.onCreate(savedInstanceState);\r
37 \r
38                 app = (Application) this.getApplication();\r
39                 setContentView(R.layout.openrocketviewer);\r
40                 ViewPager viewPager = (ViewPager)findViewById(R.id.pager);\r
41                 viewPager.setAdapter( new OpenRocketViewerPager( this.getSupportFragmentManager()));\r
42 \r
43                 setTitle(app.getRocketDocument().getRocket().getName());\r
44 \r
45                 getActionBarHelper().setDisplayHomeAsUpEnabled(true);\r
46 \r
47         }\r
48 \r
49         @Override\r
50         public boolean onCreateOptionsMenu(Menu menu) {\r
51                 MenuInflater inflater = getMenuInflater();\r
52                 inflater.inflate(R.menu.rocket_viewer_option_menu, menu);\r
53                 return true;\r
54         }\r
55 \r
56         @Override\r
57         public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
58                 AndroidLogWrapper.d(OpenRocketViewer.class,"onMenuItemSelected" + item.getItemId());\r
59                 switch(item.getItemId()) {\r
60                 case R.id.menu_save:\r
61                         // FIXME - Probably want to open a dialog here.\r
62                         try {\r
63                                 ((Application)getApplication()).saveOpenRocketDocument();\r
64                         } catch ( IOException iex ) {\r
65                                 AndroidLogWrapper.d(OpenRocketViewer.class, iex.getMessage());\r
66                         }\r
67                         return true;\r
68                 case android.R.id.home:\r
69                         ActivityHelpers.goHome(this);\r
70                         return true;\r
71                 case R.id.motor_list_menu_option:\r
72                         ActivityHelpers.browseMotors(this);\r
73                         return true;\r
74                 case R.id.preference_menu_option:\r
75                         ActivityHelpers.startPreferences(this);\r
76                         return true;\r
77                 case R.id.menu_about:\r
78                         ActivityHelpers.showAbout(this);\r
79                         return true;\r
80                 }\r
81                 return super.onMenuItemSelected(featureId, item);\r
82         }\r
83 \r
84         @Override\r
85         public void onSimulationSelected(int simulationId) {\r
86 \r
87                 Simulation sim = app.getRocketDocument().getSimulation(simulationId);\r
88                 // Check if there is data for this simulation.\r
89                 if ( sim.getSimulatedData().getBranchCount() == 0 ) {\r
90                         AlertDialog.Builder builder = new AlertDialog.Builder(this);\r
91                         builder.setMessage("The selected simulation does not have saved data.");\r
92                         builder.setCancelable(true);\r
93                         builder.show();\r
94                         return;\r
95                 }\r
96 \r
97                 View sidepane = findViewById(R.id.sidepane);\r
98                 if ( /* if multi pane */ sidepane != null ) {\r
99                         SimulationChart chart = new SimulationChart(simulationId);\r
100 \r
101                         Fragment graph = SimulationViewFragment.newInstance(chart);\r
102 \r
103                         FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
104                         ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
105                         // probably only want to update back stack for first time.\r
106                         ft.addToBackStack("simulationplot");\r
107                         ft.replace(R.id.sidepane, graph);\r
108                         ft.show(graph);\r
109                         ft.commit();\r
110 \r
111 \r
112                 } else {\r
113                         Intent i = new Intent(this, SimulationViewActivity.class);\r
114                         i.putExtra("Simulation",simulationId);\r
115                         startActivity(i);\r
116                 }\r
117         }\r
118 \r
119         private class OpenRocketViewerPager extends FragmentPagerAdapter {\r
120 \r
121                 public OpenRocketViewerPager( FragmentManager fm ) {\r
122                         super(fm);\r
123                 }\r
124                 @Override\r
125                 public int getCount() {\r
126                         return 4;\r
127                 }\r
128                 @Override\r
129                 public Fragment getItem( int position ) {\r
130                         switch (position) {\r
131                         case 0:\r
132                                 return new Overview();\r
133                         case 1:\r
134                                 return new Component();\r
135                         case 2:\r
136                                 return new Simulations();\r
137                         case 3:\r
138                                 return new Configurations();\r
139                         }\r
140                         return null;\r
141                 }\r
142                 @Override\r
143                 public CharSequence getPageTitle(int position) {\r
144                         switch (position) {\r
145                         case 0:\r
146                                 return "Overview";\r
147                         case 1:\r
148                                 return "Components";\r
149                         case 2:\r
150                                 return "Simulations";\r
151                         case 3:\r
152                                 return "Configurations";\r
153                         }\r
154                         return null;\r
155                 }\r
156         }\r
157 \r
158 }\r