package com.airlocksoftware.hackernews.view; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import com.airlocksoftware.hackernews.R; import com.airlocksoftware.hackernews.activity.SearchActivity; import com.airlocksoftware.hackernews.interfaces.RestartableActivity; import com.airlocksoftware.holo.image.IconView; import com.airlocksoftware.holo.type.FontEdit; /** Displays search box in the Overflow menu, and starts SearchActivity whenever a search is performed. **/ public class SearchOverflow extends RelativeLayout { Activity mActivity; FontEdit mSearchBox; IconView mSearchBtn; private static final int LAYOUT = R.layout.vw_overflow_searchbox; private OnClickListener mSearchBtnListener = new OnClickListener() { @Override public void onClick(View v) { performSearch(); } }; private OnEditorActionListener mSearchKeyboardListener = new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { performSearch(); return true; } else return false; } }; public SearchOverflow(Activity activity, RestartableActivity restart) { super(activity, null); mActivity = activity; // inflate layout activity.getLayoutInflater() .inflate(LAYOUT, this); // set layout params LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); setLayoutParams(params); // find views mSearchBox = (FontEdit) findViewById(R.id.edit_search); mSearchBox.setOnEditorActionListener(mSearchKeyboardListener); mSearchBtn = (IconView) findViewById(R.id.icv_search); mSearchBtn.setOnClickListener(mSearchBtnListener); } private void performSearch() { // hide keyboard InputMethodManager inputManager = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(this.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); Intent intent = new Intent(mActivity, SearchActivity.class); intent.putExtra(SearchActivity.QUERY, mSearchBox.getText() .toString()); mActivity.startActivity(intent); } }