public override void LayoutCore() { const int indent = 18; Layouter.PutAt(this, CollapseButton, CollapseButton.Box.Margins.Left); Layouter.PutRight(CollapseButton, HMembers, indent - CollapseButton.Bounds.Size.X); CollapseButton.Bounds.Location.Y += (HMembers.Bounds.Size.Y - CollapseButton.Bounds.Size.Y) / 2; if (VMembers.Children.Count > 0) { CollapseButton.Visible = true; if (this.Collapsed) { VMembers.Visible = false; this.Bounds.Size.X = HMembers.Bounds.Right - this.Bounds.Location.X; this.Bounds.Size.Y = HMembers.Bounds.Bottom - this.Bounds.Location.Y; } else { VMembers.Visible = true; Layouter.PutUnder(HMembers, VMembers); this.Bounds.Size.X = HMembers.Bounds.Right - this.Bounds.Location.X; this.Bounds.Size.Y = VMembers.Bounds.Bottom - this.Bounds.Location.Y; Layouter.GrowToInclude(this, HMembers); Layouter.GrowToInclude(this, VMembers); this.Bounds.Size.Add(1); } } else { CollapseButton.Visible = false; VMembers.Visible = false; Layouter.PutAround(CollapseButton, HMembers, this); this.Bounds.Size.X = HMembers.Bounds.Right - this.Bounds.Location.X; this.Bounds.Size.Y = HMembers.Bounds.Bottom - this.Bounds.Location.Y; } }