If there is no branch data in a simulation, display a dialog and don't try to show...
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / OpenRocketLoaderActivity.java
index 30c313448be5bbb573a7ad905f3d4cd68d98ded3..ac272b876c3e6ff807c9750cf468ff4845f112e4 100644 (file)
@@ -10,7 +10,9 @@ import net.sf.openrocket.android.thrustcurve.TCMissingMotorDownloadAction;
 import net.sf.openrocket.android.thrustcurve.TCQueryAction;\r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
-import android.app.ProgressDialog;\r
+import net.sf.openrocket.rocketcomponent.Rocket;\r
+import android.app.AlertDialog;\r
+import android.content.DialogInterface;\r
 import android.content.Intent;\r
 import android.net.Uri;\r
 import android.os.Bundle;\r
@@ -18,28 +20,21 @@ import android.support.v4.app.DialogFragment;
 import android.support.v4.app.FragmentActivity;\r
 \r
 public class OpenRocketLoaderActivity extends FragmentActivity\r
-implements TCQueryAction.OnComplete\r
+implements TCQueryAction.OnTCQueryCompleteListener, OpenRocketLoaderFragment.OnOpenRocketFileLoaded\r
 {\r
 \r
-       private OpenRocketLoaderResult result;\r
-       \r
-       private Set<ThrustCurveMotorPlaceholder> missingMotors;\r
-       private OpenRocketLoaderTask task;\r
-       private ProgressDialog progress;\r
-       private DialogFragment missingMotorDialog;\r
-       private TCMissingMotorDownloadAction missingMotorDownloadAction;\r
+       private final static String MISSING_MOTOR_DIAG_FRAGMENT_TAG = "missingmotordialog";\r
+       private final static String MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG = "missingmotortask";\r
 \r
        @Override\r
        protected void onCreate(Bundle savedInstanceState) {\r
                super.onCreate(savedInstanceState);\r
                setContentView(R.layout.main);\r
-               missingMotorDownloadAction = new TCMissingMotorDownloadAction(this);\r
                if ( savedInstanceState == null || savedInstanceState.getBoolean("isLoading", false) == false ) {\r
                        Intent i = getIntent();\r
                        Uri file = i.getData();\r
                        loadOrkFile(file);\r
                } else {\r
-                       progress = ProgressDialog.show(this, "Loading file", "");\r
                }\r
        }\r
 \r
@@ -49,30 +44,12 @@ implements TCQueryAction.OnComplete
                outState.putBoolean("isLoading", true);\r
        }\r
 \r
-       @Override\r
-       protected void onDestroy() {\r
-               if ( progress != null ) {\r
-                       if ( progress.isShowing() ) {\r
-                               progress.dismiss();\r
-                       }\r
-                       progress = null;\r
-               }\r
-               if ( missingMotorDownloadAction != null ) {\r
-                       missingMotorDownloadAction.dismiss();\r
-               }\r
-\r
-               super.onDestroy();\r
-       }\r
-\r
        private void loadOrkFile( Uri file ) {\r
                AndroidLogWrapper.d(OpenRocketLoaderActivity.class,"Use ork file: " + file);\r
                String path = file.getPath();\r
                File orkFile = new File(path);\r
-               progress = ProgressDialog.show(this, "Loading file", "");\r
 \r
-               task = new OpenRocketLoaderTask(this);\r
-\r
-               task.execute(orkFile);\r
+               getSupportFragmentManager().beginTransaction().add( OpenRocketLoaderFragment.newInstance(orkFile), "loader").commit();\r
 \r
        }\r
 \r
@@ -82,23 +59,35 @@ implements TCQueryAction.OnComplete
         * \r
         * @param result\r
         */\r
