Exemplo n.º 1
0
            public ActionButtonSubmenu(ActionMenuPresenter _enclosing, android.content.Context
                                       context, [email protected] subMenu) : base(context, subMenu
                                                                                                           )
            {
                this._enclosing = _enclosing;
                this.mSubMenu   = subMenu;
                [email protected] item = ([email protected]
                                                                 )subMenu.getItem();
                if (!item.isActionButton())
                {
                    // Give a reasonable anchor to nested submenus.
                    this.setAnchorView(this._enclosing.mOverflowButton == null ? (android.view.View) this
                                       ._enclosing.mMenuView : this._enclosing.mOverflowButton);
                }
                this.setCallback(this._enclosing.mPopupPresenterCallback);
                bool preserveIconSpacing = false;
                int  count = subMenu.size();

                {
                    for (int i = 0; i < count; i++)
                    {
                        android.view.MenuItem childItem = subMenu.getItem(i);
                        if (childItem.isVisible() && childItem.getIcon() != null)
                        {
                            preserveIconSpacing = true;
                            break;
                        }
                    }
                }
                this.setForceShowIcon(preserveIconSpacing);
            }
Exemplo n.º 2
0
 public void initialize([email protected] itemData, int menuType
                        )
 {
     mItemData = itemData;
     initialize(itemData.getTitleForItemView(this), itemData.getIcon());
     setVisibility(itemData.isVisible() ? android.view.View.VISIBLE : android.view.View
                   .GONE);
     setEnabled(itemData.isEnabled());
 }
Exemplo n.º 3
0
		public void initialize([email protected] itemData, int menuType
			)
		{
			mItemData = itemData;
			initialize(itemData.getTitleForItemView(this), itemData.getIcon());
			setVisibility(itemData.isVisible() ? android.view.View.VISIBLE : android.view.View
				.GONE);
			setEnabled(itemData.isEnabled());
		}
Exemplo n.º 4
0
        public override bool shouldIncludeItem(int childIndex, [email protected]
                                               item)
        {
            java.util.ArrayList <*****@*****.**> itemsToShow = mMenu
                                                                                         .getNonActionItems();
            bool fits = (itemsToShow.size() == mMaxItems && childIndex < mMaxItems) || childIndex
                        < mMaxItems - 1;

            return(fits && !item.isActionButton());
        }
Exemplo n.º 5
0
 public override void bindItemView([email protected] item,
                                   [email protected] itemView)
 {
     itemView.initialize(item, 0);
     [email protected] menuView = ([email protected]
                                                            )mMenuView;
     [email protected] actionItemView = ([email protected]
                                                                      )itemView;
     actionItemView.setItemInvoker(menuView);
 }
Exemplo n.º 6
0
 public virtual void initialize([email protected] itemData,
                                int menuType)
 {
     mItemData = itemData;
     setIcon(itemData.getIcon());
     setTitle(itemData.getTitleForItemView(this));
     // Title only takes effect if there is no icon
     setId(itemData.getItemId());
     setVisibility(itemData.isVisible() ? android.view.View.VISIBLE : android.view.View
                   .GONE);
     setEnabled(itemData.isEnabled());
 }
Exemplo n.º 7
0
 public override void bindItemView([email protected] item,
                                   [email protected] itemView)
 {
     [email protected] view = ([email protected]
                                                          )itemView;
     view.setItemData(item);
     view.initialize(item.getTitleForItemView(view), item.getIcon());
     view.setVisibility(item.isVisible() ? android.view.View.VISIBLE : android.view.View
                        .GONE);
     view.setEnabled(view.isEnabled());
     view.setLayoutParams(view.getTextAppropriateLayoutParams());
 }
Exemplo n.º 8
0
		public virtual void initialize([email protected] itemData, 
			int menuType)
		{
			mItemData = itemData;
			setIcon(itemData.getIcon());
			setTitle(itemData.getTitleForItemView(this));
			// Title only takes effect if there is no icon
			setId(itemData.getItemId());
			setVisibility(itemData.isVisible() ? android.view.View.VISIBLE : android.view.View
				.GONE);
			setEnabled(itemData.isEnabled());
		}
Exemplo n.º 9
0
 public virtual void initialize([email protected] itemData,
                                int menuType)
 {
     mItemData = itemData;
     mMenuType = menuType;
     setVisibility(itemData.isVisible() ? android.view.View.VISIBLE : android.view.View
                   .GONE);
     setTitle(itemData.getTitleForItemView(this));
     setCheckable(itemData.isCheckable());
     setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut());
     setIcon(itemData.getIcon());
     setEnabled(itemData.isEnabled());
 }
