Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e346367 authored by Adam Powell's avatar Adam Powell
Browse files

Moved context modes into view, renamed to action modes

ContextualMode renamed to ActionMode. Adds a reference to the action
bar and reduces confusion around things named "Context".

Change-Id: Ia5098b1d0799a0ece0810c34e6696eda039fb005
parent 46873730
Loading
Loading
Loading
Loading
+283 −212
Original line number Original line Diff line number Diff line
@@ -21241,6 +21241,19 @@
 visibility="protected"
 visibility="protected"
>
>
</method>
</method>
<method name="onStartActionMode"
 return="android.view.ActionMode"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
<method name="onStop"
<method name="onStop"
 return="void"
 return="void"
 abstract="false"
 abstract="false"
@@ -21900,6 +21913,19 @@
<parameter name="requestCode" type="int">
<parameter name="requestCode" type="int">
</parameter>
</parameter>
</method>
</method>
<method name="startContextMode"
 return="android.view.ActionMode"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
<method name="startIntentSenderForResult"
<method name="startIntentSenderForResult"
 return="void"
 return="void"
 abstract="false"
 abstract="false"
@@ -24546,194 +24572,6 @@
>
>
</method>
</method>
</class>
</class>
<class name="ContextualMode"
 extends="java.lang.Object"
 abstract="true"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<constructor name="ContextualMode"
 type="android.app.ContextualMode"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</constructor>
<method name="finish"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getCustomView"
 return="android.view.View"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getMenu"
 return="android.view.Menu"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getSubtitle"
 return="java.lang.CharSequence"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getTitle"
 return="java.lang.CharSequence"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="invalidate"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="setCustomView"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="view" type="android.view.View">
</parameter>
</method>
<method name="setSubtitle"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="subtitle" type="java.lang.CharSequence">
</parameter>
</method>
<method name="setTitle"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="title" type="java.lang.CharSequence">
</parameter>
</method>
</class>
<interface name="ContextualMode.Callback"
 abstract="true"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<method name="onContextualItemClicked"
 return="boolean"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.app.ContextualMode">
</parameter>
<parameter name="item" type="android.view.MenuItem">
</parameter>
</method>
<method name="onCreateContextualMode"
 return="boolean"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.app.ContextualMode">
</parameter>
<parameter name="menu" type="android.view.Menu">
</parameter>
</method>
<method name="onDestroyContextualMode"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.app.ContextualMode">
</parameter>
</method>
<method name="onPrepareContextualMode"
 return="boolean"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.app.ContextualMode">
</parameter>
<parameter name="menu" type="android.view.Menu">
</parameter>
</method>
</interface>
<class name="DatePickerDialog"
<class name="DatePickerDialog"
 extends="android.app.AlertDialog"
 extends="android.app.AlertDialog"
 abstract="false"
 abstract="false"
@@ -25466,6 +25304,19 @@
 visibility="protected"
 visibility="protected"
>
>
</method>
</method>
<method name="onStartActionMode"
 return="android.view.ActionMode"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
<method name="onStop"
<method name="onStop"
 return="void"
 return="void"
 abstract="false"
 abstract="false"
@@ -40357,17 +40208,6 @@
 visibility="public"
 visibility="public"
>
>
</method>
</method>
<method name="finishContextualMode"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getApplicationContext"
<method name="getApplicationContext"
 return="android.content.Context"
 return="android.content.Context"
 abstract="true"
 abstract="true"
@@ -41082,19 +40922,6 @@
<parameter name="intent" type="android.content.Intent">
<parameter name="intent" type="android.content.Intent">
</parameter>
</parameter>
</method>
</method>
<method name="startContextualMode"
 return="android.app.ContextualMode"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="callback" type="android.app.ContextualMode.Callback">
</parameter>
</method>
<method name="startInstrumentation"
<method name="startInstrumentation"
 return="boolean"
 return="boolean"
 abstract="true"
 abstract="true"
@@ -176384,6 +176211,194 @@
>
>
</field>
</field>
</class>
</class>
<class name="ActionMode"
 extends="java.lang.Object"
 abstract="true"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<constructor name="ActionMode"
 type="android.view.ActionMode"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</constructor>
