package com.duckduckgo.mobile.android.views.autocomplete;
import android.content.Context;
import android.support.v7.view.ActionMode;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewParent;
import android.view.inputmethod.EditorInfo;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.Toast;
import com.squareup.otto.Subscribe;
public class DDGAutoCompleteTextView extends EditText implements View.OnLongClickListener {
private android.view.ActionMode actionMode;
private android.view.ActionMode.Callback actionModeCallback;
public DDGAutoCompleteTextView(Context context) {
super(context);
//this.setOnLongClickListener(this);
}
public DDGAutoCompleteTextView(Context context, AttributeSet attrs) {
super(context, attrs);
//this.setOnLongClickListener(this);
}
public DDGAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
//this.setOnLongClickListener(this);
}
private BackButtonPressedEventListener backButtonPressedEventListener;
public void setOnBackButtonPressedEventListener(BackButtonPressedEventListener eventListener) {
backButtonPressedEventListener = eventListener;
}
public String getTrimmedText(){
return getText().toString().trim();
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
backButtonPressedEventListener.onBackButtonPressed();
return false;
}
if(keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP){
super.onEditorAction(EditorInfo.IME_ACTION_SEARCH);
return true;
}
return super.dispatchKeyEvent(event);
}
public void addBang() {
if(isCursorAtEnd() && !lastCharIsSpaceOrNull()){
Log.e("aaa", "add bang 1");
getText().insert(getSelectionStart(), " !");
}else{
Log.e("aaa", "add bang 2");
getText().replace(getSelectionStart(), getSelectionEnd(), "!");
//setSelection(getSelectionStart());//fix 1
setSelection(getSelectionEnd());
}
}
@Override
public boolean onLongClick(View v) {
return true;
}
private boolean lastCharIsSpaceOrNull(){
return !hasText() || getText().charAt(getText().length() - 1) == ' ';
}
private boolean hasText() {
return getText().length() > 0;
}
private boolean isCursorAtEnd() {
return getSelectionStart() == getText().length();
}
public void addTextWithTrailingSpace(String phrase) {
setText(phrase.trim() + " ");
setCursorAtEnd();
}
private void setCursorAtEnd() {
setSelection(getText().length());
}
public void pasteQuery(String suggestion) {
releaseFocus();
setText(suggestion);
append(" ");
obtainFocus();
setCursorAtEnd();
}
private void releaseFocus() {
setFocusable(false);
setFocusableInTouchMode(false);
}
private void obtainFocus() {
setFocusable(true);
setFocusableInTouchMode(true);
this.requestFocus();
}
}