Exemplo n.º 10
0
		public virtual void initialize([email protected] itemData, 
			int menuType)
		{
			mItemData = itemData;
			mMenuType = menuType;
			setVisibility(itemData.isVisible() ? android.view.View.VISIBLE : android.view.View
				.GONE);
			setTitle(itemData.getTitleForItemView(this));
			setCheckable(itemData.isCheckable());
			setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut());
			setIcon(itemData.getIcon());
			setEnabled(itemData.isEnabled());
		}
Exemplo n.º 11
0
 /// <summary>Prepare an item view for use.</summary>
 /// <remarks>
 /// Prepare an item view for use. See AdapterView for the basic idea at work here.
 /// This may require creating a new item view, but well-behaved implementations will
 /// re-use the view passed as convertView if present. The returned view will be populated
 /// with data from the item parameter.
 /// </remarks>
 /// <param name="item">Item to present</param>
 /// <param name="convertView">Existing view to reuse</param>
 /// <param name="parent">Intended parent view - use for inflation.</param>
 /// <returns>View that presents the requested menu item</returns>
 public virtual android.view.View getItemView([email protected]
                                              item, android.view.View convertView, android.view.ViewGroup parent)
 {
     [email protected] itemView;
     if (convertView is [email protected])
     {
         itemView = ([email protected])convertView;
     }
     else
     {
         itemView = createItemView(parent);
     }
     bindItemView(item, itemView);
     return((android.view.View)itemView);
 }
Exemplo n.º 12
0
        public virtual void updateMenuView(bool cleared)
        {
            android.view.ViewGroup parent = (android.view.ViewGroup)mMenuView;
            if (parent == null)
            {
                return;
            }
            int childIndex = 0;

            if (mMenu != null)
            {
                mMenu.flagActionItems();
                java.util.ArrayList <*****@*****.**> visibleItems = mMenu
                                                                                              .getVisibleItems();
                int itemCount = visibleItems.size();
                {
                    for (int i = 0; i < itemCount; i++)
                    {
                        [email protected] item = visibleItems.get(i);
                        if (shouldIncludeItem(childIndex, item))
                        {
                            android.view.View convertView = parent.getChildAt(childIndex);
                            android.view.View itemView    = getItemView(item, convertView, parent);
                            if (itemView != convertView)
                            {
                                addItemView(itemView, childIndex);
                            }
                            childIndex++;
                        }
                    }
                }
            }
            // Remove leftover views.
            while (childIndex < parent.getChildCount())
            {
                if (!filterLeftoverView(parent, childIndex))
                {
                    childIndex++;
                }
            }
        }
Exemplo n.º 13
0
 internal virtual void findExpandedIndex()
 {
     [email protected] expandedItem = this._enclosing.mMenu.getExpandedItem
                                                                 ();
     if (expandedItem != null)
     {
         java.util.ArrayList <*****@*****.**> items = this._enclosing
                                                                                .mMenu.getNonActionItems();
         int count = items.size();
         {
             for (int i = 0; i < count; i++)
             {
                 [email protected] item = items.get(i);
                 if (item == expandedItem)
                 {
                     this.mExpandedIndex = i;
                     return;
                 }
             }
         }
     }
     this.mExpandedIndex = -1;
 }
Exemplo n.º 14
0
 public override android.view.View getItemView([email protected]
                                               item, android.view.View convertView, android.view.ViewGroup parent)
 {
     android.view.View actionView = item.getActionView();
     if (actionView == null || item.hasCollapsibleActionView())
     {
         if (!(convertView is [email protected]))
         {
             convertView = null;
         }
         actionView = base.getItemView(item, convertView, parent);
     }
     actionView.setVisibility(item.isActionViewExpanded() ? android.view.View.GONE : android.view.View
                              .VISIBLE);
     [email protected] menuParent = ([email protected]
                                                              )parent;
     android.view.ViewGroup.LayoutParams lp = actionView.getLayoutParams();
     if (!menuParent.checkLayoutParams(lp))
     {
         actionView.setLayoutParams((([email protected]
                                      )menuParent.generateLayoutParams(lp)));
     }
     return(actionView);
 }
Exemplo n.º 15
0
 public override bool shouldIncludeItem(int childIndex, [email protected]
                                        item)
 {
     return(item.isActionButton());
 }
