Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / rocket / MotorConfigSpinner.java
diff --git a/android/src/net/sf/openrocket/android/rocket/MotorConfigSpinner.java b/android/src/net/sf/openrocket/android/rocket/MotorConfigSpinner.java
new file mode 100644 (file)
index 0000000..e850178
--- /dev/null
@@ -0,0 +1,87 @@
+package net.sf.openrocket.android.rocket;\r
+\r
+import net.sf.openrocket.rocketcomponent.Rocket;\r
+import android.content.Context;\r
+import android.util.AttributeSet;\r
+import android.widget.ArrayAdapter;\r
+import android.widget.Spinner;\r
+\r
+public class MotorConfigSpinner extends Spinner {\r
+\r
+       public MotorConfigSpinner(Context context, AttributeSet attrs,\r
+                       int defStyle, int mode) {\r
+               super(context, attrs, defStyle, mode);\r
+       }\r
+\r
+       public MotorConfigSpinner(Context context, AttributeSet attrs, int defStyle) {\r
+               super(context, attrs, defStyle);\r
+       }\r
+\r
+       public MotorConfigSpinner(Context context, AttributeSet attrs) {\r
+               super(context, attrs);\r
+       }\r
+\r
+       public MotorConfigSpinner(Context context, int mode) {\r
+               super(context, mode);\r
+       }\r
+\r
+       public MotorConfigSpinner(Context context) {\r
+               super(context);\r
+       }\r
+\r
+       public void createAdapter(Rocket rocket ) {\r
+       \r
+               setAdapter(new MotorConfigSpinnerAdapter(this.getContext(), rocket) );\r
+               \r
+       }\r
+       \r
+       public void setSelectedConfiguration( String configId ) {\r
+               this.setSelection( ((MotorConfigSpinnerAdapter)getAdapter()).getConfigurationPosition( configId ));\r
+       }\r
+       \r
+       public String getSelectedConfiguration() {\r
+               return ((MotorConfigSpinnerAdapter)getAdapter()).getConfiguration( this.getSelectedItemPosition() );\r
+       }\r
+       \r
+       public class MotorConfigSpinnerAdapter extends ArrayAdapter<String> {\r
+\r
+               private String[] motorConfigs;\r
+\r
+               public MotorConfigSpinnerAdapter(Context context, Rocket rocket) {\r
+                       super(context, android.R.layout.simple_spinner_item);\r
+                       setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\r
+                       motorConfigs = rocket.getMotorConfigurationIDs();\r
+\r
+                       for( String config: motorConfigs ) {\r
+                               this.add(rocket.getMotorConfigurationNameOrDescription(config));\r
+                       }\r
+\r
+               }\r
+\r
+               public int getConfigurationPosition(String configId) {\r
+\r
+                       int selectedIndex = 0;\r
+\r
+                       if ( configId == null ) {\r
+                               return selectedIndex;\r
+                       }\r
+\r
+                       for( String s : motorConfigs ) {\r
+                               // Note - s may be null since it is a valid id.\r
+                               if ( configId.equals(s) ) {\r
+                                       break;\r
+                               }\r
+                               selectedIndex++;\r
+                       }\r
+                       if( selectedIndex >= motorConfigs.length ) {\r
+                               selectedIndex = 0;\r
+                       }\r
+\r
+                       return selectedIndex;\r
+               }\r
+               \r
+               public String getConfiguration( int position ) {\r
+                       return motorConfigs[position];\r
+               }\r
+       }\r
+}\r