d7592bf5f3cda7ef53aae71ad1f753cbe0b13c7f
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / MissingMotorDialogFragment.java
1 package net.sf.openrocket.android.rocket;\r
2 \r
3 import java.util.Set;\r
4 \r
5 import net.sf.openrocket.motor.ThrustCurveMotorPlaceholder;\r
6 import android.app.AlertDialog;\r
7 import android.app.Dialog;\r
8 import android.content.DialogInterface;\r
9 import android.os.Bundle;\r
10 \r
11 import com.actionbarsherlock.app.SherlockDialogFragment;\r
12 \r
13 public class MissingMotorDialogFragment extends SherlockDialogFragment {\r
14         \r
15         private final static String MESSAGE_ARG_KEY = "message";\r
16 \r
17         public static MissingMotorDialogFragment newInstance( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
18                 MissingMotorDialogFragment frag = new MissingMotorDialogFragment();\r
19                 Bundle b = new Bundle();\r
20                 b.putString(MESSAGE_ARG_KEY, buildMessage(missingMotors));\r
21                 frag.setArguments(b);\r
22                 return frag;\r
23         }\r
24 \r
25         private static String buildMessage( Set<ThrustCurveMotorPlaceholder> missingMotors ) {\r
26                 StringBuilder sb = new StringBuilder();\r
27                 sb.append("The following motors are missing:");\r
28                 for( ThrustCurveMotorPlaceholder m : missingMotors ) {\r
29                         sb.append("\n").append(m.getManufacturer()).append(" ").append(m.getDesignation());\r
30                 }\r
31                 sb.append("\nWould you like to download them from Thrustcurve?");\r
32                 return sb.toString();\r
33         }\r
34         \r
35         @Override\r
36         public void onCreate(Bundle savedInstanceState) {\r
37                 super.onCreate(savedInstanceState);\r
38                 setRetainInstance(true);\r
39                 setCancelable(false);\r
40         }\r
41 \r
42 \r
43         @Override\r
44         public Dialog onCreateDialog(Bundle savedInstanceState) {\r
45 \r
46                 String message = getArguments().getString(MESSAGE_ARG_KEY);\r
47                 \r
48                 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
49                 //                      .setIcon(android.R.drawable.alert_dialog_icon)\r
50                 builder.setTitle("Missing Motors");\r
51                 builder.setMessage(message);\r
52                 builder.setPositiveButton("OK",\r
53                                 new DialogInterface.OnClickListener() {\r
54                         public void onClick(DialogInterface dialog, int whichButton) {\r
55                                 ((OpenRocketLoaderActivity)getActivity()).doFixMissingMotors();\r
56                         }\r
57                 }\r
58                                 );\r
59                 builder.setNegativeButton("Cancel",\r
60                                 new DialogInterface.OnClickListener() {\r
61                         public void onClick(DialogInterface dialog, int whichButton) {\r
62                                 ((OpenRocketLoaderActivity)getActivity()).doNotFixMissingMotors();\r
63                         }\r
64                 }\r
65                                 );\r
66                 return builder.create();\r
67         }\r
68 \r
69         /**\r
70          * Work around for dialog getting dismissed on orientation change.  See code.google.com/p/android/issues/detail?id=17423\r
71          */\r
72         @Override\r
73         public void onDestroyView() {\r
74                 if ( getDialog() != null  && getRetainInstance() ) {\r
75                         getDialog().setDismissMessage(null);\r
76                 }\r
77                 super.onDestroyView();\r
78         }\r
79         \r
80         \r
81 }\r
82 \r