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
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
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
+import com.actionbarsherlock.view.MenuInflater;\r
+import com.actionbarsherlock.view.MenuItem;\r
+\r
public class Configurations extends ExpandableListFragment {\r
\r
private final static String wizardFrag = "wizardFrag";\r
@Override\r
public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
Bundle savedInstanceState) {\r
+ setHasOptionsMenu(true);\r
View v = inflater.inflate(R.layout.rocket_configurations, container, false);\r
\r
- Button b = (Button) v.findViewById(R.id.openrocketviewerAddConfiguration);\r
-\r
- b.setOnClickListener( new View.OnClickListener() {\r
+ return v;\r
+ }\r
\r
- @Override\r
- public void onClick(View v) {\r
- ((Application)getActivity().getApplication()).getRocketDocument().getRocket().newMotorConfigurationID();\r
- Configurations.this.setup();\r
- }\r
- });\r
+ @Override\r
+ public void onResume() {\r
+ setup();\r
+ super.onResume();\r
+ }\r
\r
- return v;\r
+ @Override\r
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {\r
+ inflater.inflate(R.menu.rocket_viewer_configurations_option_menu, menu);\r
}\r
\r
@Override\r
- public void onActivityCreated(Bundle savedInstanceState) {\r
- super.onActivityCreated(savedInstanceState);\r
+ public boolean onOptionsItemSelected(MenuItem item) {\r
+ switch (item.getItemId())\r
+ {\r
+ case R.id.menu_add:\r
+ addConfiguration();\r
+ return true;\r
+ default:\r
+ return super.onOptionsItemSelected(item);\r
+ }\r
+ }\r
\r
+ public void refreshConfigsList() {\r
setup();\r
-\r
}\r
\r
+ private void addConfiguration() {\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
\r
private RocketComponent mmt;\r
}\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
\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
}\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
}\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
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