<method name="finish"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getCustomView"
 return="android.view.View"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getMenu"
 return="android.view.Menu"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getSubtitle"
 return="java.lang.CharSequence"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getTitle"
 return="java.lang.CharSequence"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="invalidate"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="setCustomView"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="view" type="android.view.View">
</parameter>
</method>
<method name="setSubtitle"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="subtitle" type="java.lang.CharSequence">
</parameter>
</method>
<method name="setTitle"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="title" type="java.lang.CharSequence">
</parameter>
</method>
</class>
<interface name="ActionMode.Callback"
 abstract="true"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<method name="onActionItemClicked"
 return="boolean"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.view.ActionMode">
</parameter>
<parameter name="item" type="android.view.MenuItem">
</parameter>
</method>
<method name="onCreateActionMode"
 return="boolean"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.view.ActionMode">
</parameter>
<parameter name="menu" type="android.view.Menu">
</parameter>
</method>
<method name="onDestroyActionMode"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.view.ActionMode">
</parameter>
</method>
<method name="onPrepareActionMode"
 return="boolean"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="mode" type="android.view.ActionMode">
</parameter>
<parameter name="menu" type="android.view.Menu">
</parameter>
</method>
</interface>
<interface name="ContextMenu"
<interface name="ContextMenu"
 abstract="true"
 abstract="true"
 static="false"
 static="false"
@@ -188811,6 +188826,19 @@
 visibility="public"
 visibility="public"
>
>
</method>
</method>
<method name="startActionMode"
 return="android.view.ActionMode"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
<method name="startAnimation"
<method name="startAnimation"
 return="void"
 return="void"
 abstract="false"
 abstract="false"
@@ -191588,6 +191616,21 @@
<parameter name="originalView" type="android.view.View">
<parameter name="originalView" type="android.view.View">
</parameter>
</parameter>
</method>
</method>
<method name="startActionModeForChild"
 return="android.view.ActionMode"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="originalView" type="android.view.View">
</parameter>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
<method name="startLayoutAnimation"
<method name="startLayoutAnimation"
 return="void"
 return="void"
 abstract="false"
 abstract="false"
@@ -192278,6 +192321,21 @@
<parameter name="originalView" type="android.view.View">
<parameter name="originalView" type="android.view.View">
</parameter>
</parameter>
</method>
</method>
<method name="startActionModeForChild"
 return="android.view.ActionMode"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="originalView" type="android.view.View">
</parameter>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
</interface>
</interface>
<class name="ViewStub"
<class name="ViewStub"
 extends="android.view.View"
 extends="android.view.View"
@@ -194048,6 +194106,19 @@
 visibility="public"
 visibility="public"
>
>
</method>
</method>
<method name="onStartActionMode"
 return="android.view.ActionMode"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="callback" type="android.view.ActionMode.Callback">
</parameter>
</method>
<method name="onWindowAttributesChanged"
<method name="onWindowAttributesChanged"
 return="void"
 return="void"
 abstract="true"
 abstract="true"
+27 −24
Original line number Original line Diff line number Diff line
@@ -16,8 +16,8 @@


package android.app;
package android.app;


import java.util.ArrayList;
import com.android.internal.app.ActionBarImpl;
import java.util.HashMap;
import com.android.internal.policy.PolicyManager;


import android.content.ComponentCallbacks;
import android.content.ComponentCallbacks;
import android.content.ComponentName;
import android.content.ComponentName;
@@ -52,7 +52,9 @@ import android.util.Config;
import android.util.EventLog;
import android.util.EventLog;
import android.util.Log;
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseArray;
import android.view.ActionMode;
import android.view.ContextMenu;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.ContextThemeWrapper;
import android.view.ContextThemeWrapper;
import android.view.InflateException;
import android.view.InflateException;
import android.view.KeyEvent;
import android.view.KeyEvent;
@@ -62,21 +64,18 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewManager;
import android.view.ViewManager;
import android.view.Window;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityEvent;
import android.widget.AdapterView;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.FrameLayout;
import android.widget.LinearLayout;


