+ @Override\r
+ public void onSharedPreferenceChanged(SharedPreferences arg0, String arg1) {\r
+ if ( autoSaveEnabledKey.equals(arg1) ) {\r
+ autoSaveEnabled = arg0.getBoolean(autoSaveEnabledKey, false);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void onSimulationSelected(int simulationId) {\r
+\r
+ Simulation sim = CurrentRocketHolder.getCurrentRocket().getRocketDocument().getSimulation(simulationId);\r
+ // Check if there is data for this simulation.\r
+ if ( sim.getSimulatedData() == null || sim.getSimulatedData().getBranchCount() == 0 ) {\r
+ // This shouldn't happen because the Simulations list does the check.\r
+ return;\r
+ }\r
+\r
+ View sidepane = findViewById(R.id.sidepane);\r
+ if ( /* if multi pane */ sidepane != null ) {\r
+ SimulationChart chart = new SimulationChart(simulationId);\r
+\r
+ Fragment graph = SimulationViewFragment.newInstance(chart);\r
+\r
+ FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
+ ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
+ // probably only want to update back stack for first time.\r
+ ft.addToBackStack("simulationplot");\r
+ ft.replace(R.id.sidepane, graph);\r
+ ft.show(graph);\r
+ ft.commit();\r
+\r
+\r
+ } else {\r
+ Intent i = new Intent(this, SimulationViewActivity.class);\r
+ i.putExtra("Simulation",simulationId);\r
+ startActivity(i);\r
+ }\r
+ }\r
+\r
+ private void saveRocketDocument() {\r
+ getSupportFragmentManager().beginTransaction()\r
+ .add( OpenRocketSaverFragment.newInstance(true), "saver")\r
+ .commitAllowingStateLoss();\r
+ }\r
+\r
+ @Override\r
+ public void onOpenRocketFileSaved(Boolean result) {\r
+ invalidateOptionsMenu();\r
+ if ( loadAfterSave ) {\r
+ loadAfterSave = false;\r
+ pickOrkFiles();\r
+ }\r
+ }\r
+\r
+ private class RocketChangedEventHandler extends ChangeEventBroadcastReceiver {\r
+\r
+ @Override\r
+ protected void doSimComplete() {\r
+ if ( autoSaveEnabled && CurrentRocketHolder.getCurrentRocket().canSave() ) {\r
+ Toast.makeText(OpenRocketViewer.this, R.string.autoSaveMessage, Toast.LENGTH_SHORT).show();\r
+ OpenRocketViewer.this.saveRocketDocument();\r
+ }\r
+ doSimsChanged();\r
+ }\r
+\r
+ @Override\r
+ protected void doSimsChanged() {\r
+ invalidateOptionsMenu();\r
+ Simulations sims = (Simulations) viewPagerAdapter.getFragmentAtPos(SIMS_POS);\r
+ if ( sims != null ) {\r
+ sims.refreshSimulationList();\r
+ }\r
+ }\r
+\r
+ @Override\r
+ protected void doMotorConfigsChanged() {\r
+ invalidateOptionsMenu();\r
+ Configurations configs = (Configurations) viewPagerAdapter.getFragmentAtPos(CONFIGS_POS);\r
+ if ( configs != null ) {\r
+ configs.refreshConfigsList();\r
+ }\r
+ }\r
+\r
+ };\r
+\r
+\r
+ private class OpenRocketViewerPagerAdapter extends FragmentPagerAdapter {\r
+\r
+ public OpenRocketViewerPagerAdapter( FragmentManager fm ) {\r
+ super(fm);\r
+ }\r
+ @Override\r
+ public int getCount() {\r
+ return TABSIZE;\r
+ }\r
+ @Override\r
+ public Fragment getItem( int position ) {\r
+ switch (position) {\r
+ case OVERVIEW_POS:\r
+ return new Overview();\r
+ case COMPONENT_POS:\r
+ return new Component();\r
+ case SIMS_POS:\r
+ return new Simulations();\r
+ case CONFIGS_POS:\r
+ return new Configurations();\r
+ }\r
+ return null;\r
+ }\r
+ @Override\r
+ public CharSequence getPageTitle(int position) {\r
+ switch (position) {\r
+ case OVERVIEW_POS:\r
+ return "Overview";\r
+ case COMPONENT_POS:\r
+ return "Components";\r
+ case SIMS_POS:\r
+ return "Simulations";\r
+ case CONFIGS_POS:\r
+ return "Configurations";\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public Fragment getFragmentAtPos( int pos ) {\r
+ String tag = "android:switcher:"+R.id.pager+":"+pos;\r
+ Fragment f = OpenRocketViewer.this.getSupportFragmentManager().findFragmentByTag(tag);\r
+ return f;\r
+ }\r
+ }\r
+\r