private void CollapseChunkToDropDown() { this.ExpandElementToStep((int)ChunkVisibilityState.Expanded); ExpandableStackLayout.InvalidateAll(this); SizeF thisSize = this.DesiredSize; this.elementWithCaptionLayoutPanel.SuspendThemeRefresh(); this.Children.Remove(this.elementWithCaptionLayoutPanel); this.elementWithCaptionLayoutPanel.ResumeThemeRefresh(); RadItem item = new RadItem(); item.UseNewLayoutSystem = true; item.AutoSizeMode = RadAutoSizeMode.WrapAroundChildren; item.Children.Add(this.elementWithCaptionLayoutPanel); item.MaxSize = new Size(0, thisSize.ToSize().Height); item.MinSize = thisSize.ToSize(); RadDropDownMenu menu = this.dropDownElement.DropDownMenu; //remove left column from Menu RadDropDownMenuElement menuPopup = (RadDropDownMenuElement)menu.PopupElement; StackLayoutPanel menuStack = menuPopup.LayoutPanel as StackLayoutPanel; Debug.Assert(menuStack != null, "Chunk menu stack is null"); menuStack.Orientation = this.Orientation; menuPopup.Layout.LeftColumnMinWidth = 0; this.dropDownElement.Items.Add(item); //fix for Missing theme if chunk is not expanded this.dropDownElement.Visibility = ElementVisibility.Visible; this.CollapseStep = (int)ChunkVisibilityState.Collapsed; menu.SetTheme(); menu.MouseUp += new MouseEventHandler(this.menu_MouseUp); }
private void SetItems() { if (this.parentCollection == null || this.parentCollection.Owner == null) { if (this.tabContentLayout == null || this.tabContentLayout.Parent == null) { return; } this.tabContentLayout.Parent.Children.Remove((RadElement)this.tabContentLayout); } else { RadElement contentArea = (RadElement)((RadRibbonBar)this.parentCollection.Owner.ElementTree.Control).RibbonBarElement.TabStripElement.ContentArea; if (this.tabContentLayout == null) { this.tabContentLayout = new ExpandableStackLayout(); this.Items.Owner = (RadElement)this.tabContentLayout; } this.tabContentLayout.CollapseElementsOnResize = true; this.tabContentLayout.UseParentSizeAsAvailableSize = true; this.tabContentLayout.IsInStripMode = true; this.tabContentLayout.Visibility = ElementVisibility.Collapsed; if (contentArea.Children.Contains((RadElement)this.tabContentLayout)) { return; } contentArea.Children.Add((RadElement)this.tabContentLayout); } }
public static void InvalidateAll(RadElement baseElement) { baseElement.InvalidateMeasure(); baseElement.InvalidateArrange(); foreach (RadElement child in baseElement.Children) { ExpandableStackLayout.InvalidateAll(child); } }
protected override SizeF MeasureOverride(SizeF constraint) { if (!this.CollapsingEnabled || this.IsDesignMode || constraint == SizeF.Empty) { return(base.MeasureOverride(constraint)); } ExpandableStackLayout.InvalidateAll((RadElement)this); SizeF allElementsSize = this.GetAllElementsSize(constraint); int count = this.Children.Count; if ((double)allElementsSize.Width >= (double)constraint.Width) { do { int possibleCollapseStep; CollapsibleElement elementToCollapse; do { possibleCollapseStep = -1; elementToCollapse = this.GetElementToCollapse(out possibleCollapseStep); if (elementToCollapse != null) { elementToCollapse.InvalidateMeasure(); elementToCollapse.Measure(constraint); SizeF desiredSize = elementToCollapse.DesiredSize; elementToCollapse.SizeBeforeCollapsing = desiredSize; } else { goto label_11; } }while (!elementToCollapse.CollapseElementToStep(possibleCollapseStep)); ExpandableStackLayout.InvalidateAll((RadElement)elementToCollapse); elementToCollapse.Measure(constraint); SizeF desiredSize1 = elementToCollapse.DesiredSize; elementToCollapse.SizeAfterCollapsing = desiredSize1; ++this.collapsedElementCount; }while ((double)this.GetAllElementsSize(constraint).Width > (double)constraint.Width); } else { for (int index = 0; index < count; ++index) { int possibleExpandStep = -1; CollapsibleElement elementToExpand = this.GetElementToExpand(allElementsSize.Width, constraint.Width, out possibleExpandStep); if (elementToExpand != null && ((double)allElementsSize.Width - (double)elementToExpand.DesiredSize.Width + (double)elementToExpand.SizeBeforeCollapsing.Width <= (double)constraint.Width && elementToExpand.ExpandElementToStep(possibleExpandStep))) { --this.collapsedElementCount; } } } label_11: ExpandableStackLayout.InvalidateAll((RadElement)this); return(this.GetAllElementsSize(constraint)); }
private void CollapseChunkToDropDown() { this.ExpandElementToStep(1); ExpandableStackLayout.InvalidateAll((RadElement)this); this.UpdateLayout(); SizeF size = (SizeF)this.Size; this.elementWithCaptionLayoutPanel.SuspendThemeRefresh(); this.Children.Remove((RadElement)this.elementWithCaptionLayoutPanel); this.elementWithCaptionLayoutPanel.ResumeThemeRefresh(); RadRibbonBarGroup.RadGroupItem radGroupItem = new RadRibbonBarGroup.RadGroupItem(); radGroupItem.AutoSizeMode = RadAutoSizeMode.WrapAroundChildren; radGroupItem.Children.Add((RadElement)this.elementWithCaptionLayoutPanel); radGroupItem.MinSize = new Size(size.ToSize().Width, radGroupItem.MinSize.Height); RadDropDownMenu dropDownMenu = this.dropDownElement.DropDownMenu; RadDropDownMenuElement popupElement = (RadDropDownMenuElement)dropDownMenu.PopupElement; (popupElement.LayoutPanel as StackLayoutPanel).Orientation = this.Orientation; popupElement.Layout.LeftColumnMinWidth = 0; this.dropDownElement.Items.Add((RadItem)radGroupItem); this.dropDownElement.Visibility = ElementVisibility.Visible; this.CollapseStep = 4; dropDownMenu.SetTheme(); }