diff options
Diffstat (limited to 'core/java/com')
-rw-r--r-- | core/java/com/android/internal/view/ActionModeWrapper.java | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/core/java/com/android/internal/view/ActionModeWrapper.java b/core/java/com/android/internal/view/ActionModeWrapper.java index ef1981a..72066b9 100644 --- a/core/java/com/android/internal/view/ActionModeWrapper.java +++ b/core/java/com/android/internal/view/ActionModeWrapper.java @@ -24,7 +24,6 @@ import android.view.MenuItem; import android.view.View; import com.android.internal.view.menu.MenuBuilder; -import com.android.internal.widget.ActionBarContextView; /** * ActionMode implementation that wraps several actions modes and creates them on the fly depending @@ -32,6 +31,22 @@ import com.android.internal.widget.ActionBarContextView; */ public class ActionModeWrapper extends ActionMode { + /** + * Interface to defer the ActionMode creation until the type is chosen. + */ + public interface ActionModeProvider { + /** + * Create the desired ActionMode, that will immediately be used as the current active mode + * in the decorator. + * + * @param callback The {@link ActionMode.Callback} to be used. + * @param menuBuilder The {@link MenuBuilder} that should be used by the created + * {@link ActionMode}. This will already have been populated. + * @return A new {@link ActionMode} ready to be used that uses menuBuilder as its menu. + */ + ActionMode createActionMode(ActionMode.Callback callback, MenuBuilder menuBuilder); + } + private ActionMode mActionMode; private final Context mContext; private MenuBuilder mMenu; @@ -41,16 +56,16 @@ public class ActionModeWrapper extends ActionMode { private CharSequence mTitle; private CharSequence mSubtitle; private View mCustomView; + + private final ActionModeProvider mActionModeProvider; - // Fields for StandaloneActionMode - private ActionBarContextView mActionModeView; - private boolean mIsFocusable; - - public ActionModeWrapper(Context context, ActionMode.Callback callback) { + public ActionModeWrapper( + Context context, ActionMode.Callback callback, ActionModeProvider actionModeProvider) { mContext = context; mMenu = new MenuBuilder(context).setDefaultShowAsAction( MenuItem.SHOW_AS_ACTION_IF_ROOM); mCallback = callback; + mActionModeProvider = actionModeProvider; } @Override @@ -107,9 +122,7 @@ public class ActionModeWrapper extends ActionMode { switch (getType()) { case ActionMode.TYPE_PRIMARY: default: - mActionMode = new StandaloneActionMode( - mActionModeView.getContext(), - mActionModeView, mCallback, mIsFocusable, mMenu); + mActionMode = mActionModeProvider.createActionMode(mCallback, mMenu); break; case ActionMode.TYPE_FLOATING: // Not implemented yet. @@ -189,12 +202,4 @@ public class ActionModeWrapper extends ActionMode { return new MenuInflater(mContext); } - public void setActionModeView(ActionBarContextView actionModeView) { - mActionModeView = actionModeView; - } - - public void setFocusable(boolean focusable) { - mIsFocusable = focusable; - } - } |