package org.wikipedia.history; import android.support.annotation.Nullable; import android.support.v4.view.MenuItemCompat; import android.support.v7.view.ActionMode; import android.support.v7.widget.SearchView; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import org.wikipedia.R; import org.wikipedia.util.DeviceUtil; public abstract class SearchActionModeCallback implements ActionMode.Callback { public static final String ACTION_MODE_TAG = "searchActionMode"; private SearchView searchView; private ImageView searchMagIcon; public static boolean is(@Nullable ActionMode mode) { return mode != null && ACTION_MODE_TAG.equals(mode.getTag()); } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { mode.setTag(ACTION_MODE_TAG); mode.getMenuInflater().inflate(R.menu.menu_action_mode_search, menu); searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search_view)); searchMagIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); searchMagIcon.setImageDrawable(null); searchView.setIconifiedByDefault(false); searchView.setQueryHint(getSearchHintString()); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(String s) { onQueryChange(s); return true; } }); return true; } protected abstract String getSearchHintString(); protected abstract void onQueryChange(String s); @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { searchView.requestFocus(); searchMagIcon.setVisibility(View.GONE); DeviceUtil.showSoftKeyboard(searchView); return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem menuItem) { return false; } @Override public void onDestroyActionMode(ActionMode mode) { if (searchView != null) { searchView.setOnQueryTextListener(null); } } }