package net.sf.openrocket.android.rocket; import net.sf.openrocket.rocketcomponent.Rocket; import android.content.Context; import android.util.AttributeSet; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MotorConfigSpinner extends Spinner { public MotorConfigSpinner(Context context, AttributeSet attrs, int defStyle, int mode) { super(context, attrs, defStyle, mode); } public MotorConfigSpinner(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MotorConfigSpinner(Context context, AttributeSet attrs) { super(context, attrs); } public MotorConfigSpinner(Context context, int mode) { super(context, mode); } public MotorConfigSpinner(Context context) { super(context); } public void createAdapter(Rocket rocket ) { setAdapter(new MotorConfigSpinnerAdapter(this.getContext(), rocket) ); } public void setSelectedConfiguration( String configId ) { this.setSelection( ((MotorConfigSpinnerAdapter)getAdapter()).getConfigurationPosition( configId )); } public String getSelectedConfiguration() { return ((MotorConfigSpinnerAdapter)getAdapter()).getConfiguration( this.getSelectedItemPosition() ); } public class MotorConfigSpinnerAdapter extends ArrayAdapter<String> { private String[] motorConfigs; public MotorConfigSpinnerAdapter(Context context, Rocket rocket) { super(context, android.R.layout.simple_spinner_item); setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); motorConfigs = rocket.getMotorConfigurationIDs(); for( String config: motorConfigs ) { this.add(rocket.getMotorConfigurationNameOrDescription(config)); } } public int getConfigurationPosition(String configId) { int selectedIndex = 0; if ( configId == null ) { return selectedIndex; } for( String s : motorConfigs ) { // Note - s may be null since it is a valid id. if ( configId.equals(s) ) { break; } selectedIndex++; } if( selectedIndex >= motorConfigs.length ) { selectedIndex = 0; } return selectedIndex; } public String getConfiguration( int position ) { return motorConfigs[position]; } } }