Exemplo n.º 16
0
 public virtual bool invokeItem([email protected] item)
 {
     return(mMenu.performItemAction(item, 0));
 }
Exemplo n.º 17
0
 /// <summary>Filter item by child index and item data.</summary>
 /// <remarks>Filter item by child index and item data.</remarks>
 /// <param name="childIndex">Indended presentation index of this item</param>
 /// <param name="item">Item to present</param>
 /// <returns>true if this item should be included in this menu presentation; false otherwise
 ///     </returns>
 public virtual bool shouldIncludeItem(int childIndex, [email protected]
                                       item)
 {
     return(true);
 }
Exemplo n.º 18
0
 public virtual bool collapseItemActionView([email protected]
                                            menu, [email protected] item)
 {
     return(false);
 }
Exemplo n.º 19
0
        public override bool flagActionItems()
        {
            java.util.ArrayList <*****@*****.**> visibleItems = mMenu
                                                                                          .getVisibleItems();
            int itemsSize  = visibleItems.size();
            int maxActions = mMaxItems;
            int widthLimit = mActionItemWidthLimit;
            int querySpec  = android.view.View.MeasureSpec.makeMeasureSpec(0, android.view.View
                                                                           .MeasureSpec.UNSPECIFIED);

            android.view.ViewGroup parent = (android.view.ViewGroup)mMenuView;
            int  requiredItems            = 0;
            int  requestedItems           = 0;
            int  firstActionWidth         = 0;
            bool hasOverflow = false;

            {
                for (int i = 0; i < itemsSize; i++)
                {
                    [email protected] item = visibleItems.get(i);
                    if (item.requiresActionButton())
                    {
                        requiredItems++;
                    }
                    else
                    {
                        if (item.requestsActionButton())
                        {
                            requestedItems++;
                        }
                        else
                        {
                            hasOverflow = true;
                        }
                    }
                    if (mExpandedActionViewsExclusive && item.isActionViewExpanded())
                    {
                        // Overflow everything if we have an expanded action view and we're
                        // space constrained.
                        maxActions = 0;
                    }
                }
            }
            // Reserve a spot for the overflow item if needed.
            if (mReserveOverflow && (hasOverflow || requiredItems + requestedItems > maxActions
                                     ))
            {
                maxActions--;
            }
            maxActions -= requiredItems;
            android.util.SparseBooleanArray seenGroups = mActionButtonGroups;
            seenGroups.clear();
            int cellSize       = 0;
            int cellsRemaining = 0;

            if (mStrictWidthLimit)
            {
                cellsRemaining = widthLimit / mMinCellSize;
                int cellSizeRemaining = widthLimit % mMinCellSize;
                cellSize = mMinCellSize + cellSizeRemaining / cellsRemaining;
            }
            {
                // Flag as many more requested items as will fit.
                for (int i_1 = 0; i_1 < itemsSize; i_1++)
                {
                    [email protected] item = visibleItems.get(i_1);
                    if (item.requiresActionButton())
                    {
                        android.view.View v = getItemView(item, mScrapActionButtonView, parent);
                        if (mScrapActionButtonView == null)
                        {
                            mScrapActionButtonView = v;
                        }
                        if (mStrictWidthLimit)
                        {
                            cellsRemaining -= [email protected]
                                                  (v, cellSize, cellsRemaining, querySpec, 0);
                        }
                        else
                        {
                            v.measure(querySpec, querySpec);
                        }
                        int measuredWidth = v.getMeasuredWidth();
                        widthLimit -= measuredWidth;
                        if (firstActionWidth == 0)
                        {
                            firstActionWidth = measuredWidth;
                        }
                        int groupId = item.getGroupId();
                        if (groupId != 0)
                        {
                            seenGroups.put(groupId, true);
                        }
                        item.setIsActionButton(true);
                    }
                    else
                    {
                        if (item.requestsActionButton())
                        {
                            // Items in a group with other items that already have an action slot
                            // can break the max actions rule, but not the width limit.
                            int  groupId  = item.getGroupId();
                            bool inGroup  = seenGroups.get(groupId);
                            bool isAction = (maxActions > 0 || inGroup) && widthLimit > 0 && (!mStrictWidthLimit ||
                                                                                              cellsRemaining > 0);
                            if (isAction)
                            {
                                android.view.View v = getItemView(item, mScrapActionButtonView, parent);
                                if (mScrapActionButtonView == null)
                                {
                                    mScrapActionButtonView = v;
                                }
                                if (mStrictWidthLimit)
                                {
                                    int cells = [email protected](v, cellSize
                                                                                                                , cellsRemaining, querySpec, 0);
                                    cellsRemaining -= cells;
                                    if (cells == 0)
                                    {
                                        isAction = false;
                                    }
                                }
                                else
                                {
                                    v.measure(querySpec, querySpec);
                                }
                                int measuredWidth = v.getMeasuredWidth();
                                widthLimit -= measuredWidth;
                                if (firstActionWidth == 0)
                                {
                                    firstActionWidth = measuredWidth;
                                }
                                if (mStrictWidthLimit)
                                {
                                    isAction &= widthLimit >= 0;
                                }
                                else
                                {
                                    // Did this push the entire first item past the limit?
                                    isAction &= widthLimit + firstActionWidth > 0;
                                }
                            }
                            if (isAction && groupId != 0)
                            {
                                seenGroups.put(groupId, true);
                            }
                            else
                            {
                                if (inGroup)
                                {
                                    // We broke the width limit. Demote the whole group, they all overflow now.
                                    seenGroups.put(groupId, false);
                                    {
                                        for (int j = 0; j < i_1; j++)
                                        {
                                            [email protected] areYouMyGroupie = visibleItems.get(j);
                                            if (areYouMyGroupie.getGroupId() == groupId)
                                            {
                                                // Give back the action slot
                                                if (areYouMyGroupie.isActionButton())
                                                {
                                                    maxActions++;
                                                }
                                                areYouMyGroupie.setIsActionButton(false);
                                            }
                                        }
                                    }
                                }
                            }
                            if (isAction)
                            {
                                maxActions--;
                            }
                            item.setIsActionButton(isAction);
                        }
                    }
                }
            }
            return(true);
        }
