Loading core/java/android/widget/ActionMenuView.java +12 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.view.accessibility.AccessibilityEvent; import com.android.internal.view.menu.ActionMenuItemView; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.view.menu.MenuView; /** Loading @@ -53,6 +54,7 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo private boolean mReserveOverflow; private ActionMenuPresenter mPresenter; private MenuPresenter.Callback mActionMenuPresenterCallback; private boolean mFormatItems; private int mFormatItemsWidth; private int mMinCellSize; Loading Loading @@ -608,7 +610,8 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo mMenu = new MenuBuilder(context); mMenu.setCallback(new MenuBuilderCallback()); mPresenter = new ActionMenuPresenter(context); mPresenter.setCallback(new ActionMenuPresenterCallback()); mPresenter.setCallback(mActionMenuPresenterCallback != null ? mActionMenuPresenterCallback : new ActionMenuPresenterCallback()); mMenu.addMenuPresenter(mPresenter, mPopupContext); mPresenter.setMenuView(this); } Loading @@ -616,6 +619,14 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo return mMenu; } /** * Must be called before the first call to getMenu() * @hide */ public void setActionMenuPresenterCallback(MenuPresenter.Callback cb) { mActionMenuPresenterCallback = cb; } /** * Returns the current menu or null if one has not yet been configured. * @hide Internal use only for action bar integration Loading core/java/android/widget/Toolbar.java +11 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.view.View; import android.view.ViewGroup; import com.android.internal.R; import com.android.internal.app.ToolbarActionBar; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPresenter; Loading Loading @@ -153,6 +154,7 @@ public class Toolbar extends ViewGroup { private ToolbarWidgetWrapper mWrapper; private ActionMenuPresenter mOuterActionMenuPresenter; private ExpandedActionViewMenuPresenter mExpandedMenuPresenter; private MenuPresenter.Callback mActionMenuPresenterCallback; private boolean mCollapsible; Loading Loading @@ -825,6 +827,7 @@ public class Toolbar extends ViewGroup { mMenuView = new ActionMenuView(getContext()); mMenuView.setPopupTheme(mPopupTheme); mMenuView.setOnMenuItemClickListener(mMenuViewItemClickListener); mMenuView.setActionMenuPresenterCallback(mActionMenuPresenterCallback); final LayoutParams lp = generateDefaultLayoutParams(); lp.gravity = Gravity.END | (mButtonGravity & Gravity.VERTICAL_GRAVITY_MASK); mMenuView.setLayoutParams(lp); Loading Loading @@ -1677,6 +1680,14 @@ public class Toolbar extends ViewGroup { requestLayout(); } /** * Must be called before the menu is accessed * @hide */ public void setActionMenuPresenterCallback(MenuPresenter.Callback cb) { mActionMenuPresenterCallback = cb; } /** * Interface responsible for receiving menu item click events if the items themselves * do not have individual item click listeners. Loading core/java/com/android/internal/app/ToolbarActionBar.java +33 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.widget.SpinnerAdapter; import android.widget.Toolbar; import com.android.internal.R; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.widget.DecorToolbar; import com.android.internal.widget.ToolbarWidgetWrapper; Loading @@ -45,6 +46,7 @@ public class ToolbarActionBar extends ActionBar { private DecorToolbar mDecorToolbar; private boolean mToolbarMenuPrepared; private Window.Callback mWindowCallback; private boolean mMenuCallbackSet; private CharSequence mHomeDescription; Loading Loading @@ -453,6 +455,10 @@ public class ToolbarActionBar extends ActionBar { } void populateOptionsMenu() { if (!mMenuCallbackSet) { mToolbar.setActionMenuPresenterCallback(new ActionMenuPresenterCallback()); mMenuCallbackSet = true; } final Menu menu = mToolbar.getMenu(); final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null; if (mb != null) { Loading Loading @@ -514,4 +520,31 @@ public class ToolbarActionBar extends ActionBar { return result; } } private final class ActionMenuPresenterCallback implements MenuPresenter.Callback { private boolean mClosingActionMenu; @Override public boolean onOpenSubMenu(MenuBuilder subMenu) { if (mWindowCallback != null) { mWindowCallback.onMenuOpened(Window.FEATURE_ACTION_BAR, subMenu); return true; } return false; } @Override public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { if (mClosingActionMenu) { return; } mClosingActionMenu = true; mToolbar.dismissPopupMenus(); if (mWindowCallback != null) { mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); } mClosingActionMenu = false; } } } Loading
core/java/android/widget/ActionMenuView.java +12 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.view.accessibility.AccessibilityEvent; import com.android.internal.view.menu.ActionMenuItemView; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.view.menu.MenuView; /** Loading @@ -53,6 +54,7 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo private boolean mReserveOverflow; private ActionMenuPresenter mPresenter; private MenuPresenter.Callback mActionMenuPresenterCallback; private boolean mFormatItems; private int mFormatItemsWidth; private int mMinCellSize; Loading Loading @@ -608,7 +610,8 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo mMenu = new MenuBuilder(context); mMenu.setCallback(new MenuBuilderCallback()); mPresenter = new ActionMenuPresenter(context); mPresenter.setCallback(new ActionMenuPresenterCallback()); mPresenter.setCallback(mActionMenuPresenterCallback != null ? mActionMenuPresenterCallback : new ActionMenuPresenterCallback()); mMenu.addMenuPresenter(mPresenter, mPopupContext); mPresenter.setMenuView(this); } Loading @@ -616,6 +619,14 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo return mMenu; } /** * Must be called before the first call to getMenu() * @hide */ public void setActionMenuPresenterCallback(MenuPresenter.Callback cb) { mActionMenuPresenterCallback = cb; } /** * Returns the current menu or null if one has not yet been configured. * @hide Internal use only for action bar integration Loading
core/java/android/widget/Toolbar.java +11 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.view.View; import android.view.ViewGroup; import com.android.internal.R; import com.android.internal.app.ToolbarActionBar; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuItemImpl; import com.android.internal.view.menu.MenuPresenter; Loading Loading @@ -153,6 +154,7 @@ public class Toolbar extends ViewGroup { private ToolbarWidgetWrapper mWrapper; private ActionMenuPresenter mOuterActionMenuPresenter; private ExpandedActionViewMenuPresenter mExpandedMenuPresenter; private MenuPresenter.Callback mActionMenuPresenterCallback; private boolean mCollapsible; Loading Loading @@ -825,6 +827,7 @@ public class Toolbar extends ViewGroup { mMenuView = new ActionMenuView(getContext()); mMenuView.setPopupTheme(mPopupTheme); mMenuView.setOnMenuItemClickListener(mMenuViewItemClickListener); mMenuView.setActionMenuPresenterCallback(mActionMenuPresenterCallback); final LayoutParams lp = generateDefaultLayoutParams(); lp.gravity = Gravity.END | (mButtonGravity & Gravity.VERTICAL_GRAVITY_MASK); mMenuView.setLayoutParams(lp); Loading Loading @@ -1677,6 +1680,14 @@ public class Toolbar extends ViewGroup { requestLayout(); } /** * Must be called before the menu is accessed * @hide */ public void setActionMenuPresenterCallback(MenuPresenter.Callback cb) { mActionMenuPresenterCallback = cb; } /** * Interface responsible for receiving menu item click events if the items themselves * do not have individual item click listeners. Loading
core/java/com/android/internal/app/ToolbarActionBar.java +33 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.widget.SpinnerAdapter; import android.widget.Toolbar; import com.android.internal.R; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.widget.DecorToolbar; import com.android.internal.widget.ToolbarWidgetWrapper; Loading @@ -45,6 +46,7 @@ public class ToolbarActionBar extends ActionBar { private DecorToolbar mDecorToolbar; private boolean mToolbarMenuPrepared; private Window.Callback mWindowCallback; private boolean mMenuCallbackSet; private CharSequence mHomeDescription; Loading Loading @@ -453,6 +455,10 @@ public class ToolbarActionBar extends ActionBar { } void populateOptionsMenu() { if (!mMenuCallbackSet) { mToolbar.setActionMenuPresenterCallback(new ActionMenuPresenterCallback()); mMenuCallbackSet = true; } final Menu menu = mToolbar.getMenu(); final MenuBuilder mb = menu instanceof MenuBuilder ? (MenuBuilder) menu : null; if (mb != null) { Loading Loading @@ -514,4 +520,31 @@ public class ToolbarActionBar extends ActionBar { return result; } } private final class ActionMenuPresenterCallback implements MenuPresenter.Callback { private boolean mClosingActionMenu; @Override public boolean onOpenSubMenu(MenuBuilder subMenu) { if (mWindowCallback != null) { mWindowCallback.onMenuOpened(Window.FEATURE_ACTION_BAR, subMenu); return true; } return false; } @Override public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { if (mClosingActionMenu) { return; } mClosingActionMenu = true; mToolbar.dismissPopupMenus(); if (mWindowCallback != null) { mWindowCallback.onPanelClosed(Window.FEATURE_ACTION_BAR, menu); } mClosingActionMenu = false; } } }