package org.wordpress.android.widgets; import android.content.Context; import android.support.v7.widget.AppCompatEditText; import android.util.AttributeSet; /** * WPEditText which notifies when text is cut, copied, or pasted. */ public class ContextMenuEditText extends AppCompatEditText { public interface OnContextMenuListener { void onCut(); void onCopy(); void onPaste(); } private OnContextMenuListener mOnContextMenuListener; /** * Set a listener to interface with activity or fragment. * @param listener object listening for cut, copy, and paste events */ public void setOnContextMenuListener(OnContextMenuListener listener) { mOnContextMenuListener = listener; } public ContextMenuEditText(Context context) { super(context); } public ContextMenuEditText(Context context, AttributeSet attrs) { super(context, attrs); } public ContextMenuEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } /** * ContextMenu used to cut, copy, or paste which overwrites the consuming method. */ @Override public boolean onTextContextMenuItem(int id) { boolean consumed = super.onTextContextMenuItem(id); switch (id) { case android.R.id.cut: onCut(); break; case android.R.id.copy: onCopy(); break; case android.R.id.paste: onPaste(); break; } return consumed; } /** * Text cut from WPEditText. */ public void onCut(){ if (mOnContextMenuListener != null) { mOnContextMenuListener.onCut(); } } /** * Text copied from WPEditText. */ public void onCopy(){ if (mOnContextMenuListener != null) { mOnContextMenuListener.onCopy(); } } /** * Text pasted into WPEditText. */ public void onPaste(){ if (mOnContextMenuListener != null) { mOnContextMenuListener.onPaste(); } } }