internal void SetStatus(NestedPaneCollection nestedPanes, DockPane previousPane, DockAlignment alignment, double proportion) { m_nestedPanes = nestedPanes; m_previousPane = previousPane; m_alignment = alignment; m_proportion = proportion; }
public void DockTo(DockPanel panel, DockStyle dockStyle) { if (panel != this.DockPanel) { throw new ArgumentException(Strings.IDockDragSource_DockTo_InvalidPanel, "panel"); } NestedPaneCollection nestedPaneCollection = null; if (dockStyle == DockStyle.Top) { nestedPaneCollection = this.DockPanel.DockWindows[DockState.DockTop].NestedPanes; } else { if (dockStyle == DockStyle.Bottom) { nestedPaneCollection = this.DockPanel.DockWindows[DockState.DockBottom].NestedPanes; } else { if (dockStyle == DockStyle.Left) { nestedPaneCollection = this.DockPanel.DockWindows[DockState.DockLeft].NestedPanes; } else { if (dockStyle == DockStyle.Right) { nestedPaneCollection = this.DockPanel.DockWindows[DockState.DockRight].NestedPanes; } else { if (dockStyle == DockStyle.Fill) { nestedPaneCollection = this.DockPanel.DockWindows[DockState.Document].NestedPanes; } } } } } DockPane prevPane = null; checked { for (int i = nestedPaneCollection.Count - 1; i >= 0; i--) { if (nestedPaneCollection[i] != this.VisibleNestedPanes[0]) { prevPane = nestedPaneCollection[i]; } } FloatWindow.MergeNestedPanes(this.VisibleNestedPanes, nestedPaneCollection, prevPane, DockAlignment.Left, 0.5); } }
internal DockWindow(DockPanel dockPanel, DockState dockState) { this.m_nestedPanes = new NestedPaneCollection(this); this.m_dockPanel = dockPanel; this.m_dockState = dockState; base.Visible = false; base.SuspendLayout(); if (this.DockState == DockState.DockLeft || this.DockState == DockState.DockRight || this.DockState == DockState.DockTop || this.DockState == DockState.DockBottom) { this.m_splitter = new DockWindow.SplitterControl(); base.Controls.Add(this.m_splitter); } if (this.DockState == DockState.DockLeft) { this.Dock = DockStyle.Left; this.m_splitter.Dock = DockStyle.Right; } else { if (this.DockState == DockState.DockRight) { this.Dock = DockStyle.Right; this.m_splitter.Dock = DockStyle.Left; } else { if (this.DockState == DockState.DockTop) { this.Dock = DockStyle.Top; this.m_splitter.Dock = DockStyle.Bottom; } else { if (this.DockState == DockState.DockBottom) { this.Dock = DockStyle.Bottom; this.m_splitter.Dock = DockStyle.Top; } else { if (this.DockState == DockState.Document) { this.Dock = DockStyle.Fill; } } } } } base.ResumeLayout(); }
internal void Add(DockPane pane) { if (pane != null) { NestedPaneCollection nestedPaneCollection = (pane.NestedPanesContainer == null) ? null : pane.NestedPanesContainer.NestedPanes; if (nestedPaneCollection != null) { nestedPaneCollection.InternalRemove(pane); } base.Items.Add(pane); if (nestedPaneCollection != null) { nestedPaneCollection.CheckFloatWindowDispose(); } } }
internal DockWindow(DockPanel dockPanel, DockState dockState) { m_nestedPanes = new NestedPaneCollection(this); m_dockPanel = dockPanel; m_dockState = dockState; Visible = false; SuspendLayout(); if (DockState == DockState.DockLeft || DockState == DockState.DockRight || DockState == DockState.DockTop || DockState == DockState.DockBottom) { m_splitter = new SplitterControl(); Controls.Add(m_splitter); } if (DockState == DockState.DockLeft) { Dock = DockStyle.Left; m_splitter.Dock = DockStyle.Right; } else if (DockState == DockState.DockRight) { Dock = DockStyle.Right; m_splitter.Dock = DockStyle.Left; } else if (DockState == DockState.DockTop) { Dock = DockStyle.Top; m_splitter.Dock = DockStyle.Bottom; } else if (DockState == DockState.DockBottom) { Dock = DockStyle.Bottom; m_splitter.Dock = DockStyle.Top; } else if (DockState == DockState.Document) { Dock = DockStyle.Fill; } ResumeLayout(); }
internal void Add(DockPane pane) { if (pane == null) { return; } NestedPaneCollection oldNestedPanes = (pane.NestedPanesContainer == null) ? null : pane.NestedPanesContainer.NestedPanes; if (oldNestedPanes != null) { oldNestedPanes.InternalRemove(pane); } Items.Add(pane); if (oldNestedPanes != null) { oldNestedPanes.CheckFloatWindowDispose(); } }
private void InternalConstruct(DockPanel dockPanel, DockPane pane, bool boundsSpecified, Rectangle bounds) { if (dockPanel == null) { throw(new ArgumentNullException(Strings.FloatWindow_Constructor_NullDockPanel)); } m_nestedPanes = new NestedPaneCollection(this); FormBorderStyle = FormBorderStyle.SizableToolWindow; ShowInTaskbar = false; if (dockPanel.RightToLeft != RightToLeft) { RightToLeft = dockPanel.RightToLeft; } if (RightToLeftLayout != dockPanel.RightToLeftLayout) { RightToLeftLayout = dockPanel.RightToLeftLayout; } SuspendLayout(); if (boundsSpecified) { Bounds = bounds; StartPosition = FormStartPosition.Manual; } else { StartPosition = FormStartPosition.WindowsDefaultLocation; Size = dockPanel.DefaultFloatWindowSize; } m_dockPanel = dockPanel; Owner = DockPanel.FindForm(); DockPanel.AddFloatWindow(this); if (pane != null) { pane.FloatWindow = this; } ResumeLayout(); }
private static void MergeNestedPanes(VisibleNestedPaneCollection nestedPanesFrom, NestedPaneCollection nestedPanesTo, DockPane prevPane, DockAlignment alignment, double proportion) { if (nestedPanesFrom.Count == 0) { return; } int count = nestedPanesFrom.Count; DockPane[] panes = new DockPane[count]; DockPane[] prevPanes = new DockPane[count]; DockAlignment[] alignments = new DockAlignment[count]; double[] proportions = new double[count]; for (int i = 0; i < count; i++) { panes[i] = nestedPanesFrom[i]; prevPanes[i] = nestedPanesFrom[i].NestedDockingStatus.PreviousPane; alignments[i] = nestedPanesFrom[i].NestedDockingStatus.Alignment; proportions[i] = nestedPanesFrom[i].NestedDockingStatus.Proportion; } DockPane pane = panes[0].DockTo(nestedPanesTo.Container, prevPane, alignment, proportion); panes[0].DockState = nestedPanesTo.DockState; for (int i = 1; i < count; i++) { for (int j = i; j < count; j++) { if (prevPanes[j] == panes[i - 1]) { prevPanes[j] = pane; } } pane = panes[i].DockTo(nestedPanesTo.Container, prevPanes[i], alignments[i], proportions[i]); panes[i].DockState = nestedPanesTo.DockState; } }
internal VisibleNestedPaneCollection(NestedPaneCollection nestedPanes) : base(new List <DockPane>()) { m_nestedPanes = nestedPanes; }
private static void MergeNestedPanes(VisibleNestedPaneCollection nestedPanesFrom, NestedPaneCollection nestedPanesTo, DockPane prevPane, DockAlignment alignment, double proportion) { checked { if (nestedPanesFrom.Count != 0) { int count = nestedPanesFrom.Count; DockPane[] array = new DockPane[count]; DockPane[] array2 = new DockPane[count]; DockAlignment[] array3 = new DockAlignment[count]; double[] array4 = new double[count]; for (int i = 0; i < count; i++) { array[i] = nestedPanesFrom[i]; array2[i] = nestedPanesFrom[i].NestedDockingStatus.PreviousPane; array3[i] = nestedPanesFrom[i].NestedDockingStatus.Alignment; array4[i] = nestedPanesFrom[i].NestedDockingStatus.Proportion; } DockPane dockPane = array[0].DockTo(nestedPanesTo.Container, prevPane, alignment, proportion); array[0].DockState = nestedPanesTo.DockState; for (int i = 1; i < count; i++) { for (int j = i; j < count; j++) { if (array2[j] == array[i - 1]) { array2[j] = dockPane; } } dockPane = array[i].DockTo(nestedPanesTo.Container, array2[i], array3[i], array4[i]); array[i].DockState = nestedPanesTo.DockState; } } } }