package com.hawkbrowser.shell; import com.hawkbrowser.R; import android.content.Context; import android.content.res.Resources; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.View.OnFocusChangeListener; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; public class AddressBar { private EventListener mListener; private Context mContext; private EditText mAddressEdit; private View mGoView; private View mClearView; public interface EventListener { void onGo(String url); } public AddressBar(Context ctx, ViewGroup view) { mContext = ctx; mAddressEdit = (EditText) view.findViewById(R.id.addressbar_edit); mGoView = view.findViewById(R.id.addressbar_gobtn); mClearView = view.findViewById(R.id.addressbar_clearbtn); init(); } public AddressBar(Context ctx, ViewGroup view, EventListener listener) { this(ctx, view); mListener = listener; } public void setEventListener(EventListener listener) { mListener = listener; } public void setTitle(String title) { mAddressEdit.setText(title); } private void init() { mGoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url = mAddressEdit.getText().toString(); if(url.isEmpty()) { Resources rs = mContext.getResources(); url = rs.getString(R.string.homepageurl); } if(!url.startsWith("http")) { url = "http://" + url; } if(null != mListener) { mListener.onGo(url); } } }); mClearView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mAddressEdit.setText(""); } }); mAddressEdit.setOnEditorActionListener(new OnEditorActionListener() { // on ime go @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ((actionId != EditorInfo.IME_ACTION_GO) && (event == null || event.getKeyCode() != KeyEvent.KEYCODE_ENTER || event.getKeyCode() != KeyEvent.ACTION_DOWN)) { return false; } mListener.onGo(mAddressEdit.getText().toString()); mAddressEdit.clearFocus(); setKeyboardVisibilityForUrl(false); return true; } }); mAddressEdit.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { setKeyboardVisibilityForUrl(hasFocus); } }); } private void setKeyboardVisibilityForUrl(boolean visible) { InputMethodManager imm = (InputMethodManager) mContext.getSystemService( Context.INPUT_METHOD_SERVICE); if (visible) { imm.showSoftInput(mAddressEdit, InputMethodManager.SHOW_IMPLICIT); } else { imm.hideSoftInputFromWindow(mAddressEdit.getWindowToken(), 0); } } }