mirror of
https://github.com/TimeCrafters/TimeCraftersConfigurationTool.git
synced 2025-12-15 05:02:33 +00:00
Added dropdown menu to variable editing dialog
This commit is contained in:
@@ -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 + "\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
app/src/main/res/drawable/menu_item.xml
Normal file
8
app/src/main/res/drawable/menu_item.xml
Normal 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>
|
||||
@@ -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"
|
||||
|
||||
22
app/src/main/res/menu/variable_type_menu.xml
Normal file
22
app/src/main/res/menu/variable_type_menu.xml
Normal 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>
|
||||
@@ -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>-->
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user