--- /dev/null
+package net.sf.openrocket.android.motor;\r
+\r
+import java.util.List;\r
+\r
+import net.sf.openrocket.R;\r
+import net.sf.openrocket.android.db.ConversionUtils;\r
+import android.app.AlertDialog;\r
+import android.app.Dialog;\r
+import android.os.Bundle;\r
+import android.support.v4.app.DialogFragment;\r
+import android.view.KeyEvent;\r
+import android.view.LayoutInflater;\r
+import android.view.View;\r
+import android.view.ViewGroup;\r
+import android.view.inputmethod.EditorInfo;\r
+import android.widget.ArrayAdapter;\r
+import android.widget.EditText;\r
+import android.widget.ListView;\r
+import android.widget.TextView;\r
+\r
+public class MotorDelayDialogFragment extends DialogFragment \r
+implements View.OnClickListener, TextView.OnEditorActionListener {\r
+\r
+ public interface OnDelaySelectedListener {\r
+ public void onDelaySelected( double delay );\r
+ }\r
+\r
+ private OnDelaySelectedListener delaySelectedListener;\r
+\r
+ public void setDelaySelectedListener(OnDelaySelectedListener delaySelectedListener) {\r
+ this.delaySelectedListener = delaySelectedListener;\r
+ }\r
+\r
+ private final static String delaysArg = "delaysArg";\r
+ \r
+ public static MotorDelayDialogFragment newInstance( double[] delays ) {\r
+ MotorDelayDialogFragment f = new MotorDelayDialogFragment();\r
+ Bundle b = new Bundle();\r
+ b.putDoubleArray(delaysArg, delays);\r
+ f.setArguments(b);\r
+ return f;\r
+ }\r
+\r
+ @Override\r
+ public void onClick(View v) {\r
+ String s = ((TextView)v).getText().toString();\r
+ double value = ConversionUtils.stringToDelay(s);\r
+ if ( delaySelectedListener != null ) {\r
+ delaySelectedListener.onDelaySelected(value);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {\r
+\r
+ if ( actionId == EditorInfo.IME_ACTION_DONE ) {\r
+ String s = v.getText().toString();\r
+ if ( s != null ) { // note requires ems=10\r
+ long value = Long.parseLong(s);\r
+ if ( delaySelectedListener != null ) {\r
+ delaySelectedListener.onDelaySelected(value);\r
+ }\r
+ }\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public Dialog onCreateDialog(Bundle savedInstanceState) {\r
+ \r
+ if (savedInstanceState == null ) {\r
+ savedInstanceState = getArguments();\r
+ }\r
+ double[] delays = savedInstanceState.getDoubleArray(delaysArg);\r
+ List<String> delayList = ConversionUtils.delaysToStringList(delays);\r
+ \r
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
+ builder.setTitle("Enter or Choose Delay");\r
+ \r
+ LayoutInflater li = getActivity().getLayoutInflater();\r
+ View v = li.inflate(R.layout.motor_config_delay_dialog, null);\r
+ builder.setView(v);\r
+ \r
+ ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,delayList) {\r
+\r
+ @Override\r
+ public View getView(int position, View convertView, ViewGroup parent) {\r
+ if ( convertView == null ) {\r
+ convertView = getActivity().getLayoutInflater().inflate( android.R.layout.simple_list_item_1, null);\r
+ }\r
+ TextView tv = (TextView) convertView.findViewById(android.R.id.text1);\r
+ tv.setText( getItem(position) );\r
+ tv.setOnClickListener( MotorDelayDialogFragment.this );\r
+ return convertView;\r
+ }\r
+ \r
+ \r
+ };\r
+ \r
+ ListView lv = (ListView) v.findViewById(R.id.motor_config_delay_diag_list);\r
+ lv.setAdapter(listAdapter);\r
+ \r
+ EditText et = (EditText) v.findViewById(R.id.motor_config_delay_diag_edit);\r
+ et.setOnEditorActionListener(MotorDelayDialogFragment.this);\r
+ return builder.create();\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+}\r