import com.android.internal.app.ActionBarImpl;
import java.util.ArrayList;
import com.android.internal.policy.PolicyManager;
import java.util.HashMap;
import com.android.internal.widget.ActionBarView;


/**
/**
 * An activity is a single, focused thing that the user can do.  Almost all
 * An activity is a single, focused thing that the user can do.  Almost all
@@ -4073,6 +4072,25 @@ public class Activity extends ContextThemeWrapper
        }
        }
    }
    }


    /**
     * Start a context mode.
     *
     * @param callback Callback that will manage lifecycle events for this context mode
     * @return The ContextMode that was started, or null if it was canceled
     *
     * @see ActionMode
     */
    public ActionMode startContextMode(ActionMode.Callback callback) {
        return mWindow.getDecorView().startActionMode(callback);
    }

    public ActionMode onStartActionMode(ActionMode.Callback callback) {
        if (mActionBar != null) {
            return mActionBar.startContextMode(callback);
        }
        return null;
    }

    // ------------------ Internal API ------------------
    // ------------------ Internal API ------------------
    
    
    final void setParent(Activity parent) {
    final void setParent(Activity parent) {
@@ -4286,19 +4304,4 @@ public class Activity extends ContextThemeWrapper
            }
            }
        }
        }
    }
    }

    @Override
    public ContextualMode startContextualMode(ContextualMode.Callback callback) {
        if (mActionBar == null) {
            return null;
        }
        return mActionBar.startContextualMode(callback);
    }

    @Override
    public void finishContextualMode() {
        if (mActionBar != null) {
            mActionBar.finishContextualMode();
        }
    }
}
}
+11 −5
Original line number Original line Diff line number Diff line
@@ -18,16 +18,18 @@ package android.app;


import com.android.internal.policy.PolicyManager;
import com.android.internal.policy.PolicyManager;


import android.content.Context;
import android.content.DialogInterface;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.ContextWrapper;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.os.Message;
import android.os.Message;
import android.view.ContextMenu;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.ActionMode;
import android.view.ContextThemeWrapper;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.KeyEvent;
@@ -36,13 +38,12 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.view.ViewConfiguration;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup.LayoutParams;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityEvent;


import java.lang.ref.WeakReference;
import java.lang.ref.WeakReference;
@@ -832,6 +833,11 @@ public class Dialog implements DialogInterface, Window.Callback,
        }
        }
    }
    }


    public ActionMode onStartActionMode(ActionMode.Callback callback) {
        // TODO Support context modes in dialogs
        return null;
    }

    /**
    /**
     * @return The activity associated with this dialog, or null if there is no assocaited activity.
     * @return The activity associated with this dialog, or null if there is no assocaited activity.
     */
     */
+0 −22
Original line number Original line Diff line number Diff line
@@ -16,7 +16,6 @@


package android.content;
package android.content;


import android.app.ContextualMode;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.content.res.AssetManager;
@@ -1983,25 +1982,4 @@ public abstract class Context {
    public boolean isRestricted() {
    public boolean isRestricted() {
        return false;
        return false;
    }
    }

    /**
     * Start a contextual mode controlled by <code>callback</code>.
     * The {@link ContextualMode.Callback} will receive lifecycle events for the duration
     * of the contextual mode. There can only be one contextual mode active at a time.
     * Starting a new contextual mode while one is already active will finish the old
     * contextual mode.
     *
     * @param callback Callback handler that will manage this context mode.
     * @return The new contextual mode started by this call, or <code>null</code>
     *         if the mode was not started.
     */
    public ContextualMode startContextualMode(ContextualMode.Callback callback) {
        return null;
    }

    /**
     * Finish the current contextual mode if present.
     */
    public void finishContextualMode() {
    }
}
}
+151 −0
Original line number Original line Diff line number Diff line
@@ -14,21 +14,17 @@
 * limitations under the License.
 * limitations under the License.
 */
 */


package android.app;
package android.view;


import android.content.Context;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;


