internal void SetStatus(DockList list, DockPane prevPane, DockAlignment alignment, double proportion) { m_dockList = list; m_prevPane = prevPane; m_alignment = alignment; m_proportion = proportion; }
internal DockWindow(DockPanel dockPanel, DockState dockState) { m_dockList = new DockList(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 DockWindowSplitter(); 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; } DockList oldDockList = (pane.DockListContainer == null) ? null : pane.DockListContainer.DockList; if (oldDockList != null) { oldDockList.InternalRemove(pane); } InnerList.Add(pane); if (oldDockList != null) { oldDockList.CheckFloatWindowDispose(); } }
private void MergeDockList(DisplayingDockList dockListFrom, DockList dockListTo, DockPane prevPane, DockAlignment alignment, double proportion) { if (dockListFrom.Count == 0) { return; } int count = dockListFrom.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] = dockListFrom[i]; prevPanes[i] = dockListFrom[i].NestedDockingStatus.PrevPane; alignments[i] = dockListFrom[i].NestedDockingStatus.Alignment; proportions[i] = dockListFrom[i].NestedDockingStatus.Proportion; } DockPane pane = panes[0].AddToDockList(dockListTo.Container, prevPane, alignment, proportion); panes[0].DockState = dockListTo.DockState; panes[0].Activate(); 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].AddToDockList(dockListTo.Container, prevPanes[i], alignments[i], proportions[i]); panes[i].DockState = dockListTo.DockState; panes[i].Activate(); } }
private void InternalConstruct(DockPanel dockPanel, DockPane pane, bool boundsSpecified, Rectangle bounds) { if (dockPanel == null) { throw(new ArgumentNullException(ResourceHelper.GetString("FloatWindow.Constructor.NullDockPanel"))); } m_dockList = new DockList(this); FormBorderStyle = FormBorderStyle.SizableToolWindow; ShowInTaskbar = false; SuspendLayout(); if (boundsSpecified) { Bounds = bounds; StartPosition = FormStartPosition.Manual; } else { StartPosition = FormStartPosition.WindowsDefaultLocation; } m_dummyControl = new DummyControl(); m_dummyControl.Bounds = Rectangle.Empty; Controls.Add(m_dummyControl); m_dockPanel = dockPanel; Owner = DockPanel.FindForm(); DockPanel.AddFloatWindow(this); if (pane != null) { pane.FloatWindow = this; } ResumeLayout(); }
internal DisplayingDockList(DockList dockList) { m_dockList = dockList; }
private void FloatWindow_OnEndDrag(bool abort) { if (abort) { return; } FloatWindow floatWindow = (FloatWindow)DragControl; if (DropTarget.DropTo == null) { Rectangle rect = DragControl.Bounds; rect.X = Control.MousePosition.X + m_mouseOffset.X; rect.Y = Control.MousePosition.Y + m_mouseOffset.Y; DragControl.Bounds = rect; } else if (DropTarget.DropTo is DockPane) { DockPane paneTo = DropTarget.DropTo as DockPane; if (DropTarget.Dock == DockStyle.Fill) { for (int i = floatWindow.DockList.Count - 1; i >= 0; i--) { DockPane pane = floatWindow.DockList[i]; for (int j = pane.Contents.Count - 1; j >= 0; j--) { DockContent c = pane.Contents[j]; c.Pane = paneTo; if (DropTarget.ContentIndex != -1) { paneTo.SetContentIndex(c, DropTarget.ContentIndex); } c.Activate(); } } } else { DockAlignment alignment = DockAlignment.Left; if (DropTarget.Dock == DockStyle.Left) { alignment = DockAlignment.Left; } else if (DropTarget.Dock == DockStyle.Right) { alignment = DockAlignment.Right; } else if (DropTarget.Dock == DockStyle.Top) { alignment = DockAlignment.Top; } else if (DropTarget.Dock == DockStyle.Bottom) { alignment = DockAlignment.Bottom; } MergeDockList(floatWindow.DisplayingList, paneTo.DockListContainer.DockList, paneTo, alignment, 0.5); } } else if (DropTarget.DropTo is DockPanel) { DockList dockListTo = null; if (DropTarget.Dock == DockStyle.Top) { dockListTo = floatWindow.DockPanel.DockWindows[DockState.DockTop].DockList; } else if (DropTarget.Dock == DockStyle.Bottom) { dockListTo = floatWindow.DockPanel.DockWindows[DockState.DockBottom].DockList; } else if (DropTarget.Dock == DockStyle.Left) { dockListTo = floatWindow.DockPanel.DockWindows[DockState.DockLeft].DockList; } else if (DropTarget.Dock == DockStyle.Right) { dockListTo = floatWindow.DockPanel.DockWindows[DockState.DockRight].DockList; } else if (DropTarget.Dock == DockStyle.Fill) { dockListTo = floatWindow.DockPanel.DockWindows[DockState.Document].DockList; } DockPane prevPane = null; for (int i = dockListTo.Count - 1; i >= 0; i--) { if (dockListTo[i] != floatWindow.DisplayingList[0]) { prevPane = dockListTo[i]; } } MergeDockList(floatWindow.DisplayingList, dockListTo, prevPane, DockAlignment.Left, 0.5); } }