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