/**
/**
 * Represents a contextual mode of the user interface. Contextual modes can be used for
 * Represents a contextual mode of the user interface. Action modes can be used for
 * modal interactions with content and replace parts of the normal UI until finished.
 * modal interactions with content and replace parts of the normal UI until finished.
 * Examples of good contextual modes include selection modes, search, content editing, etc.
 * Examples of good action modes include selection modes, search, content editing, etc.
 */
 */
public abstract class ContextualMode {
public abstract class ActionMode {
    /**
    /**
     * Set the title of the contextual mode. This method will have no visible effect if
     * Set the title of the action mode. This method will have no visible effect if
     * a custom view has been set.
     * a custom view has been set.
     *
     *
     * @param title Title string to set
     * @param title Title string to set
@@ -38,7 +34,7 @@ public abstract class ContextualMode {
    public abstract void setTitle(CharSequence title);
    public abstract void setTitle(CharSequence title);


    /**
    /**
     * Set the subtitle of the contextual mode. This method will have no visible effect if
     * Set the subtitle of the action mode. This method will have no visible effect if
     * a custom view has been set.
     * a custom view has been set.
     *
     *
     * @param subtitle Subtitle string to set
     * @param subtitle Subtitle string to set
@@ -48,7 +44,7 @@ public abstract class ContextualMode {
    public abstract void setSubtitle(CharSequence subtitle);
    public abstract void setSubtitle(CharSequence subtitle);


    /**
    /**
     * Set a custom view for this contextual mode. The custom view will take the place of
     * Set a custom view for this action mode. The custom view will take the place of
     * the title and subtitle. Useful for things like search boxes.
     * the title and subtitle. Useful for things like search boxes.
     *
     *
     * @param view Custom view to use in place of the title/subtitle.
     * @param view Custom view to use in place of the title/subtitle.
@@ -59,97 +55,97 @@ public abstract class ContextualMode {
    public abstract void setCustomView(View view);
    public abstract void setCustomView(View view);


    /**
    /**
     * Invalidate the contextual mode and refresh menu content. The contextual mode's
     * Invalidate the action mode and refresh menu content. The mode's
     * {@link ContextualMode.Callback} will have its
     * {@link ActionMode.Callback} will have its
     * {@link Callback#onPrepareContextualMode(ContextualMode, Menu)} method called.
     * {@link Callback#onPrepareActionMode(ActionMode, Menu)} method called.
     * If it returns true the menu will be scanned for updated content and any relevant changes
     * If it returns true the menu will be scanned for updated content and any relevant changes
     * will be reflected to the user.
     * will be reflected to the user.
     */
     */
    public abstract void invalidate();
    public abstract void invalidate();


    /**
    /**
     * Finish and close this context mode. The context mode's {@link ContextualMode.Callback} will
     * Finish and close this action mode. The action mode's {@link ActionMode.Callback} will
     * have its {@link Callback#onDestroyContextualMode(ContextualMode)} method called.
     * have its {@link Callback#onDestroyActionMode(ActionMode)} method called.
     */
     */
    public abstract void finish();
    public abstract void finish();


    /**
    /**
     * Returns the menu of actions that this contextual mode presents.
     * Returns the menu of actions that this action mode presents.
     * @return The contextual mode's menu.
     * @return The action mode's menu.
     */
     */
    public abstract Menu getMenu();
    public abstract Menu getMenu();


    /**
    /**
     * Returns the current title of this contextual mode.
     * Returns the current title of this action mode.
     * @return Title text
     * @return Title text
     */
     */
    public abstract CharSequence getTitle();
    public abstract CharSequence getTitle();


    /**
    /**
     * Returns the current subtitle of this contextual mode.
     * Returns the current subtitle of this action mode.
     * @return Subtitle text
     * @return Subtitle text
     */
     */
    public abstract CharSequence getSubtitle();
    public abstract CharSequence getSubtitle();


    /**
    /**
     * Returns the current custom view for this contextual mode.
     * Returns the current custom view for this action mode.
     * @return The current custom view
     * @return The current custom view
     */
     */
    public abstract View getCustomView();
    public abstract View getCustomView();


