4cd899025201f3c3dc6152e97498d4094b8e466c
[oweals/minetest.git] / build / android / src / main / java / net.minetest.minetest / MinetestTextEntry.java
1 package net.minetest.minetest;
2
3 import android.app.Activity;
4 import android.app.AlertDialog;
5 import android.content.DialogInterface;
6 import android.content.Intent;
7 import android.os.Bundle;
8 import android.text.InputType;
9 import android.view.KeyEvent;
10 import android.view.View;
11 import android.view.View.OnKeyListener;
12 import android.widget.EditText;
13
14 public class MinetestTextEntry extends Activity {
15         private final int MultiLineTextInput = 1;
16         private final int SingleLineTextInput = 2;
17         private final int SingleLinePasswordInput = 3;
18         public AlertDialog mTextInputDialog;
19         public EditText mTextInputWidget;
20
21         @Override
22         public void onCreate(Bundle savedInstanceState) {
23                 super.onCreate(savedInstanceState);
24                 Bundle b = getIntent().getExtras();
25                 String acceptButton = b.getString("EnterButton");
26                 String hint = b.getString("hint");
27                 String current = b.getString("current");
28                 int editType = b.getInt("editType");
29
30                 AlertDialog.Builder builder = new AlertDialog.Builder(this);
31                 mTextInputWidget = new EditText(this);
32                 mTextInputWidget.setHint(hint);
33                 mTextInputWidget.setText(current);
34                 mTextInputWidget.setMinWidth(300);
35                 if (editType == SingleLinePasswordInput) {
36                         mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT |
37                                         InputType.TYPE_TEXT_VARIATION_PASSWORD);
38                 } else {
39                         mTextInputWidget.setInputType(InputType.TYPE_CLASS_TEXT);
40                 }
41
42                 builder.setView(mTextInputWidget);
43
44                 if (editType == MultiLineTextInput) {
45                         builder.setPositiveButton(acceptButton, new DialogInterface.OnClickListener() {
46                                 public void onClick(DialogInterface dialog, int whichButton) {
47                                         pushResult(mTextInputWidget.getText().toString());
48                                 }
49                         });
50                 }
51
52                 builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
53                         public void onCancel(DialogInterface dialog) {
54                                 cancelDialog();
55                         }
56                 });
57
58                 mTextInputWidget.setOnKeyListener(new OnKeyListener() {
59                         @Override
60                         public boolean onKey(View view, int KeyCode, KeyEvent event) {
61                                 if (KeyCode == KeyEvent.KEYCODE_ENTER) {
62
63                                         pushResult(mTextInputWidget.getText().toString());
64                                         return true;
65                                 }
66                                 return false;
67                         }
68                 });
69
70                 mTextInputDialog = builder.create();
71                 mTextInputDialog.show();
72         }
73
74         public void pushResult(String text) {
75                 Intent resultData = new Intent();
76                 resultData.putExtra("text", text);
77                 setResult(Activity.RESULT_OK, resultData);
78                 mTextInputDialog.dismiss();
79                 finish();
80         }
81
82         public void cancelDialog() {
83                 setResult(Activity.RESULT_CANCELED);
84                 mTextInputDialog.dismiss();
85                 finish();
86         }
87 }