Exemplo n.º 20
0
 /// <summary>Bind item data to an existing item view.</summary>
 /// <remarks>Bind item data to an existing item view.</remarks>
 /// <param name="item">Item to bind</param>
 /// <param name="itemView">View to populate with item data</param>
 public abstract void bindItemView([email protected] item,
                                   [email protected] itemView);
Exemplo n.º 21
0
 public SubMenuBuilder(android.content.Context context, [email protected]
                       parentMenu, [email protected] item) : base(context)
 {
     mParentMenu = parentMenu;
     mItem       = item;
 }
Exemplo n.º 22
0
 public override bool collapseItemActionView([email protected]
                                             item)
 {
     return(mParentMenu.collapseItemActionView(item));
 }
Exemplo n.º 23
0
		public SubMenuBuilder(android.content.Context context, [email protected]
			 parentMenu, [email protected] item) : base(context)
		{
			mParentMenu = parentMenu;
			mItem = item;
		}
Exemplo n.º 24
0
		public void setItemData([email protected] data)
		{
			mItemData = data;
		}
Exemplo n.º 25
0
		public virtual bool collapseItemActionView([email protected]
			 item)
		{
			if (mPresenters.isEmpty() || mExpandedItem != item)
			{
				return false;
			}
			bool collapsed = false;
			stopDispatchingItemsChanged();
			foreach ([email protected]<*****@*****.**> 
				@ref in Sharpen.IterableProxy.Create(mPresenters))
			{
				[email protected] presenter = @ref.get();
				if (presenter == null)
				{
					mPresenters.remove(@ref);
				}
				else
				{
					if ((collapsed = presenter.collapseItemActionView(this, item)))
					{
						break;
					}
				}
			}
			startDispatchingItemsChanged();
			if (collapsed)
			{
				mExpandedItem = null;
			}
			return collapsed;
		}
Exemplo n.º 26
0
 public void setItemData([email protected] data)
 {
     mItemData = data;
 }
Exemplo n.º 27
0
		/// <summary>Adds an item to the menu.</summary>
		/// <remarks>Adds an item to the menu.  The other add methods funnel to this.</remarks>
		private android.view.MenuItem addInternal(int group, int id, int categoryOrder, java.lang.CharSequence
			 title)
		{
			int ordering = getOrdering(categoryOrder);
			[email protected] item = new [email protected]
				(this, group, id, categoryOrder, ordering, title, mDefaultShowAsAction);
			if (mCurrentMenuInfo != null)
			{
				// Pass along the current menu info
				item.setMenuInfo(mCurrentMenuInfo);
			}
			mItems.add(findInsertIndex(mItems, ordering), item);
			onItemsChanged(true);
			return item;
		}