Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android / src / net / sf / openrocket / android / motor / MotorDelayDialogFragment.java
diff --git a/android/src/net/sf/openrocket/android/motor/MotorDelayDialogFragment.java b/android/src/net/sf/openrocket/android/motor/MotorDelayDialogFragment.java
new file mode 100644 (file)
index 0000000..b83c95b
--- /dev/null
@@ -0,0 +1,112 @@
+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