package treehou.se.habit.ui.widgets.factories; import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; import android.support.v7.app.AlertDialog; import android.text.InputType; import android.view.View; import android.widget.EditText; import se.treehou.ng.ohcommunicator.connector.models.OHItem; import se.treehou.ng.ohcommunicator.connector.models.OHLinkedPage; import se.treehou.ng.ohcommunicator.connector.models.OHWidget; import se.treehou.ng.ohcommunicator.services.Connector; import se.treehou.ng.ohcommunicator.services.IServerHandler; import treehou.se.habit.R; import treehou.se.habit.ui.widgets.WidgetFactory; public class TextWidgetFactory implements IWidgetFactory { @Override public WidgetFactory.IWidgetHolder build(final WidgetFactory widgetFactory, OHLinkedPage page, final OHWidget widget, final OHWidget parent) { return new TextWidgetHolder(widget, parent, widgetFactory); } private static class TextWidgetHolder implements WidgetFactory.IWidgetHolder { private static final String TAG = "TextWidgetHolder"; private BaseWidgetFactory.BaseWidgetHolder baseHolder; private WidgetFactory factory; TextWidgetHolder(OHWidget widget, OHWidget parent, WidgetFactory factory) { this.factory = factory; baseHolder = new BaseWidgetFactory.BaseWidgetHolder.Builder(factory) .setWidget(widget) .setParent(parent) .setFlat(false) .build(); update(widget); } @Override public View getView() { return baseHolder.getView(); } @Override public void update(final OHWidget widget) { if (widget == null) { return; } final OHItem item = widget.getItem(); final Context context = factory.getContext(); if(item != null && item.getType().equals(OHItem.TYPE_STRING) && item.getType().equals(OHItem.TYPE_STRING)){ baseHolder.getView().setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(context.getString(R.string.send_text_command)); View inputView = factory.getInflater().inflate(R.layout.dialog_input_text, null); final EditText input = (EditText) inputView.findViewById(R.id.txt_command); input.setText(item.getState()); if(item.getType().equals(OHItem.TYPE_STRING)) { input.setInputType(InputType.TYPE_CLASS_TEXT); } else if (item.getType().equals(OHItem.TYPE_NUMBER)) { input.setInputType(InputType.TYPE_CLASS_NUMBER); } builder.setView(inputView); IServerHandler serverHandler = new Connector.ServerHandler(factory.getServer(), factory.getContext()); builder.setPositiveButton(context.getString(R.string.ok), (dialog, which) -> { String text = input.getText().toString(); serverHandler.sendCommand(widget.getItem().getName(), text); }); builder.setNegativeButton(context.getString(R.string.cancel), (dialog, which) -> dialog.cancel()); builder.show(); return false; } }); } baseHolder.update(widget); } } }