private void InternalRemove(DockPane pane) { if (!Contains(pane)) { return; } NestedDockingStatus statusPane = pane.NestedDockingStatus; DockPane lastNestedPane = null; for (int i = Count - 1; i > IndexOf(pane); i--) { if (this[i].NestedDockingStatus.PreviousPane == pane) { lastNestedPane = this[i]; break; } } if (lastNestedPane != null) { int indexLastNestedPane = IndexOf(lastNestedPane); Items.Remove(lastNestedPane); Items[IndexOf(pane)] = lastNestedPane; NestedDockingStatus lastNestedDock = lastNestedPane.NestedDockingStatus; lastNestedDock.SetStatus(this, statusPane.PreviousPane, statusPane.Alignment, statusPane.Proportion); for (int i = indexLastNestedPane - 1; i > IndexOf(lastNestedPane); i--) { NestedDockingStatus status = this[i].NestedDockingStatus; if (status.PreviousPane == pane) { status.SetStatus(this, lastNestedPane, status.Alignment, status.Proportion); } } } else { Items.Remove(pane); } statusPane.SetStatus(null, null, DockAlignment.Left, 0.5); statusPane.SetDisplayingStatus(false, null, DockAlignment.Left, 0.5); statusPane.SetDisplayingBounds(Rectangle.Empty, Rectangle.Empty, Rectangle.Empty); }
private void InternalRemove(DockPane pane) { checked { if (base.Contains(pane)) { NestedDockingStatus nestedDockingStatus = pane.NestedDockingStatus; DockPane dockPane = null; for (int i = base.Count - 1; i > base.IndexOf(pane); i--) { if (base[i].NestedDockingStatus.PreviousPane == pane) { dockPane = base[i]; break; } } if (dockPane != null) { int num = base.IndexOf(dockPane); base.Items.Remove(dockPane); base.Items[base.IndexOf(pane)] = dockPane; NestedDockingStatus nestedDockingStatus2 = dockPane.NestedDockingStatus; nestedDockingStatus2.SetStatus(this, nestedDockingStatus.PreviousPane, nestedDockingStatus.Alignment, nestedDockingStatus.Proportion); for (int i = num - 1; i > base.IndexOf(dockPane); i--) { NestedDockingStatus nestedDockingStatus3 = base[i].NestedDockingStatus; if (nestedDockingStatus3.PreviousPane == pane) { nestedDockingStatus3.SetStatus(this, dockPane, nestedDockingStatus3.Alignment, nestedDockingStatus3.Proportion); } } } else { base.Items.Remove(pane); } nestedDockingStatus.SetStatus(null, null, DockAlignment.Left, 0.5); nestedDockingStatus.SetDisplayingStatus(false, null, DockAlignment.Left, 0.5); nestedDockingStatus.SetDisplayingBounds(Rectangle.Empty, Rectangle.Empty, Rectangle.Empty); } } }
private void CalculateBounds() { if (Count == 0) { return; } this[0].NestedDockingStatus.SetDisplayingBounds(Container.DisplayingRectangle, Container.DisplayingRectangle, Rectangle.Empty); for (int i = 1; i < Count; i++) { DockPane pane = this[i]; NestedDockingStatus status = pane.NestedDockingStatus; DockPane prevPane = status.DisplayingPreviousPane; NestedDockingStatus statusPrev = prevPane.NestedDockingStatus; Rectangle rect = statusPrev.PaneBounds; bool bVerticalSplitter = (status.DisplayingAlignment == DockAlignment.Left || status.DisplayingAlignment == DockAlignment.Right); Rectangle rectThis = rect; Rectangle rectPrev = rect; Rectangle rectSplitter = rect; if (status.DisplayingAlignment == DockAlignment.Left) { rectThis.Width = (int)((double)rect.Width * status.DisplayingProportion) - (Measures.SplitterSize / 2); rectSplitter.X = rectThis.X + rectThis.Width; rectSplitter.Width = Measures.SplitterSize; rectPrev.X = rectSplitter.X + rectSplitter.Width; rectPrev.Width = rect.Width - rectThis.Width - rectSplitter.Width; } else if (status.DisplayingAlignment == DockAlignment.Right) { rectPrev.Width = (rect.Width - (int)((double)rect.Width * status.DisplayingProportion)) - (Measures.SplitterSize / 2); rectSplitter.X = rectPrev.X + rectPrev.Width; rectSplitter.Width = Measures.SplitterSize; rectThis.X = rectSplitter.X + rectSplitter.Width; rectThis.Width = rect.Width - rectPrev.Width - rectSplitter.Width; } else if (status.DisplayingAlignment == DockAlignment.Top) { rectThis.Height = (int)((double)rect.Height * status.DisplayingProportion) - (Measures.SplitterSize / 2); rectSplitter.Y = rectThis.Y + rectThis.Height; rectSplitter.Height = Measures.SplitterSize; rectPrev.Y = rectSplitter.Y + rectSplitter.Height; rectPrev.Height = rect.Height - rectThis.Height - rectSplitter.Height; } else if (status.DisplayingAlignment == DockAlignment.Bottom) { rectPrev.Height = (rect.Height - (int)((double)rect.Height * status.DisplayingProportion)) - (Measures.SplitterSize / 2); rectSplitter.Y = rectPrev.Y + rectPrev.Height; rectSplitter.Height = Measures.SplitterSize; rectThis.Y = rectSplitter.Y + rectSplitter.Height; rectThis.Height = rect.Height - rectPrev.Height - rectSplitter.Height; } else { rectThis = Rectangle.Empty; } rectSplitter.Intersect(rect); rectThis.Intersect(rect); rectPrev.Intersect(rect); status.SetDisplayingBounds(rect, rectThis, rectSplitter); statusPrev.SetDisplayingBounds(statusPrev.LogicalBounds, rectPrev, statusPrev.SplitterBounds); } }
private void CalculateBounds() { checked { if (base.Count != 0) { base[0].NestedDockingStatus.SetDisplayingBounds(this.Container.DisplayingRectangle, this.Container.DisplayingRectangle, Rectangle.Empty); for (int i = 1; i < base.Count; i++) { DockPane dockPane = base[i]; NestedDockingStatus nestedDockingStatus = dockPane.NestedDockingStatus; DockPane displayingPreviousPane = nestedDockingStatus.DisplayingPreviousPane; NestedDockingStatus nestedDockingStatus2 = displayingPreviousPane.NestedDockingStatus; Rectangle paneBounds = nestedDockingStatus2.PaneBounds; bool arg_88_0 = nestedDockingStatus.DisplayingAlignment == DockAlignment.Left || nestedDockingStatus.DisplayingAlignment == DockAlignment.Right; Rectangle paneBounds2 = paneBounds; Rectangle paneBounds3 = paneBounds; Rectangle splitterBounds = paneBounds; if (nestedDockingStatus.DisplayingAlignment == DockAlignment.Left) { paneBounds2.Width = (int)unchecked ((double)paneBounds.Width * nestedDockingStatus.DisplayingProportion) - 2; splitterBounds.X = paneBounds2.X + paneBounds2.Width; splitterBounds.Width = 4; paneBounds3.X = splitterBounds.X + splitterBounds.Width; paneBounds3.Width = paneBounds.Width - paneBounds2.Width - splitterBounds.Width; } else { if (nestedDockingStatus.DisplayingAlignment == DockAlignment.Right) { paneBounds3.Width = paneBounds.Width - (int)unchecked ((double)paneBounds.Width * nestedDockingStatus.DisplayingProportion) - 2; splitterBounds.X = paneBounds3.X + paneBounds3.Width; splitterBounds.Width = 4; paneBounds2.X = splitterBounds.X + splitterBounds.Width; paneBounds2.Width = paneBounds.Width - paneBounds3.Width - splitterBounds.Width; } else { if (nestedDockingStatus.DisplayingAlignment == DockAlignment.Top) { paneBounds2.Height = (int)unchecked ((double)paneBounds.Height * nestedDockingStatus.DisplayingProportion) - 2; splitterBounds.Y = paneBounds2.Y + paneBounds2.Height; splitterBounds.Height = 4; paneBounds3.Y = splitterBounds.Y + splitterBounds.Height; paneBounds3.Height = paneBounds.Height - paneBounds2.Height - splitterBounds.Height; } else { if (nestedDockingStatus.DisplayingAlignment == DockAlignment.Bottom) { paneBounds3.Height = paneBounds.Height - (int)unchecked ((double)paneBounds.Height * nestedDockingStatus.DisplayingProportion) - 2; splitterBounds.Y = paneBounds3.Y + paneBounds3.Height; splitterBounds.Height = 4; paneBounds2.Y = splitterBounds.Y + splitterBounds.Height; paneBounds2.Height = paneBounds.Height - paneBounds3.Height - splitterBounds.Height; } else { paneBounds2 = Rectangle.Empty; } } } } splitterBounds.Intersect(paneBounds); paneBounds2.Intersect(paneBounds); paneBounds3.Intersect(paneBounds); nestedDockingStatus.SetDisplayingBounds(paneBounds, paneBounds2, splitterBounds); nestedDockingStatus2.SetDisplayingBounds(nestedDockingStatus2.LogicalBounds, paneBounds3, nestedDockingStatus2.SplitterBounds); } } } }