Added dropdown menu to variable editing dialog

This commit is contained in:
2020-08-20 08:28:17 -05:00
parent 2a64811947
commit 93315a3266
6 changed files with 162 additions and 5 deletions

View File

@@ -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 + "\"");
}
}
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/buttonDisabled" android:state_enabled="false" />
<item android:drawable="@color/colorSecondary" android:state_focused="true" />
<item android:drawable="@color/colorTertiary" android:state_pressed="true" />
<item android:drawable="@color/colorSecondary" android:state_hovered="true" />
<item android:drawable="@color/colorPrimary" />
</selector>

View File

@@ -28,13 +28,11 @@
android:text="@string/variable_type"
android:textColor="@color/dialogLabel" />
<EditText
<Button
android:id="@+id/variableType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/variable_type"
android:inputType="textPersonName" />
android:text="Button" />
<TextView
android:id="@+id/textView7"

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/boolean_type"
android:title="Boolean" />
<item
android:id="@+id/double_type"
android:title="Double" />
<item
android:id="@+id/float_type"
android:title="Float" />
<item
android:id="@+id/integer_type"
android:title="Integer" />
<item
android:id="@+id/long_type"
android:title="Long" />
<item
android:id="@+id/string_type"
android:title="String" />
</menu>

View File

@@ -13,6 +13,7 @@
<item name="bottomNavigationStyle">@style/NavigationBar</item>
<item name="editTextStyle">@style/TextInput</item>
<item name="switchStyle">@style/ToggleButton</item>
<item name="popupMenuStyle">@style/PopUpMenu</item>
</style>
<style name="NavigationBar" parent="Widget.Design.BottomNavigationView">
@@ -60,6 +61,15 @@
<item name="android:textColorHint">#bbbbbb</item>
</style>
<style name="PopUpMenu" parent="Widget.AppCompat.PopupMenu">
<item name="android:background">@drawable/menu_item</item>
<item name="rippleColor">@color/colorAccent</item>
<item name="android:textColor">@color/buttonContent</item>
<item name="android:fontFamily">@font/dejavusans_condensed_fontfamily</item>
<item name="android:textStyle">normal</item>
<item name="android:textAllCaps">false</item>
</style>
<!-- <style name="TextView" parent="Widget.AppCompat.TextView">-->
<!-- <item name="android:background">@drawable/button</item>-->
<!-- <item name="android:textColor">@color/buttonContent</item>-->

View File

@@ -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