1 package net.sf.openrocket.android.motor;
\r
3 import java.util.ArrayList;
\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
19 public class MotorDelayDialogFragment extends DialogFragment
\r
20 implements View.OnClickListener, TextView.OnEditorActionListener {
\r
22 public interface OnDelaySelectedListener {
\r
23 public void onDelaySelected( double delay );
\r
26 private OnDelaySelectedListener delaySelectedListener;
\r
28 public void setDelaySelectedListener(OnDelaySelectedListener delaySelectedListener) {
\r
29 this.delaySelectedListener = delaySelectedListener;
\r
32 private final static String delaysArg = "delaysArg";
\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
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
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
67 public Dialog onCreateDialog(Bundle savedInstanceState) {
\r
69 if (savedInstanceState == null ) {
\r
70 savedInstanceState = getArguments();
\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
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<Long> listAdapter = new ArrayAdapter<Long>(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( String.valueOf(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