-       void finishedLoading(OpenRocketLoaderResult result) {\r
-               if ( progress != null && progress.isShowing() ) {\r
-                       progress.dismiss();\r
-               }\r
-               this.result = result;\r
-               ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
+       public void onOpenRocketFileLoaded(OpenRocketLoaderResult result) {\r
+               if ( result.loadingError != null ) {\r
+                       \r
+                       AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);\r
+                       dialogBuilder.setTitle("Error Loading File" );\r
+                       dialogBuilder.setMessage( result.loadingError.getLocalizedMessage());\r
+                       dialogBuilder.setOnCancelListener( new DialogInterface.OnCancelListener() {\r
+                               @Override\r
+                               public void onCancel(DialogInterface dialog) {\r
+                                       OpenRocketLoaderActivity.this.finish();\r
+                               }\r
+                       });\r
+                       dialogBuilder.create().show();\r
 \r
-               updateMissingMotors();\r
+               } else {\r
+                       ((Application)OpenRocketLoaderActivity.this.getApplication()).setRocketDocument( result.rocket );\r
+                       ((Application)OpenRocketLoaderActivity.this.getApplication()).setWarnings( result.warnings );\r
 \r
+                       updateMissingMotors();\r
+               }\r
        }\r
 \r
        private void updateMissingMotors() {\r
-               missingMotors = MissingMotorHelpers.findMissingMotors(result.rocket.getRocket());\r
+               Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+               Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
 \r
                if ( missingMotors.size() > 0 ) {\r
-                       missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
-                       missingMotorDialog.show(getSupportFragmentManager(), "missing motors");\r
+                       DialogFragment missingMotorDialog = MissingMotorDialogFragment.newInstance( missingMotors );\r
+                       getSupportFragmentManager().beginTransaction().add(missingMotorDialog, MISSING_MOTOR_DIAG_FRAGMENT_TAG).commit();\r
                        return;\r
                }\r
 \r
@@ -109,19 +98,20 @@ implements TCQueryAction.OnComplete
         * Called when the TCMissingMotorDownload process finishes.\r
         */\r
        @Override\r
-       public void onComplete() {\r
+       public void onTCQueryComplete(String message) {\r
 \r
+               Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+               WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
                // Need to update the motor references.\r
-               MissingMotorHelpers.updateMissingMotors(result.rocket.getRocket(), result.warnings);\r
+               MissingMotorHelpers.updateMissingMotors(rocket, warnings);\r
 \r
                displayWarningDialog();\r
        }\r
 \r
        private void displayWarningDialog() {\r
-               WarningSet warnings = result.warnings;\r
+               WarningSet warnings = ((Application)OpenRocketLoaderActivity.this.getApplication()).getWarnings();\r
                if (warnings == null || warnings.isEmpty()) {\r
                } else {\r
-                       // TODO - Build a warning listing dialog\r
                        DialogFragment newFragment = WarningDialogFragment.newInstance();\r
                        newFragment.show(getSupportFragmentManager(), "dialog");\r
                        return;\r
@@ -131,20 +121,19 @@ implements TCQueryAction.OnComplete
        }\r
 \r
        public void doFixMissingMotors() {\r
+               Rocket rocket = ((Application)OpenRocketLoaderActivity.this.getApplication()).getRocketDocument().getRocket();\r
+               Set<ThrustCurveMotorPlaceholder> missingMotors = MissingMotorHelpers.findMissingMotors(rocket);\r
 \r
-               missingMotorDialog.dismiss();\r
-\r
-               missingMotorDownloadAction.setMissingMotors(missingMotors);\r
-               missingMotorDownloadAction.start();\r
+               TCMissingMotorDownloadAction motorfrag = TCMissingMotorDownloadAction.newInstance( missingMotors );\r
+               getSupportFragmentManager().beginTransaction().add( motorfrag, MISSING_MOTOR_DOWNLOAD_FRAGMENT_TAG).commit();\r
 \r
        }\r
 \r
        public void doNotFixMissingMotors() {\r
-               missingMotorDialog.dismiss();\r
                displayWarningDialog();\r
        }\r
 \r
-       private void moveOnToViewer() {\r
+       public void moveOnToViewer() {\r
                Intent i = new Intent(this,OpenRocketViewer.class);\r
                startActivity(i);\r
                finish();\r