package com.jens.automation2; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.InputType; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Spinner; import android.widget.Toast; import androidx.annotation.Nullable; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; public class ActivityManageActionSendBroadcast extends Activity { EditText etBroadcastToSend; Button bBroadcastSendShowSuggestions, bSaveSendBroadcast, bAddIntentPair; ListView lvIntentPairs; EditText etParameterName, etParameterValue; Spinner spinnerParameterType; ArrayAdapter intentTypeSpinnerAdapter, intentPairAdapter; private static final String[] supportedIntentTypes = { "boolean", "byte", "char", "double", "float", "int", "long", "short", "String", "Uri" }; private ArrayList intentPairList = new ArrayList<>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_manage_action_send_broadcast); etBroadcastToSend = (EditText)findViewById(R.id.etBroadcastToSend); bBroadcastSendShowSuggestions = (Button)findViewById(R.id.bBroadcastSendShowSuggestions); bSaveSendBroadcast = (Button)findViewById(R.id.bSaveSendBroadcast); bAddIntentPair = (Button)findViewById(R.id.bAddIntentPair); lvIntentPairs = (ListView) findViewById(R.id.lvIntentPairs); etParameterName = (EditText) findViewById(R.id.etParameterName); etParameterValue = (EditText) findViewById(R.id.etParameterValue); spinnerParameterType = (Spinner) findViewById(R.id.spinnerParameterType); intentTypeSpinnerAdapter = new ArrayAdapter(this, R.layout.text_view_for_poi_listview_mediumtextsize, ActivityManageActionSendBroadcast.supportedIntentTypes); spinnerParameterType.setAdapter(intentTypeSpinnerAdapter); intentTypeSpinnerAdapter.notifyDataSetChanged(); bSaveSendBroadcast.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(checkInput()) { Intent answer = new Intent(); answer.putExtra(ActivityManageRule.intentNameActionParameter2, etBroadcastToSend.getText().toString()); setResult(RESULT_OK, answer); finish(); } } }); bBroadcastSendShowSuggestions.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(ActivityManageActionSendBroadcast.this); builder.setTitle(getResources().getString(R.string.selectBroadcast)); builder.setItems(ActivityManageTriggerBroadcast.broadcastSuggestions, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int which) { etBroadcastToSend.setText(ActivityManageTriggerBroadcast.broadcastSuggestions[which]); } }); builder.create().show(); } }); Intent input = getIntent(); if(input.hasExtra(ActivityManageRule.intentNameActionParameter2)) { String param2 = input.getStringExtra(ActivityManageRule.intentNameActionParameter2); if(!param2.contains(Action.actionParameter2Split)) etBroadcastToSend.setText(input.getStringExtra(ActivityManageRule.intentNameActionParameter2)); else { String[] param2Parts = param2.split(Action.actionParameter2Split); etBroadcastToSend.setText(param2Parts[0]); String[] params = param2Parts[1].split(";"); if(startIndex > -1 && params.length > startIndex) { intentPairList.clear(); for(int i=startIndex; i arg0, View arg1, int arg2, long arg3) { getIntentPairDialog(arg2).show(); return false; } }); spinnerParameterType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) { if(supportedIntentTypes[arg2].equals("double") | supportedIntentTypes[arg2].equals("float") | supportedIntentTypes[arg2].equals("int") | supportedIntentTypes[arg2].equals("long") | supportedIntentTypes[arg2].equals("short")) ActivityManageActionSendBroadcast.this.etParameterValue.setInputType(InputType.TYPE_CLASS_NUMBER); else ActivityManageActionSendBroadcast.this.etParameterValue.setInputType(InputType.TYPE_CLASS_TEXT); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }); } boolean checkInput() { String broadcastToSend = etBroadcastToSend.getText().toString(); if(StringUtils.isEmpty(broadcastToSend)) { Toast.makeText(ActivityManageActionSendBroadcast.this, getResources().getString(R.string.enterBroadcast), Toast.LENGTH_SHORT).show(); return false; } return true; } private void updateIntentPairList() { if(lvIntentPairs.getAdapter() == null) lvIntentPairs.setAdapter(intentPairAdapter); intentPairAdapter.notifyDataSetChanged(); } private AlertDialog getIntentPairDialog(final int itemPosition) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ActivityManageActionSendBroadcast.this); alertDialogBuilder.setTitle(getResources().getString(R.string.whatToDoWithIntentPair)); alertDialogBuilder.setItems(new String[]{getResources().getString(R.string.delete)}, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Only 1 choice at the moment, no need to check ActivityManageActionSendBroadcast.this.intentPairList.remove(itemPosition); updateIntentPairList(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); return alertDialog; } }