    /**
    /**
     * Callback interface for contextual modes. Supplied to
     * Callback interface for action modes. Supplied to
     * {@link Context#startContextualMode(Callback)}, a Callback
     * {@link View#startActionMode(Callback)}, a Callback
     * configures and handles events raised by a user's interaction with a context mode.
     * configures and handles events raised by a user's interaction with an action mode.
     *
     *
     * <p>A context mode's lifecycle is as follows:
     * <p>An action mode's lifecycle is as follows:
     * <ul>
     * <ul>
     * <li>{@link Callback#onCreateContextualMode(ContextualMode, Menu)} once on initial
     * <li>{@link Callback#onCreateActionMode(ActionMode, Menu)} once on initial
     * creation</li>
     * creation</li>
     * <li>{@link Callback#onPrepareContextualMode(ContextualMode, Menu)} after creation
     * <li>{@link Callback#onPrepareActionMode(ActionMode, Menu)} after creation
     * and any time the {@link ContextualMode} is invalidated</li>
     * and any time the {@link ActionMode} is invalidated</li>
     * <li>{@link Callback#onContextualItemClicked(ContextualMode, MenuItem)} any time a
     * <li>{@link Callback#onActionItemClicked(ActionMode, MenuItem)} any time a
     * contextual action button is clicked</li>
     * contextual action button is clicked</li>
     * <li>{@link Callback#onDestroyContextualMode(ContextualMode)} when the context mode
     * <li>{@link Callback#onDestroyActionMode(ActionMode)} when the action mode
     * is closed</li>
     * is closed</li>
     * </ul>
     * </ul>
     */
     */
    public interface Callback {
    public interface Callback {
        /**
        /**
         * Called when a contextual mode is first created. The menu supplied will be used to
         * Called when action mode is first created. The menu supplied will be used to
         * generate action buttons for the contextual mode.
         * generate action buttons for the action mode.
         *
         *
         * @param mode ContextualMode being created
         * @param mode ActionMode being created
         * @param menu Menu used to populate contextual action buttons
         * @param menu Menu used to populate action buttons
         * @return true if the contextual mode should be created, false if entering this
         * @return true if the action mode should be created, false if entering this
         *              mode should be aborted.
         *              mode should be aborted.
         */
         */
        public boolean onCreateContextualMode(ContextualMode mode, Menu menu);
        public boolean onCreateActionMode(ActionMode mode, Menu menu);


        /**
        /**
         * Called to refresh a contextual mode's action menu whenever it is invalidated.
         * Called to refresh an action mode's action menu whenever it is invalidated.
         *
         *
         * @param mode ContextualMode being prepared
         * @param mode ActionMode being prepared
         * @param menu Menu used to populate contextual action buttons
         * @param menu Menu used to populate action buttons
         * @return true if the menu or contextual mode was updated, false otherwise.
         * @return true if the menu or action mode was updated, false otherwise.
         */
         */
        public boolean onPrepareContextualMode(ContextualMode mode, Menu menu);
        public boolean onPrepareActionMode(ActionMode mode, Menu menu);


        /**
        /**
         * Called to report a user click on a contextual action button.
         * Called to report a user click on an action button.
         *
         *
         * @param mode The current ContextualMode
         * @param mode The current ActionMode
         * @param item The item that was clicked
         * @param item The item that was clicked
         * @return true if this callback handled the event, false if the standard MenuItem
         * @return true if this callback handled the event, false if the standard MenuItem
         *          invocation should continue.
         *          invocation should continue.
         */
         */
        public boolean onContextualItemClicked(ContextualMode mode, MenuItem item);
        public boolean onActionItemClicked(ActionMode mode, MenuItem item);


        /**
        /**
         * Called when a contextual mode is about to be exited and destroyed.
         * Called when an action mode is about to be exited and destroyed.
         *
         *
         * @param mode The current ContextualMode being destroyed
         * @param mode The current ActionMode being destroyed
         */
         */
        public void onDestroyContextualMode(ContextualMode mode);
        public void onDestroyActionMode(ActionMode mode);
    }
    }
}
}
 No newline at end of file
Loading