create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / Configurations.java
index 9e4e9183aa1e6453a225ec344e170464c5603629..9f381de03e5cee5ea49450326c881e894f7d0c66 100644 (file)
@@ -3,7 +3,7 @@ package net.sf.openrocket.android.rocket;
 import java.util.List;\r
 \r
 import net.sf.openrocket.R;\r
-import net.sf.openrocket.android.Application;\r
+import net.sf.openrocket.android.CurrentRocketHolder;\r
 import net.sf.openrocket.android.db.DbAdapter;\r
 import net.sf.openrocket.android.motor.ExtendedThrustCurveMotor;\r
 import net.sf.openrocket.android.motor.MotorDelayDialogFragment;\r
@@ -15,6 +15,9 @@ import net.sf.openrocket.motor.Motor;
 import net.sf.openrocket.rocketcomponent.MotorMount;\r
 import net.sf.openrocket.rocketcomponent.RocketComponent;\r
 import net.sf.openrocket.unit.UnitGroup;\r
+import android.app.AlertDialog;\r
+import android.app.Dialog;\r
+import android.content.DialogInterface;\r
 import android.os.Bundle;\r
 import android.support.v4.app.FragmentTransaction;\r
 import android.view.LayoutInflater;\r
@@ -23,6 +26,7 @@ import android.view.ViewGroup;
 import android.widget.BaseExpandableListAdapter;\r
 import android.widget.Button;\r
 import android.widget.ExpandableListAdapter;\r
+import android.widget.ListView;\r
 import android.widget.TextView;\r
 \r
 import com.actionbarsherlock.view.Menu;\r
@@ -42,6 +46,12 @@ public class Configurations extends ExpandableListFragment {
                return v;\r
        }\r
 \r
+       @Override\r
+       public void onResume() {\r
+               setup();\r
+               super.onResume();\r
+       }\r
+\r
        @Override\r
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {\r
                inflater.inflate(R.menu.rocket_viewer_configurations_option_menu, menu);\r
@@ -59,20 +69,16 @@ public class Configurations extends ExpandableListFragment {
                }\r
        }\r
 \r
-       @Override\r
-       public void onActivityCreated(Bundle savedInstanceState) {\r
-               super.onActivityCreated(savedInstanceState);\r
-\r
-               setup();\r
-\r
-       }\r
-       \r
        public void refreshConfigsList() {\r
                setup();\r
        }\r
 \r
        private void addConfiguration() {\r
-               ((Application)getActivity().getApplication()).addNewMotorConfig();\r
+               CurrentRocketHolder.getCurrentRocket().addNewMotorConfig(getActivity());\r
+       }\r
+       \r
+       private void removeConfiguration( String config ) {\r
+               CurrentRocketHolder.getCurrentRocket().deleteMotorConfig( getActivity(), config );\r
        }\r
        \r
        private static class MotorMountInfo {\r
@@ -110,15 +116,19 @@ public class Configurations extends ExpandableListFragment {
        }\r
 \r
        private void setup() {\r
-               final OpenRocketDocument rocketDocument = ((Application)getActivity().getApplication()).getRocketDocument();\r
+               final OpenRocketDocument rocketDocument = CurrentRocketHolder.getCurrentRocket().getRocketDocument();\r
 \r
                ExpandableListAdapter configurationAdapter = new BaseExpandableListAdapter() {\r
 \r
+                       // Note: the magic 1 you see below is so the "no motors" configuration\r
+                       // does not appear in the configuration list.\r
                        List<MotorMount> mmts = rocketDocument.getRocket().getMotorMounts();\r
 \r
                        @Override\r
                        public int getGroupCount() {\r
-                               return rocketDocument.getRocket().getMotorConfigurationIDs().length;\r
+                               // don't show the "no motors" configuration, so we have one less than the\r
+                               // array length.\r
+                               return rocketDocument.getRocket().getMotorConfigurationIDs().length-1;\r
                        }\r
 \r
                        @Override\r
@@ -128,7 +138,8 @@ public class Configurations extends ExpandableListFragment {
 \r
                        @Override\r
                        public Object getGroup(int groupPosition) {\r
-                               String config = rocketDocument.getRocket().getMotorConfigurationIDs()[groupPosition];\r
+                               // Skip over the "no motors" configuration\r
+                               String config = rocketDocument.getRocket().getMotorConfigurationIDs()[groupPosition+1];\r
                                return config;\r
                        }\r
 \r
@@ -169,11 +180,11 @@ public class Configurations extends ExpandableListFragment {
                        }\r
 \r
                        @Override\r
-                       public View getGroupView(int groupPosition, boolean isExpanded,\r
-                                       View convertView, ViewGroup parent) {\r
+                       public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {\r
                                if ( convertView == null ) {\r
                                        convertView = getActivity().getLayoutInflater().inflate(android.R.layout.simple_expandable_list_item_1,null);\r
                                }\r
+\r
                                String configDescription = rocketDocument.getRocket().getMotorConfigurationNameOrDescription((String) getGroup(groupPosition));\r
                                ((TextView)convertView.findViewById(android.R.id.text1)).setText( configDescription );\r
                                return convertView;\r
@@ -219,9 +230,7 @@ public class Configurations extends ExpandableListFragment {
                        }\r
 \r
                        @Override\r
-                       public boolean isChildSelectable(int groupPosition,\r
-                                       int childPosition) {\r
-                               // TODO Auto-generated method stub\r
+                       public boolean isChildSelectable(int groupPosition,     int childPosition) {\r
                                return false;\r
                        }\r
 \r
@@ -230,6 +239,34 @@ public class Configurations extends ExpandableListFragment {
                setListAdapter(configurationAdapter);\r
        }\r
 \r
+       @Override\r
+       public boolean onListItemLongClick(ListView l, View v, int position, long id) {\r
+               \r
+               Object o = getExpandableListAdapter().getGroup(position);\r
+               \r
+               if ( o == null || ! (o instanceof String) ) {\r
+                       return false;\r
+               }\r
+               final String motorConfigId = (String)o;\r
+               \r
+               AlertDialog.Builder b = new AlertDialog.Builder( getActivity() );\r
+               b.setTitle(R.string.DeleteConfigTitle);\r
+               b.setCancelable(true);\r
+               b.setPositiveButton(R.string.Delete, new DialogInterface.OnClickListener() {\r
+                       @Override\r
+                       public void onClick(DialogInterface dialog, int which) {\r
+                               Configurations.this.removeConfiguration(motorConfigId);\r
+                       }\r
+                       \r
+               });\r
+               \r
+               Dialog dialog = b.create();\r
+               \r
+               dialog.setCanceledOnTouchOutside(true);\r
+               dialog.show();\r
+               return true;\r
+       }\r
+\r
        private class MotorWizardOnClickListener implements View.OnClickListener {\r
                @Override\r
                public void onClick(View v) {\r