Change to using ActionBarSherlock for the action bar compatibility.
[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.ArrayList;\r
4 \r
5 import net.sf.openrocket.R;\r
6 import android.app.AlertDialog;\r
7 import android.app.Dialog;\r
8 import android.os.Bundle;\r
9 import android.support.v4.app.DialogFragment;\r
10 import android.view.KeyEvent;\r
11 import android.view.LayoutInflater;\r
12 import android.view.View;\r
13 import android.view.ViewGroup;\r
14 import android.widget.ArrayAdapter;\r
15 import android.widget.EditText;\r
16 import android.widget.ListView;\r
17 import android.widget.TextView;\r
18 \r
19 public class MotorDelayDialogFragment extends DialogFragment \r
20 implements View.OnClickListener, TextView.OnEditorActionListener {\r
21 \r
22         public interface OnDelaySelectedListener {\r
23                 public void onDelaySelected( double delay );\r
24         }\r
25 \r
26         private OnDelaySelectedListener delaySelectedListener;\r
27 \r
28         public void setDelaySelectedListener(OnDelaySelectedListener delaySelectedListener) {\r
29                 this.delaySelectedListener = delaySelectedListener;\r
30         }\r
31 \r
32         private final static String delaysArg = "delaysArg";\r
33         \r
34         public static MotorDelayDialogFragment newInstance( double[] delays ) {\r
35                 MotorDelayDialogFragment f = new MotorDelayDialogFragment();\r
36                 Bundle b = new Bundle();\r
37                 b.putDoubleArray(delaysArg, delays);\r
38                 f.setArguments(b);\r
39                 return f;\r
40         }\r
41 \r
42         @Override\r
43         public void onClick(View v) {\r
44                 String s = ((TextView)v).getText().toString();\r
45                 long value = Long.parseLong(s);\r
46                 if ( delaySelectedListener != null ) {\r
47                         delaySelectedListener.onDelaySelected(value);\r
48                 }\r
49         }\r
50 \r
51         @Override\r
52         public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {\r
53                 if ( event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == KeyEvent.KEYCODE_ENTER ) {\r
54                         String s = v.getText().toString();\r
55                         if ( s != null ) { // note requires ems=10\r
56                                 long value = Long.parseLong(s);\r
57                                 if ( delaySelectedListener != null ) {\r
58                                         delaySelectedListener.onDelaySelected(value);\r
59                                 }\r
60                         }\r
61                         return true;\r
62                 }\r
63                 return false;\r
64         }\r
65 \r
66         @Override\r
67         public Dialog onCreateDialog(Bundle savedInstanceState) {\r
68                 \r
69                 if (savedInstanceState == null ) {\r
70                         savedInstanceState = getArguments();\r
71                 }\r
72                 double[] delays = savedInstanceState.getDoubleArray(delaysArg);\r
73                 ArrayList<Long> delayList = new ArrayList<Long>(delays.length);\r
74                 for( int i =0; i< delays.length; i++ ) {\r
75                         delayList.add( Math.round(delays[i]) );\r
76                 }\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<Long> listAdapter = new ArrayAdapter<Long>(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( String.valueOf(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