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