/// <summary> /// Adds the specified item to the collection /// </summary> public new void Add(RibbonButton item) { CheckRestrictions(item); item.SetOwner(Owner); item.SetOwnerPanel(OwnerPanel); item.SetOwnerTab(OwnerTab); item.SetOwnerItem(OwnerList); base.Add(item); }
private void InitializeStructurePanel() { Text = text; ButtonMoreVisible = false; FlowsTo = RibbonPanelFlowDirection.Bottom; addItemButton = RibbonHelper.AddButton(this, new AddItem()); addItemButton.Style = RibbonButtonStyle.DropDown; addItemButton.DropDownShowing += addItemButton_DropDownShowing; RibbonHelper.AddSeparator(this); // POSTPONE: Реализовать. //var b = RibbonHelper.AddButton(this, new CopyItem()); //b.MaxSizeMode = RibbonElementSizeMode.Medium; //b = RibbonHelper.AddButton(this, new PasteItem()); //b.MaxSizeMode = RibbonElementSizeMode.Medium; var b = RibbonHelper.AddButton(this, new DeleteItem()); b.MaxSizeMode = RibbonElementSizeMode.Medium; RibbonHelper.AddSeparator(this); RibbonHelper.AddButton(this, new ItemOptions()); }
/// <summary> /// Draws the button as a selected button /// </summary> /// <param name="g"></param> /// <param name="button"></param> public void DrawButtonSelected(Graphics g, RibbonButton button) { DrawButtonSelected(g, button.Bounds, ButtonCorners(button)); }
/// <summary> /// Draws the arrow of buttons /// </summary> /// <param name="g"></param> /// <param name="button"></param> public void DrawButtonDropDownArrow(Graphics g, RibbonButton button, Rectangle textLayout) { var bounds = Rectangle.Empty; if (button.SizeMode == RibbonElementSizeMode.Large || button.SizeMode == RibbonElementSizeMode.Overflow) { bounds = LargeButtonDropDownArrowBounds(g, button.Owner.Font, button.Text, textLayout); } else { bounds = textLayout; } DrawArrowShaded(g, bounds, button.DropDownArrowDirection, button.Enabled); }
/// <summary> /// Determines buttonface corners /// </summary> /// <param name="button"></param> /// <returns></returns> private Corners ButtonFaceRounding(RibbonButton button) { if (!(button.OwnerItem is RibbonItemGroup)) { return button.SizeMode == RibbonElementSizeMode.Large ? Corners.North : Corners.West; } var c = Corners.None; var g = button.OwnerItem as RibbonItemGroup; if (button == g.FirstItem) { c |= Corners.West; } return c; }
/// <summary> /// Gets the corners to round on the specified button /// </summary> /// <param name="button"></param> /// <returns></returns> private Corners ButtonCorners(RibbonButton button) { if (!(button.OwnerItem is RibbonItemGroup)) { return Corners.All; } var g = button.OwnerItem as RibbonItemGroup; var c = Corners.None; if (button == g.FirstItem) { c |= Corners.West; } if (button == g.LastItem) { c |= Corners.East; } return c; }
/// <summary> /// Draws a SplitDropDown button in selected state /// </summary> /// <param name="e"></param> /// <param name="button"></param> public void DrawSplitButtonSelected(RibbonItemRenderEventArgs e, RibbonButton button) { var outerR = Rectangle.FromLTRB( button.DropDownBounds.Left, button.DropDownBounds.Top, button.DropDownBounds.Right - 1, button.DropDownBounds.Bottom - 1); var innerR = Rectangle.FromLTRB( outerR.Left + 1, outerR.Top + 1, outerR.Right - 1, outerR.Bottom - 1); var faceOuterR = Rectangle.FromLTRB( button.ButtonFaceBounds.Left, button.ButtonFaceBounds.Top, button.ButtonFaceBounds.Right - 1, button.ButtonFaceBounds.Bottom - 1); var faceInnerR = Rectangle.FromLTRB( faceOuterR.Left + 1, faceOuterR.Top + 1, faceOuterR.Right + (button.SizeMode == RibbonElementSizeMode.Large ? -1 : 0), faceOuterR.Bottom + (button.SizeMode == RibbonElementSizeMode.Large ? 0 : -1)); var faceCorners = ButtonFaceRounding(button); var ddCorners = ButtonDdRounding(button); var outer = RoundRectangle(outerR, 3, ddCorners); var inner = RoundRectangle(innerR, 2, ddCorners); var faceOuter = RoundRectangle(faceOuterR, 3, faceCorners); var faceInner = RoundRectangle(faceInnerR, 2, faceCorners); using (var b = new SolidBrush(Color.FromArgb(150, Color.White))) { e.Graphics.FillPath(b, inner); } using (var p = new Pen(button.Pressed && button.SizeMode != RibbonElementSizeMode.DropDown ? ColorTable.ButtonPressedBorderOut : ColorTable.ButtonSelectedBorderOut)) { e.Graphics.DrawPath(p, outer); } using (var p = new Pen(button.Pressed && button.SizeMode != RibbonElementSizeMode.DropDown ? ColorTable.ButtonPressedBorderIn : ColorTable.ButtonSelectedBorderIn)) { e.Graphics.DrawPath(p, faceInner); } outer.Dispose(); inner.Dispose(); faceOuter.Dispose(); faceInner.Dispose(); }
/// <summary> /// Draws a SplitDropDown button with the dropdown area pressed /// </summary> /// <param name="e"></param> /// <param name="button"></param> public void DrawSplitButtonDropDownPressed(RibbonItemRenderEventArgs e, RibbonButton button) { }
/// <summary> /// Checks for the restrictions that buttons should have on the RibbonButton List /// </summary> /// <param name="button"></param> private void CheckRestrictions(RibbonButton button) { if (button == null) throw new ApplicationException("The RibbonButtonList only accepts button in the Buttons collection"); if (button.Style != RibbonButtonStyle.Normal) throw new ApplicationException("The only style supported by the RibbonButtonList is Normal"); }