create changelog entry
[debian/openrocket] / android / src / net / sf / openrocket / android / motor / MotorDelayDialogFragment.java
1 package net.sf.openrocket.android.motor;\r
2 \r
3 import java.util.List;\r
4 \r
5 import net.sf.openrocket.R;\r
6 import net.sf.openrocket.android.db.ConversionUtils;\r
7 import android.app.AlertDialog;\r
8 import android.app.Dialog;\r
9 import android.os.Bundle;\r
10 import android.support.v4.app.DialogFragment;\r
11 import android.view.KeyEvent;\r
12 import android.view.LayoutInflater;\r
13 import android.view.View;\r
14 import android.view.ViewGroup;\r
15 import android.view.inputmethod.EditorInfo;\r
16 import android.widget.ArrayAdapter;\r
17 import android.widget.EditText;\r
18 import android.widget.ListView;\r
19 import android.widget.TextView;\r
20 \r
21 public class MotorDelayDialogFragment extends DialogFragment \r
22 implements View.OnClickListener, TextView.OnEditorActionListener {\r
23 \r
24         public interface OnDelaySelectedListener {\r
25                 public void onDelaySelected( double delay );\r
26         }\r
27 \r
28         private OnDelaySelectedListener delaySelectedListener;\r
29 \r
30         public void setDelaySelectedListener(OnDelaySelectedListener delaySelectedListener) {\r
31                 this.delaySelectedListener = delaySelectedListener;\r
32         }\r
33 \r
34         private final static String delaysArg = "delaysArg";\r
35         \r
36         public static MotorDelayDialogFragment newInstance( double[] delays ) {\r
37                 MotorDelayDialogFragment f = new MotorDelayDialogFragment();\r
38                 Bundle b = new Bundle();\r
39                 b.putDoubleArray(delaysArg, delays);\r
40                 f.setArguments(b);\r
41                 return f;\r
42         }\r
43 \r
44         @Override\r
45         public void onClick(View v) {\r
46                 String s = ((TextView)v).getText().toString();\r
47                 double value = ConversionUtils.stringToDelay(s);\r
48                 if ( delaySelectedListener != null ) {\r
49                         delaySelectedListener.onDelaySelected(value);\r
50                 }\r
51         }\r
52 \r
53         @Override\r
54         public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {\r
55 \r
56                 if ( actionId == EditorInfo.IME_ACTION_DONE ) {\r
57                         String s = v.getText().toString();\r
58                         if ( s != null ) { // note requires ems=10\r
59                                 long value = Long.parseLong(s);\r
60                                 if ( delaySelectedListener != null ) {\r
61                                         delaySelectedListener.onDelaySelected(value);\r
62                                 }\r
63                         }\r
64                         return true;\r
65                 }\r
66                 return false;\r
67         }\r
68 \r
69         @Override\r
70         public Dialog onCreateDialog(Bundle savedInstanceState) {\r
71                 \r
72                 if (savedInstanceState == null ) {\r
73                         savedInstanceState = getArguments();\r
74                 }\r
75                 double[] delays = savedInstanceState.getDoubleArray(delaysArg);\r
76                 List<String> delayList = ConversionUtils.delaysToStringList(delays);\r
77                 \r
78                 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());\r
79                 builder.setTitle("Enter or Choose Delay");\r
80                 \r
81                 LayoutInflater li = getActivity().getLayoutInflater();\r
82                 View v = li.inflate(R.layout.motor_config_delay_dialog, null);\r
83                 builder.setView(v);\r
84                 \r
85                 ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,delayList) {\r
86 \r
87                         @Override\r
88                         public View getView(int position, View convertView, ViewGroup parent) {\r
89                                 if ( convertView == null ) {\r
90                                         convertView = getActivity().getLayoutInflater().inflate( android.R.layout.simple_list_item_1, null);\r
91                                 }\r
92                                 TextView tv = (TextView) convertView.findViewById(android.R.id.text1);\r
93                                 tv.setText( getItem(position) );\r
94                                 tv.setOnClickListener( MotorDelayDialogFragment.this );\r
95                                 return convertView;\r
96                         }\r
97                         \r
98                         \r
99                 };\r
100                 \r
101                 ListView lv = (ListView) v.findViewById(R.id.motor_config_delay_diag_list);\r
102                 lv.setAdapter(listAdapter);\r
103                 \r
104                 EditText et = (EditText) v.findViewById(R.id.motor_config_delay_diag_edit);\r
105                 et.setOnEditorActionListener(MotorDelayDialogFragment.this);\r
106                 return builder.create();\r
107                 \r
108         }\r
109         \r
110         \r
111         \r
112 }\r