1 package net.sf.openrocket.android.motor;
\r
3 import java.util.List;
\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
21 public class MotorDelayDialogFragment extends DialogFragment
\r
22 implements View.OnClickListener, TextView.OnEditorActionListener {
\r
24 public interface OnDelaySelectedListener {
\r
25 public void onDelaySelected( double delay );
\r
28 private OnDelaySelectedListener delaySelectedListener;
\r
30 public void setDelaySelectedListener(OnDelaySelectedListener delaySelectedListener) {
\r
31 this.delaySelectedListener = delaySelectedListener;
\r
34 private final static String delaysArg = "delaysArg";
\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
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
54 public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
\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
70 public Dialog onCreateDialog(Bundle savedInstanceState) {
\r
72 if (savedInstanceState == null ) {
\r
73 savedInstanceState = getArguments();
\r
75 double[] delays = savedInstanceState.getDoubleArray(delaysArg);
\r
76 List<String> delayList = ConversionUtils.delaysToStringList(delays);
\r
78 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
\r
79 builder.setTitle("Enter or Choose Delay");
\r
81 LayoutInflater li = getActivity().getLayoutInflater();
\r
82 View v = li.inflate(R.layout.motor_config_delay_dialog, null);
\r
85 ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,delayList) {
\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
92 TextView tv = (TextView) convertView.findViewById(android.R.id.text1);
\r
93 tv.setText( getItem(position) );
\r
94 tv.setOnClickListener( MotorDelayDialogFragment.this );
\r
101 ListView lv = (ListView) v.findViewById(R.id.motor_config_delay_diag_list);
\r
102 lv.setAdapter(listAdapter);
\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