Checkpoint commit with many different changes. Made the Configuration and Simulation...
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / OpenRocketViewer.java
index a80b5df80e47832420ef8cd767a180bb9aaf0e4e..a0de21bfbc0dfde30dd4d6c2564a069611d98f2b 100644 (file)
@@ -32,19 +32,35 @@ implements Simulations.OnSimulationSelectedListener
 \r
        private Application app;\r
 \r
+       private final static int OVERVIEW_POS = 0;\r
+       private final static int COMPONENT_POS = 1;\r
+       private final static int SIMS_POS = 2;\r
+       private final static int CONFIGS_POS = 3;\r
+       private final static int TABSIZE = 4;\r
+\r
+       private OpenRocketViewerPagerAdapter viewPagerAdapter;\r
+\r
        @Override\r
        protected void onCreate(Bundle savedInstanceState) {\r
                super.onCreate(savedInstanceState);\r
 \r
                app = (Application) this.getApplication();\r
-               setContentView(R.layout.openrocketviewer);\r
-               ViewPager viewPager = (ViewPager)findViewById(R.id.pager);\r
-               viewPager.setAdapter( new OpenRocketViewerPager( this.getSupportFragmentManager()));\r
 \r
                setTitle(app.getRocketDocument().getRocket().getName());\r
-\r
                getSupportActionBar().setDisplayHomeAsUpEnabled(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
+               app.setHandler( new RocketChangedEventHandler( ) );\r
+       }\r
+\r
+       @Override\r
+       protected void onPause() {\r
+               app.setHandler(null);\r
+               super.onPause();\r
        }\r
 \r
        @Override\r
@@ -87,7 +103,7 @@ implements Simulations.OnSimulationSelectedListener
 \r
                Simulation sim = app.getRocketDocument().getSimulation(simulationId);\r
                // Check if there is data for this simulation.\r
-               if ( sim.getSimulatedData().getBranchCount() == 0 ) {\r
+               if ( sim.getSimulatedData() == null || sim.getSimulatedData().getBranchCount() == 0 ) {\r
                        AlertDialog.Builder builder = new AlertDialog.Builder(this);\r
                        builder.setMessage("The selected simulation does not have saved data.");\r
                        builder.setCancelable(true);\r
@@ -117,25 +133,47 @@ implements Simulations.OnSimulationSelectedListener
                }\r
        }\r
 \r
-       private class OpenRocketViewerPager extends FragmentPagerAdapter {\r
+       private class RocketChangedEventHandler extends net.sf.openrocket.android.RocketChangedEventHandler {\r
+\r
+               \r
+               @Override\r
+               protected void doSimsChanged() {\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
+                       Configurations configs = (Configurations) viewPagerAdapter.getFragmentAtPos(CONFIGS_POS);\r
+                       if ( configs != null ) {\r
+                               configs.refreshConfigsList();\r
+                       }\r
+               }\r
+\r
+       };\r
+\r
 \r
-               public OpenRocketViewerPager( FragmentManager fm ) {\r
+       private class OpenRocketViewerPagerAdapter extends FragmentPagerAdapter {\r
+\r
+               public OpenRocketViewerPagerAdapter( FragmentManager fm ) {\r
                        super(fm);\r
                }\r
                @Override\r
                public int getCount() {\r
-                       return 4;\r
+                       return TABSIZE;\r
                }\r
                @Override\r
                public Fragment getItem( int position ) {\r
                        switch (position) {\r
-                       case 0:\r
+                       case OVERVIEW_POS:\r
                                return new Overview();\r
-                       case 1:\r
+                       case COMPONENT_POS:\r
                                return new Component();\r
-                       case 2:\r
+                       case SIMS_POS:\r
                                return new Simulations();\r
-                       case 3:\r
+                       case CONFIGS_POS:\r
                                return new Configurations();\r
                        }\r
                        return null;\r
@@ -143,17 +181,23 @@ implements Simulations.OnSimulationSelectedListener
                @Override\r
                public CharSequence getPageTitle(int position) {\r
                        switch (position) {\r
-                       case 0:\r
+                       case OVERVIEW_POS:\r
                                return "Overview";\r
-                       case 1:\r
+                       case COMPONENT_POS:\r
                                return "Components";\r
-                       case 2:\r
+                       case SIMS_POS:\r
                                return "Simulations";\r
-                       case 3:\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
 }\r