diff --git a/mobile/res/layout/activity_main.xml b/mobile/res/layout/activity_main.xml
index 2d95b955..6aee890b 100644
--- a/mobile/res/layout/activity_main.xml
+++ b/mobile/res/layout/activity_main.xml
@@ -52,8 +52,18 @@
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
+ android:imeActionLabel="@string/debug_run"
android:imeOptions="actionGo"
- android:inputType="textNoSuggestions"/>
+ android:inputType="textMultiLine|textNoSuggestions"
+ android:lines="1"/>
+
+
diff --git a/mobile/res/values/strings.xml b/mobile/res/values/strings.xml
index 0c93c513..38a9ab19 100644
--- a/mobile/res/values/strings.xml
+++ b/mobile/res/values/strings.xml
@@ -3,6 +3,7 @@
IITC Mobile
Toggle map visibility
+ Run
IITC Mobile Settings
IITC Plugins
Share using…
diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java
index b729c581..287d7bbf 100644
--- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java
+++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java
@@ -18,20 +18,27 @@ import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.InputMethodManager;
import android.webkit.CookieManager;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SearchView;
+import android.widget.TextView;
import android.widget.Toast;
import com.cradle.iitc_mobile.IITC_NavigationHelper.Pane;
+import org.json.JSONException;
+import org.json.JSONObject;
+
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -89,6 +96,20 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis
mViewDebug = findViewById(R.id.viewDebug);
mBtnToggleMap = (ImageButton) findViewById(R.id.btnToggleMapVisibility);
mEditCommand = (EditText) findViewById(R.id.editCommand);
+ mEditCommand.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (EditorInfo.IME_ACTION_GO == actionId) {
+ onBtnRunCodeClick(v);
+
+ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
+
+ return true;
+ }
+ return false;
+ }
+ });
mLvDebug.setAdapter(new IITC_LogAdapter(this));
@@ -654,6 +675,26 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis
}
}
+ public void onBtnRunCodeClick(View v) {
+ String code = mEditCommand.getText().toString();
+ JSONObject obj = new JSONObject();
+ try {
+ obj.put("code", code);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ return;
+ }
+
+ // throwing an exception will be reported by WebView
+ String js = "(function(obj){var result;" +
+ "console.log('>>> ' + obj.code);" +
+ "try{result=eval(obj.code);}catch(e){if(e.stack) console.error(e.stack);throw e;}" +
+ "if(result!==undefined) console.log(result.toString());" +
+ "})(" + obj.toString() + ");";
+
+ mIitcWebView.loadJS(js);
+ }
+
/**
* onClick handler for R.id.btnToggleMapVisibility, assigned in activity_main.xml
*/