1bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/* 2bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Copyright (C) 2010 The Android Open Source Project 3bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 4bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * you may not use this file except in compliance with the License. 6bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * You may obtain a copy of the License at 7bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 8bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 9bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 10bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Unless required by applicable law or agreed to in writing, software 11bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * See the License for the specific language governing permissions and 14bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * limitations under the License. 15bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 16bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 17d8222dedaacae30fa03bee346ebf42ee75b39928Chris Banespackage android.support.v7.view; 18bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 1930837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.Menu; 2030837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuInflater; 2130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powellimport android.view.MenuItem; 22bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.View; 23bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 24bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/** 25bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Represents a contextual mode of the user interface. Action modes can be used to provide 2620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * alternative interaction modes and replace parts of the normal UI until finished. Examples of good 2720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * action modes include text selection and contextual actions. 2820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 299dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * <p class="note"><strong>Note:</strong> This class is included in the <a 309dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * href="{@docRoot}tools/extras/support-library.html">support library</a> for compatibility 319dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * with API level 7 and higher. If you're developing your app for API level 11 and higher 329dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * <em>only</em>, you should instead use the framework {@link android.view.ActionMode} class.</p> 339dcd2e58138ca4eb4b18f80b50e8979329e859d6Scott Main * 34bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * <div class="special reference"> 3520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 36bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * <h3>Developer Guides</h3> 3720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 3820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <p>For information about how to provide contextual actions with {@code 3920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * ActionMode}, read the <a href="{@docRoot}guide/topics/ui/menus.html#context-menu">Menus</a> 40bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * developer guide.</p> 4120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 42bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * </div> 43bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 44bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpublic abstract class ActionMode { 45bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 4620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns private Object mTag; 4720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns private boolean mTitleOptionalHint; 48bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 4920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 5020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set a tag object associated with this ActionMode. 5120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 5220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <p>Like the tag available to views, this allows applications to associate arbitrary data with 5320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * an ActionMode for later reference. 5420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 5520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param tag Tag to associate with this ActionMode 5620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #getTag() 5720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 5820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public void setTag(Object tag) { 5920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns mTag = tag; 6020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 61bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 6220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 6320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Retrieve the tag object associated with this ActionMode. 6420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 6520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <p>Like the tag available to views, this allows applications to associate arbitrary data with 6620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * an ActionMode for later reference. 6720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 6820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return Tag associated with this ActionMode 6920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setTag(Object) 7020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 7120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public Object getTag() { 7220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return mTag; 7320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 74bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 7520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 7620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set the title of the action mode. This method will have no visible effect if a custom view 7720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * has been set. 7820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 7920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param title Title string to set 8020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setTitle(int) 8120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setCustomView(View) 8220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 8320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void setTitle(CharSequence title); 84bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 8520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 8620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set the title of the action mode. This method will have no visible effect if a custom view 8720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * has been set. 8820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 8920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param resId Resource ID of a string to set as the title 9020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setTitle(CharSequence) 9120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setCustomView(View) 9220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 9320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void setTitle(int resId); 94bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 9520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 9620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set the subtitle of the action mode. This method will have no visible effect if a custom view 9720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * has been set. 9820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 9920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param subtitle Subtitle string to set 10020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setSubtitle(int) 10120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setCustomView(View) 10220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 10320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void setSubtitle(CharSequence subtitle); 104bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 10520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 10620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set the subtitle of the action mode. This method will have no visible effect if a custom view 10720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * has been set. 10820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 10920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param resId Resource ID of a string to set as the subtitle 11020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setSubtitle(CharSequence) 11120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setCustomView(View) 11220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 11320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void setSubtitle(int resId); 114bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 11520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 11620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set whether or not the title/subtitle display for this action mode is optional. 11720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 11820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <p>In many cases the supplied title for an action mode is merely meant to add context and is 11920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * not strictly required for the action mode to be useful. If the title is optional, the system 12020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * may choose to hide the title entirely rather than truncate it due to a lack of available 12120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * space.</p> 12220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 12320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <p>Note that this is merely a hint; the underlying implementation may choose to ignore this 12420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * setting under some circumstances.</p> 12520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 12620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param titleOptional true if the title only presents optional information. 12720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 12820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public void setTitleOptionalHint(boolean titleOptional) { 12920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns mTitleOptionalHint = titleOptional; 13020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 131bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 13220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 13320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return true if this action mode has been given a hint to consider the title/subtitle display 13420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * to be optional. 13520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setTitleOptionalHint(boolean) 13620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #isTitleOptional() 13720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 13820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean getTitleOptionalHint() { 13920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return mTitleOptionalHint; 14020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 141bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 14220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 14320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return true if this action mode considers the title and subtitle fields as optional. 14420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Optional titles may not be displayed to the user. 14520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 14620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean isTitleOptional() { 14720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return false; 14820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 149bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 15020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 15120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Set a custom view for this action mode. The custom view will take the place of the title and 15220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * subtitle. Useful for things like search boxes. 15320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 15420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param view Custom view to use in place of the title/subtitle. 15520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setTitle(CharSequence) 15620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @see #setSubtitle(CharSequence) 15720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 15820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void setCustomView(View view); 159bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 16020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 16120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Invalidate the action mode and refresh menu content. The mode's {@link ActionMode.Callback} 16220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * will have its {@link Callback#onPrepareActionMode(ActionMode, Menu)} method called. If it 16320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * returns true the menu will be scanned for updated content and any relevant changes will be 16420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * reflected to the user. 16520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 16620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void invalidate(); 167bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 16820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 16920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Finish and close this action mode. The action mode's {@link ActionMode.Callback} will have 17020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * its {@link Callback#onDestroyActionMode(ActionMode)} method called. 17120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 17220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract void finish(); 173bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 17420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 17520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Returns the menu of actions that this action mode presents. 17620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 17720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return The action mode's menu. 17820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 17920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract Menu getMenu(); 180bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 18120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 18220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Returns the current title of this action mode. 18320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 18420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return Title text 18520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 18620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract CharSequence getTitle(); 187bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 188bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell /** 18920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Returns the current subtitle of this action mode. 190bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 19120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return Subtitle text 192bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 19320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract CharSequence getSubtitle(); 194bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 195bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell /** 19620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Returns the current custom view for this action mode. 197bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 19820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return The current custom view 199bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 20020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract View getCustomView(); 201bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 202bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell /** 20320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Returns a {@link MenuInflater} with the ActionMode's context. 20420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 20520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public abstract MenuInflater getMenuInflater(); 20620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 20720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 20820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Returns whether the UI presenting this action mode can take focus or not. This is used by 20920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * internal components within the framework that would otherwise present an action mode UI that 21020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * requires focus, such as an EditText as a custom view. 211bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 21220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return true if the UI used to show this action mode can take focus 21320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @hide Internal use only 214bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 21520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean isUiFocusable() { 21620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return true; 21720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 218bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 219bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell /** 22030837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell * Callback interface for action modes. Supplied to 22130837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell * {@link android.support.v7.app.ActionBarActivity#startSupportActionMode(Callback)} 22230837f1095c803f332f4a1c3f0917c8afdd50156Adam Powell * a Callback configures and handles events raised by a user's interaction with an action mode. 22320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 22420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <p>An action mode's lifecycle is as follows: 225bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 22620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <ul><li>{@link Callback#onCreateActionMode(ActionMode, 22720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Menu)} once on initial creation</li> 22820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 22920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <li>{@link Callback#onPrepareActionMode(ActionMode, Menu)} 23020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * after creation and any time the {@link ActionMode} is invalidated</li> 23120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 23220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <li>{@link 23320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Callback#onActionItemClicked(ActionMode, MenuItem)} any time a contextual action button is 23420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * clicked</li> 23520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 23620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * <li>{@link Callback#onDestroyActionMode(ActionMode)} when the action mode is 23720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * closed</li></ul> 238bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 23920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public interface Callback { 24020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 24120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 24220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Called when action mode is first created. The menu supplied will be used to generate 24320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * action buttons for the action mode. 24420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 24520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param mode ActionMode being created 24620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param menu Menu used to populate action buttons 24720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return true if the action mode should be created, false if entering this mode should be 24820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * aborted. 24920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 25020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean onCreateActionMode(ActionMode mode, Menu menu); 25120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 25220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 25320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Called to refresh an action mode's action menu whenever it is invalidated. 25420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 25520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param mode ActionMode being prepared 25620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param menu Menu used to populate action buttons 25720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return true if the menu or action mode was updated, false otherwise. 25820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 25920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean onPrepareActionMode(ActionMode mode, Menu menu); 26020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 26120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 26220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Called to report a user click on an action button. 26320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 26420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param mode The current ActionMode 26520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param item The item that was clicked 26620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @return true if this callback handled the event, false if the standard MenuItem 26720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * invocation should continue. 26820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 26920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean onActionItemClicked(ActionMode mode, MenuItem item); 27020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 27120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns /** 27220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Called when an action mode is about to be exited and destroyed. 27320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * 27420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * @param mode The current ActionMode being destroyed 27520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns */ 27620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public void onDestroyActionMode(ActionMode mode); 27720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 278ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani} 279