/// <include file='CodeDoc\DockPane.xml' path='//CodeDoc/Class[@name="DockPane"]/Method[@name="AddToDockList"]/*'/> /// <include file='CodeDoc\DockPane.xml' path='//CodeDoc/Class[@name="DockPane"]/Method[@name="AddToDockList(IDockListContainer)"]/*'/> public DockPane AddToDockList(IDockListContainer container) { if (container == null) { throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NullContainer")); } DockAlignment alignment; if (container.DockState == DockState.DockLeft || container.DockState == DockState.DockRight) { alignment = DockAlignment.Bottom; } else { alignment = DockAlignment.Right; } return(AddToDockList(container, container.DockList.GetDefaultPrevPane(this), alignment, 0.5)); }
private void InternalAddToDockList(IDockListContainer container, DockPane prevPane, DockAlignment alignment, double proportion) { if ((container.DockState == DockState.Float) != IsFloat) { throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.InvalidContainer")); } int count = container.DockList.Count; if (container.DockList.Contains(this)) { count--; } if (prevPane == null && count > 0) { throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NullPrevPane")); } if (prevPane != null && !container.DockList.Contains(prevPane)) { throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NoPrevPane")); } if (prevPane == this) { throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.SelfPrevPane")); } IDockListContainer oldContainer = DockListContainer; DockState oldDockState = DockState; container.DockList.Add(this); NestedDockingStatus.SetStatus(container.DockList, prevPane, alignment, proportion); if (DockHelper.IsDockWindowState(DockState)) { m_dockState = container.DockState; } RefreshStateChange(oldContainer, oldDockState); }
/// <include file='CodeDoc\DockPane.xml' path='//CodeDoc/Class[@name="DockPane"]/Method[@name="AddToDockList(IDockListContainer, DockPane, DockAlignment, double)"]/*'/> public DockPane AddToDockList(IDockListContainer container, DockPane prevPane, DockAlignment alignment, double proportion) { if (container == null) { throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NullContainer")); } if (container.IsFloat == this.IsFloat) { InternalAddToDockList(container, prevPane, alignment, proportion); return(this); } IDockableWindow firstContent = GetFirstContent(container.DockState); if (firstContent == null) { return(null); } DockPane pane; DockPanel.DummyContent.DockPanel = DockPanel; if (container.IsFloat) { pane = DockPanel.DockPaneFactory.CreateDockPane(DockPanel.DummyContent, (FloatWindow)container, true); } else { pane = DockPanel.DockPaneFactory.CreateDockPane(DockPanel.DummyContent, container.DockState, true); } pane.AddToDockList(container, prevPane, alignment, proportion); SetVisibleContentsToPane(pane); DockPanel.DummyContent.DockPanel = null; return(pane); }
private void InternalSetDockState(DockState value) { if (m_dockState == value) { return; } DockState oldDockState = m_dockState; IDockListContainer oldContainer = DockListContainer; m_dockState = value; SuspendRefreshStateChange(); if (!IsFloat) { DockWindow = DockPanel.DockWindows[DockState]; } else if (FloatWindow == null) { FloatWindow = DockPanel.FloatWindowFactory.CreateFloatWindow(DockPanel, this); } ResumeRefreshStateChange(oldContainer, oldDockState); }
private void RefreshStateChange(IDockListContainer oldContainer, DockState oldDockState) { lock (this) { if (IsRefreshStateChangeSuspended) return; SuspendRefreshStateChange(); } SetParent(); if (ActiveContent != null) ActiveContent.DockHandler.SetDockState(ActiveContent.DockHandler.IsHidden, DockState, ActiveContent.DockHandler.Pane); foreach (IDockContent content in Contents) { if (content.DockHandler.Pane == this) content.DockHandler.SetDockState(content.DockHandler.IsHidden, DockState, content.DockHandler.Pane); } if (oldContainer != null) { if (oldContainer.DockState == oldDockState && !oldContainer.IsDisposed) ((Control)oldContainer).PerformLayout(); } if (DockHelper.IsDockStateAutoHide(oldDockState)) DockPanel.AutoHideWindow.RefreshActiveContent(); if (DockListContainer.DockState == DockState) ((Control)DockListContainer).PerformLayout(); if (DockHelper.IsDockStateAutoHide(DockState)) DockPanel.AutoHideWindow.RefreshActiveContent(); if (DockHelper.IsDockStateAutoHide(oldDockState) || DockHelper.IsDockStateAutoHide(DockState)) { DockPanel.RefreshAutoHideStrip(); DockPanel.PerformLayout(); } DockPanel.RefreshActiveWindow(); if (oldDockState != DockState) OnDockStateChanged(EventArgs.Empty); ResumeRefreshStateChange(); }
private void ResumeRefreshStateChange(IDockListContainer oldContainer, DockState oldDockState) { ResumeRefreshStateChange(); RefreshStateChange(oldContainer, oldDockState); }
private void InternalAddToDockList(IDockListContainer container, DockPane prevPane, DockAlignment alignment, double proportion) { if ((container.DockState == DockState.Float) != IsFloat) throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.InvalidContainer")); int count = container.DockList.Count; if (container.DockList.Contains(this)) count --; if (prevPane == null && count > 0) throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NullPrevPane")); if (prevPane != null && !container.DockList.Contains(prevPane)) throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NoPrevPane")); if (prevPane == this) throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.SelfPrevPane")); IDockListContainer oldContainer = DockListContainer; DockState oldDockState = DockState; container.DockList.Add(this); NestedDockingStatus.SetStatus(container.DockList, prevPane, alignment, proportion); if (DockHelper.IsDockWindowState(DockState)) m_dockState = container.DockState; RefreshStateChange(oldContainer, oldDockState); }
/// <include file='CodeDoc\DockPane.xml' path='//CodeDoc/Class[@name="DockPane"]/Method[@name="AddToDockList(IDockListContainer, DockPane, DockAlignment, double)"]/*'/> public DockPane AddToDockList(IDockListContainer container, DockPane prevPane, DockAlignment alignment, double proportion) { if (container == null) throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NullContainer")); if (container.IsFloat == this.IsFloat) { InternalAddToDockList(container, prevPane, alignment, proportion); return this; } IDockContent firstContent = GetFirstContent(container.DockState); if (firstContent == null) return null; DockPane pane; DockPanel.DummyContent.DockPanel = DockPanel; if (container.IsFloat) pane = DockPanel.DockPaneFactory.CreateDockPane(DockPanel.DummyContent, (FloatWindow)container, true); else pane = DockPanel.DockPaneFactory.CreateDockPane(DockPanel.DummyContent, container.DockState, true); pane.AddToDockList(container, prevPane, alignment, proportion); SetVisibleContentsToPane(pane); DockPanel.DummyContent.DockPanel = null; return pane; }
/// <include file='CodeDoc\DockPane.xml' path='//CodeDoc/Class[@name="DockPane"]/Method[@name="AddToDockList"]/*'/> /// <include file='CodeDoc\DockPane.xml' path='//CodeDoc/Class[@name="DockPane"]/Method[@name="AddToDockList(IDockListContainer)"]/*'/> public DockPane AddToDockList(IDockListContainer container) { if (container == null) throw new InvalidOperationException(ResourceHelper.GetString("DockPane.AddToDockList.NullContainer")); DockAlignment alignment; if (container.DockState == DockState.DockLeft || container.DockState == DockState.DockRight) alignment = DockAlignment.Bottom; else alignment = DockAlignment.Right; return AddToDockList(container, container.DockList.GetDefaultPrevPane(this), alignment, 0.5); }
internal DockList(IDockListContainer container) { m_container = container; m_displayingList = new DisplayingDockList(this); }
internal DockList(IDockListContainer container) { m_container = container; m_displayingList = new DisplayingDockList(this); }
private void Content_OnEndDrag(bool abort) { User32.SetCursor(DragControl.Cursor.Handle); if (abort) { return; } IDockableWindow content = DragControl as IDockableWindow; if (!DockOutline.FloatWindowBounds.IsEmpty) { DockPane pane = content.DockHandler.DockPanel.DockPaneFactory.CreateDockPane(content, DockOutline.FloatWindowBounds, true); pane.Activate(); } else if (DockOutline.DockTo is DockPane) { DockPane paneTo = DockOutline.DockTo as DockPane; if (DockOutline.Dock == DockStyle.Fill) { bool samePane = (content.DockHandler.Pane == paneTo); if (!samePane) { content.DockHandler.Pane = paneTo; } if (DockOutline.ContentIndex == -1 || !samePane) { paneTo.SetContentIndex(content, DockOutline.ContentIndex); } else { DockContentCollection contents = paneTo.Contents; int oldIndex = contents.IndexOf(content); int newIndex = DockOutline.ContentIndex; if (oldIndex < newIndex) { newIndex += 1; if (newIndex > contents.Count - 1) { newIndex = -1; } } paneTo.SetContentIndex(content, newIndex); } content.DockHandler.Activate(); } else { DockPane pane = content.DockHandler.DockPanel.DockPaneFactory.CreateDockPane(content, paneTo.DockState, true); IDockListContainer container = paneTo.DockListContainer; if (DockOutline.Dock == DockStyle.Left) { pane.AddToDockList(container, paneTo, DockAlignment.Left, 0.5); } else if (DockOutline.Dock == DockStyle.Right) { pane.AddToDockList(container, paneTo, DockAlignment.Right, 0.5); } else if (DockOutline.Dock == DockStyle.Top) { pane.AddToDockList(container, paneTo, DockAlignment.Top, 0.5); } else if (DockOutline.Dock == DockStyle.Bottom) { pane.AddToDockList(container, paneTo, DockAlignment.Bottom, 0.5); } pane.DockState = paneTo.DockState; pane.Activate(); } } else if (DockOutline.DockTo is DockContainer) { DockPane pane; DockContainer dockPanel = content.DockHandler.DockPanel; SetDockWindow(); if (DockOutline.Dock == DockStyle.Top) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockTop, true); } else if (DockOutline.Dock == DockStyle.Bottom) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockBottom, true); } else if (DockOutline.Dock == DockStyle.Left) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockLeft, true); } else if (DockOutline.Dock == DockStyle.Right) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockRight, true); } else if (DockOutline.Dock == DockStyle.Fill) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.Document, true); } else { return; } pane.Activate(); } }
private void RefreshStateChange(IDockListContainer oldContainer, DockState oldDockState) { lock (this) { if (IsRefreshStateChangeSuspended) { return; } SuspendRefreshStateChange(); } SetParent(); if (ActiveContent != null) { ActiveContent.DockHandler.SetDockState(ActiveContent.DockHandler.IsHidden, DockState, ActiveContent.DockHandler.Pane); } foreach (IDockableWindow content in Contents) { if (content.DockHandler.Pane == this) { content.DockHandler.SetDockState(content.DockHandler.IsHidden, DockState, content.DockHandler.Pane); } } if (oldContainer != null) { if (oldContainer.DockState == oldDockState && !oldContainer.IsDisposed) { ((Control)oldContainer).PerformLayout(); } } if (DockHelper.IsDockStateAutoHide(oldDockState)) { DockPanel.AutoHideWindow.RefreshActiveContent(); } if (DockListContainer.DockState == DockState) { ((Control)DockListContainer).PerformLayout(); } if (DockHelper.IsDockStateAutoHide(DockState)) { DockPanel.AutoHideWindow.RefreshActiveContent(); } if (DockHelper.IsDockStateAutoHide(oldDockState) || DockHelper.IsDockStateAutoHide(DockState)) { DockPanel.RefreshAutoHideStrip(); DockPanel.PerformLayout(); } DockPanel.RefreshActiveWindow(); if (oldDockState != DockState) { OnDockStateChanged(EventArgs.Empty); } ResumeRefreshStateChange(); }
private void ResumeRefreshStateChange(IDockListContainer oldContainer, DockState oldDockState) { ResumeRefreshStateChange(); RefreshStateChange(oldContainer, oldDockState); }
private void Content_OnEndDrag(bool abort) { User32.SetCursor(DragControl.Cursor.Handle); if (abort) { return; } DockContent content = ((DockPane)DragControl).ActiveContent; if (DropTarget.DropTo is DockPane) { DockPane paneTo = DropTarget.DropTo as DockPane; if (DropTarget.Dock == DockStyle.Fill) { bool samePane = (content.Pane == paneTo); if (!samePane) { content.Pane = paneTo; } if (DropTarget.ContentIndex == -1 || !samePane) { paneTo.SetContentIndex(content, DropTarget.ContentIndex); } else { DockContentCollection contents = paneTo.Contents; int oldIndex = contents.IndexOf(content); int newIndex = DropTarget.ContentIndex; if (oldIndex < newIndex) { newIndex += 1; if (newIndex > contents.Count - 1) { newIndex = -1; } } paneTo.SetContentIndex(content, newIndex); } content.Activate(); } else { DockPane pane = content.DockPanel.DockPaneFactory.CreateDockPane(content, paneTo.DockState, true); IDockListContainer container = paneTo.DockListContainer; if (DropTarget.Dock == DockStyle.Left) { pane.AddToDockList(container, paneTo, DockAlignment.Left, 0.5); } else if (DropTarget.Dock == DockStyle.Right) { pane.AddToDockList(container, paneTo, DockAlignment.Right, 0.5); } else if (DropTarget.Dock == DockStyle.Top) { pane.AddToDockList(container, paneTo, DockAlignment.Top, 0.5); } else if (DropTarget.Dock == DockStyle.Bottom) { pane.AddToDockList(container, paneTo, DockAlignment.Bottom, 0.5); } pane.DockState = paneTo.DockState; pane.Activate(); } } else if (DropTarget.DropTo is DockPanel) { DockPane pane; DockPanel dockPanel = content.DockPanel; if (DropTarget.Dock == DockStyle.Top) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockTop, true); } else if (DropTarget.Dock == DockStyle.Bottom) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockBottom, true); } else if (DropTarget.Dock == DockStyle.Left) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockLeft, true); } else if (DropTarget.Dock == DockStyle.Right) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.DockRight, true); } else if (DropTarget.Dock == DockStyle.Fill) { pane = dockPanel.DockPaneFactory.CreateDockPane(content, DockState.Document, true); } else { return; } pane.Activate(); } else if (IsDockStateValid(DockState.Float)) { Point ptMouse = Control.MousePosition; Size size = FloatWindow.DefaultWindowSize; Point location; if (content.DockState == DockState.Document) { location = new Point(ptMouse.X + m_mouseOffset.X, ptMouse.Y + m_mouseOffset.Y); } else { location = new Point(ptMouse.X + m_mouseOffset.X, ptMouse.Y + m_mouseOffset.Y - size.Height); } if (ptMouse.X > location.X + size.Width) { location.X += ptMouse.X - (location.X + size.Width) + OutlineBorderWidth; } DockPane pane = content.DockPanel.DockPaneFactory.CreateDockPane(content, new Rectangle(location, size), true); pane.Activate(); } }