package com.github.andlyticsproject; import android.support.v4.app.DialogFragment; import android.graphics.Color; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.EditText; import android.widget.TextView; public class ReplyDialog extends DialogFragment { public static final int DEVELOPER_REPLY_MAX_CHARACTERS = 350; static final String ARG_REPLY = "reply"; static final String ARG_UNIQUE_ID = "uniqueId"; private String commentUniqueId; public ReplyDialog() { setStyle(DialogFragment.STYLE_NORMAL, R.style.Dialog); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.comment_reply_dialog, container); final EditText replyText = (EditText) view .findViewById(R.id.comment_reply_dialog_text); final TextView comment_reply_dialog_counter = (TextView) view .findViewById(R.id.comment_reply_dialog_counter); final TextView comment_reply_dialog_max_characters = (TextView) view .findViewById(R.id.comment_reply_dialog_max_characters); final View okButton = view .findViewById(R.id.comment_reply_dialog_positive_button); // show keyboard replyText.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { showKeyboard(); } } }); // live count comment reply characters replyText.addTextChangedListener(new TextWatcher() { public void beforeTextChanged(CharSequence reply, int start, int count, int after) { } public void onTextChanged(CharSequence reply, int start, int before, int count) { // set counter view to current comment length comment_reply_dialog_counter.setText(String.valueOf(reply .length())); // enable/disable button and add color-coding if (ReplyDialog.DEVELOPER_REPLY_MAX_CHARACTERS < reply .length()) { okButton.setEnabled(false); comment_reply_dialog_counter.setTextColor(Color.RED); comment_reply_dialog_max_characters .setTextColor(Color.RED); } else if (1 > reply.length()) { okButton.setEnabled(false); } else { okButton.setEnabled(true); comment_reply_dialog_counter .setTextColor(getResources().getColor( R.color.greyText)); comment_reply_dialog_max_characters .setTextColor(getResources().getColor( R.color.greyText)); } } public void afterTextChanged(Editable e) { } }); Bundle args = getArguments(); if (args.containsKey(ARG_UNIQUE_ID)) { commentUniqueId = args.getString(ARG_UNIQUE_ID); } if (args.containsKey(ARG_REPLY)) { replyText.setText(args.getString(ARG_REPLY)); } view.findViewById(R.id.comment_reply_dialog_negative_button) .setOnClickListener(new OnClickListener() { public void onClick(View v) { dismiss(); } }); view.findViewById(R.id.comment_reply_dialog_positive_button) .setOnClickListener(new OnClickListener() { public void onClick(View v) { String reply = replyText.getText().toString(); CommentReplier activity = (CommentReplier) getActivity(); if (activity != null) { activity.replyToComment(commentUniqueId, reply); } dismiss(); } }); replyText.requestFocus(); showKeyboard(); return view; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { getDialog().getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); super.onViewCreated(view, savedInstanceState); } private void showKeyboard() { getDialog() .getWindow() .setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); } }