public static RibbonControlGroupCollection GroupItems(IList <RibbonItem> ribbonItems, Func <RibbonItem, RibbonItemStyle> itemStyleProvider) { var actualItemStyleProvider = itemStyleProvider ?? GetActualItemStyle; var items = ribbonItems; var list = new RibbonControlGroupCollection(); var group = new RibbonItemGroup(); for (var i = items.Count - 1; i >= 0; i--) { var item = items[i]; var itemStyle = CoerceItemStyle(item, actualItemStyleProvider(item)); if (group.Add(item, itemStyle)) { continue; } list.Add(group); group = new RibbonItemGroup(); group.Add(item, itemStyle); } if (group.IsEmpty == false) { list.Add(group); } list.Reverse(); return(list); }
private static double ArrangeControlGroup(RibbonItemGroup itemGroup, Size finalSize, double offset) { var orientation = itemGroup.Orientation; switch (orientation) { case Orientation.Vertical: var lineWidth = itemGroup.EnumerateItems().Max(i => i.DesiredSize.Width); return(offset + PanelHelper.ArrangeStackLine(itemGroup.EnumerateItems(), orientation, offset, 0, lineWidth, finalSize.Height / 3).Indirect); case Orientation.Horizontal: return(offset + PanelHelper.ArrangeStackLine(itemGroup.EnumerateItems(), orientation, 0, offset, finalSize.Height, null).Direct); default: throw new ArgumentOutOfRangeException(); } }
private static Size MeasureControlGroup(RibbonItemGroup itemGroup, Size measureItemSize, bool forceMeasure) { return(itemGroup.MeasureGroup(measureItemSize, forceMeasure)); }