diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java
index f7a2493..9eafef7 100644
--- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java
+++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/dialogs/VariableDialog.java
@@ -1,16 +1,30 @@
package org.timecrafters.TimeCraftersConfigurationTool.dialogs;
+import android.content.Context;
import android.os.Bundle;
+import android.text.InputType;
+import android.util.Log;
+import android.view.ContextMenu;
+import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.EditText;
import android.widget.LinearLayout;
+import android.widget.PopupMenu;
+import android.widget.Switch;
import android.widget.TextView;
import org.timecrafters.TimeCraftersConfigurationTool.R;
public class VariableDialog extends Dialog {
+ final String TAG = "VariableDialog";
+ Button variableType;
+ EditText variableValue;
+ Switch variableValueBoolean;
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setCancelable(false);
@@ -20,6 +34,24 @@ public class VariableDialog extends Dialog {
((TextView)v.findViewById(R.id.dialogTitle)).setText("Add Variable");
LinearLayout view = v.findViewById(R.id.dialogContent);
view.addView(getLayoutInflater().inflate(R.layout.dialog_edit_variable, null));
+ variableType = view.findViewById(R.id.variableType);
+ variableType.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showVariableTypeMenu();
+ }
+ });
+ variableType.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
+ getActivity().getMenuInflater().inflate(R.menu.variable_type_menu, menu);
+ }
+ });
+
+ variableValue = v.findViewById(R.id.variableValue);
+ variableValueBoolean = v.findViewById(R.id.variableValueBoolean);
+
+ setVariableType("Double");
Button cancelButton = view.findViewById(R.id.cancel);
Button mutateButton = view.findViewById(R.id.mutate);
@@ -39,4 +71,91 @@ public class VariableDialog extends Dialog {
return v;
}
+
+ private void showVariableTypeMenu() {
+ Context context = new ContextThemeWrapper(getActivity(), R.style.PopUpMenu);
+ PopupMenu menu = new PopupMenu(context, variableType);
+ menu.getMenuInflater().inflate(R.menu.variable_type_menu, menu.getMenu());
+
+ menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.boolean_type: {
+ setVariableType("boolean");
+ return true;
+ }
+ case R.id.double_type: {
+ setVariableType("double");
+ return true;
+ }
+ case R.id.float_type: {
+ setVariableType("float");
+ return true;
+ }
+ case R.id.integer_type: {
+ setVariableType("integer");
+ return true;
+ }
+ case R.id.long_type: {
+ setVariableType("long");
+ return true;
+ }
+ case R.id.string_type: {
+ setVariableType("string");
+ return true;
+ }
+ }
+ return false;
+ }
+ });
+
+ menu.show();
+ }
+
+ private void setVariableType(String type) {
+ String _type = type.toLowerCase();
+ if (_type.equals("boolean")) {
+ variableType.setText("Boolean");
+ variableValue.setVisibility(View.GONE);
+ variableValueBoolean.setVisibility(View.VISIBLE);
+
+ } else if (_type.equals("double")) {
+ variableType.setText("Double");
+ variableValue.setVisibility(View.VISIBLE);
+ variableValueBoolean.setVisibility(View.GONE);
+
+ variableValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
+
+ } else if (_type.equals("float")) {
+ variableType.setText("Float");
+ variableValue.setVisibility(View.VISIBLE);
+ variableValueBoolean.setVisibility(View.GONE);
+
+ variableValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
+
+ } else if (_type.equals("long")){
+ variableType.setText("Long");
+ variableValue.setVisibility(View.VISIBLE);
+ variableValueBoolean.setVisibility(View.GONE);
+
+ variableValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
+
+ } else if (_type.equals("integer")) {
+ variableType.setText("Integer");
+ variableValue.setVisibility(View.VISIBLE);
+ variableValueBoolean.setVisibility(View.GONE);
+
+ variableValue.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
+
+ } else if (_type.equals("string")) {
+ variableType.setText("String");
+ variableValue.setVisibility(View.VISIBLE);
+ variableValueBoolean.setVisibility(View.GONE);
+
+ variableValue.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
+ } else {
+ Log.d(TAG, "setVariableType: unknown type \"" + type + "\"");
+ }
+ }
}
diff --git a/app/src/main/res/drawable/menu_item.xml b/app/src/main/res/drawable/menu_item.xml
new file mode 100644
index 0000000..a18511b
--- /dev/null
+++ b/app/src/main/res/drawable/menu_item.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_edit_variable.xml b/app/src/main/res/layout/dialog_edit_variable.xml
index cced27f..2b927d9 100644
--- a/app/src/main/res/layout/dialog_edit_variable.xml
+++ b/app/src/main/res/layout/dialog_edit_variable.xml
@@ -28,13 +28,11 @@
android:text="@string/variable_type"
android:textColor="@color/dialogLabel" />
-
+ android:text="Button" />
+
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index a6ea0b6..0bd2694 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -13,6 +13,7 @@
- @style/NavigationBar
- @style/TextInput
- @style/ToggleButton
+ - @style/PopUpMenu
+
+
diff --git a/build.gradle b/build.gradle
index da807a2..b58dc04 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath "com.android.tools.build:gradle:4.0.0"
+ classpath 'com.android.tools.build:gradle:4.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files