mirror of
https://github.com/TimeCrafters/TimeCraftersConfigurationTool.git
synced 2025-12-16 13:32:35 +00:00
Added dropdown menu to variable editing dialog
This commit is contained in:
@@ -1,16 +1,30 @@
|
|||||||
package org.timecrafters.TimeCraftersConfigurationTool.dialogs;
|
package org.timecrafters.TimeCraftersConfigurationTool.dialogs;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
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.LayoutInflater;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.PopupMenu;
|
||||||
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.timecrafters.TimeCraftersConfigurationTool.R;
|
import org.timecrafters.TimeCraftersConfigurationTool.R;
|
||||||
|
|
||||||
public class VariableDialog extends Dialog {
|
public class VariableDialog extends Dialog {
|
||||||
|
final String TAG = "VariableDialog";
|
||||||
|
Button variableType;
|
||||||
|
EditText variableValue;
|
||||||
|
Switch variableValueBoolean;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
setCancelable(false);
|
setCancelable(false);
|
||||||
@@ -20,6 +34,24 @@ public class VariableDialog extends Dialog {
|
|||||||
((TextView)v.findViewById(R.id.dialogTitle)).setText("Add Variable");
|
((TextView)v.findViewById(R.id.dialogTitle)).setText("Add Variable");
|
||||||
LinearLayout view = v.findViewById(R.id.dialogContent);
|
LinearLayout view = v.findViewById(R.id.dialogContent);
|
||||||
view.addView(getLayoutInflater().inflate(R.layout.dialog_edit_variable, null));
|
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 cancelButton = view.findViewById(R.id.cancel);
|
||||||
Button mutateButton = view.findViewById(R.id.mutate);
|
Button mutateButton = view.findViewById(R.id.mutate);
|
||||||
@@ -39,4 +71,91 @@ public class VariableDialog extends Dialog {
|
|||||||
|
|
||||||
return v;
|
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:text="@string/variable_type"
|
||||||
android:textColor="@color/dialogLabel" />
|
android:textColor="@color/dialogLabel" />
|
||||||
|
|
||||||
<EditText
|
<Button
|
||||||
android:id="@+id/variableType"
|
android:id="@+id/variableType"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ems="10"
|
android:text="Button" />
|
||||||
android:hint="@string/variable_type"
|
|
||||||
android:inputType="textPersonName" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/textView7"
|
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="bottomNavigationStyle">@style/NavigationBar</item>
|
||||||
<item name="editTextStyle">@style/TextInput</item>
|
<item name="editTextStyle">@style/TextInput</item>
|
||||||
<item name="switchStyle">@style/ToggleButton</item>
|
<item name="switchStyle">@style/ToggleButton</item>
|
||||||
|
<item name="popupMenuStyle">@style/PopUpMenu</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="NavigationBar" parent="Widget.Design.BottomNavigationView">
|
<style name="NavigationBar" parent="Widget.Design.BottomNavigationView">
|
||||||
@@ -60,6 +61,15 @@
|
|||||||
<item name="android:textColorHint">#bbbbbb</item>
|
<item name="android:textColorHint">#bbbbbb</item>
|
||||||
</style>
|
</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">-->
|
<!-- <style name="TextView" parent="Widget.AppCompat.TextView">-->
|
||||||
<!-- <item name="android:background">@drawable/button</item>-->
|
<!-- <item name="android:background">@drawable/button</item>-->
|
||||||
<!-- <item name="android:textColor">@color/buttonContent</item>-->
|
<!-- <item name="android:textColor">@color/buttonContent</item>-->
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
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
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|||||||
Reference in New Issue
Block a user