import net.sf.openrocket.android.simulation.SimulationViewActivity;\r
import net.sf.openrocket.android.simulation.SimulationViewFragment;\r
import net.sf.openrocket.android.util.AndroidLogWrapper;\r
+import net.sf.openrocket.document.OpenRocketDocument;\r
import net.sf.openrocket.document.Simulation;\r
import android.app.AlertDialog;\r
import android.content.Intent;\r
import android.support.v4.view.ViewPager;\r
import android.view.View;\r
\r
-import com.actionbarsherlock.app.SherlockFragmentActivity;\r
import com.actionbarsherlock.view.Menu;\r
import com.actionbarsherlock.view.MenuInflater;\r
import com.actionbarsherlock.view.MenuItem;\r
\r
-public class OpenRocketViewer extends SherlockFragmentActivity\r
+public class OpenRocketViewer extends OpenRocketLoaderActivity\r
implements Simulations.OnSimulationSelectedListener\r
{\r
\r
private final static int TABSIZE = 4;\r
\r
private OpenRocketViewerPagerAdapter viewPagerAdapter;\r
+ \r
+ private MenuItem saveAction;\r
\r
@Override\r
protected void onCreate(Bundle savedInstanceState) {\r
super.onCreate(savedInstanceState);\r
\r
- setTitle(CurrentRocketHolder.getCurrentRocket().getRocketDocument().getRocket().getName());\r
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);\r
+ // If the application sleeps for a long time, the CurrentRocketHolder might get cleaned\r
+ // up. When this happens, we cannot restore this state, so instead we just\r
+ // go home.\r
+ OpenRocketDocument rocDoc = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
+ if ( rocDoc == null ) {\r
+ AndroidLogWrapper.d(OpenRocketViewer.class, "No document - go home");\r
+ ActivityHelpers.goHome(this);\r
+ finish();\r
+ return;\r
+ }\r
+ setTitle(rocDoc.getRocket().getName());\r
+ getSupportActionBar().setHomeButtonEnabled(true);\r
\r
setContentView(R.layout.openrocketviewer);\r
ViewPager viewPager = (ViewPager)findViewById(R.id.pager);\r
viewPagerAdapter = new OpenRocketViewerPagerAdapter( this.getSupportFragmentManager() );\r
viewPager.setAdapter( viewPagerAdapter );\r
-\r
- CurrentRocketHolder.getCurrentRocket().setHandler( new RocketChangedEventHandler( ) );\r
}\r
\r
@Override\r
super.onPause();\r
}\r
\r
+ @Override\r
+ protected void onResume() {\r
+ RocketChangedEventHandler handler = new RocketChangedEventHandler();\r
+ CurrentRocketHolder.getCurrentRocket().setHandler(handler);\r
+ super.onResume();\r
+ }\r
+\r
@Override\r
public boolean onCreateOptionsMenu(Menu menu) {\r
MenuInflater inflater = getSupportMenuInflater();\r
inflater.inflate(R.menu.rocket_viewer_option_menu, menu);\r
+ saveAction = menu.findItem(R.id.menu_save);\r
return true;\r
}\r
\r
public boolean onMenuItemSelected(int featureId, MenuItem item) {\r
AndroidLogWrapper.d(OpenRocketViewer.class,"onMenuItemSelected" + item.getItemId());\r
switch(item.getItemId()) {\r
+ case R.id.menu_load:\r
+ // FIXME - Might want to prompt for save here.\r
+ pickOrkFiles();\r
+ return true;\r
case R.id.menu_save:\r
// FIXME - Probably want to open a dialog here.\r
try {\r
CurrentRocketHolder.getCurrentRocket().saveOpenRocketDocument();\r
+ saveAction.setVisible(false);\r
+ invalidateOptionsMenu();\r
} catch ( IOException iex ) {\r
AndroidLogWrapper.d(OpenRocketViewer.class, iex.getMessage());\r
}\r
}\r
\r
private class RocketChangedEventHandler extends net.sf.openrocket.android.RocketChangedEventHandler {\r
-\r
\r
@Override\r
protected void doSimsChanged() {\r
+ if (saveAction != null ) {\r
+ saveAction.setVisible(true);\r
+ invalidateOptionsMenu();\r
+ }\r
Simulations sims = (Simulations) viewPagerAdapter.getFragmentAtPos(SIMS_POS);\r
if ( sims != null ) {\r
sims.refreshSimulationList();\r
\r
@Override\r
protected void doMotorConfigsChanged() {\r
+ if (saveAction != null ) {\r
+ saveAction.setVisible(true);\r
+ invalidateOptionsMenu();\r
+ }\r
Configurations configs = (Configurations) viewPagerAdapter.getFragmentAtPos(CONFIGS_POS);\r
if ( configs != null ) {\r
configs.refreshConfigsList();\r