Beispiel #1
0
        public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
        {
            if (dockStyle == DockStyle.Fill)
            {
                bool flag = Pane == pane;
                if (!flag)
                {
                    Pane = pane;
                }
                if (contentIndex == -1 || !flag)
                {
                    pane.SetContentIndex(Content, contentIndex);
                }
                else
                {
                    DockContentCollection contents = pane.Contents;
                    int num  = contents.IndexOf(Content);
                    int num2 = contentIndex;
                    if (num < num2)
                    {
                        num2++;
                        if (num2 > contents.Count - 1)
                        {
                            num2 = -1;
                        }
                    }
                    pane.SetContentIndex(Content, num2);
                }
            }
            else
            {
                DockPane dockPane = DockPanel.DockPaneFactory.CreateDockPane(Content, pane.DockState, show: true);
                INestedPanesContainer nestedPanesContainer = pane.NestedPanesContainer;
                switch (dockStyle)
                {
                case DockStyle.Left:
                    dockPane.DockTo(nestedPanesContainer, pane, DockAlignment.Left, 0.5);
                    break;

                case DockStyle.Right:
                    dockPane.DockTo(nestedPanesContainer, pane, DockAlignment.Right, 0.5);
                    break;

                case DockStyle.Top:
                    dockPane.DockTo(nestedPanesContainer, pane, DockAlignment.Top, 0.5);
                    break;

                case DockStyle.Bottom:
                    dockPane.DockTo(nestedPanesContainer, pane, DockAlignment.Bottom, 0.5);
                    break;
                }
                dockPane.DockState = pane.DockState;
            }
        }
Beispiel #2
0
 public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
 {
     if (dockStyle == DockStyle.Fill)
     {
         bool flag = this.Pane == pane;
         if (!flag)
         {
             this.Pane = pane;
         }
         if (!((contentIndex != -1) && flag))
         {
             pane.SetContentIndex(this.Content, contentIndex);
         }
         else
         {
             DockContentCollection contents = pane.Contents;
             int index = contents.IndexOf(this.Content);
             int num2  = contentIndex;
             if (index < num2)
             {
                 num2++;
                 if (num2 > (contents.Count - 1))
                 {
                     num2 = -1;
                 }
             }
             pane.SetContentIndex(this.Content, num2);
         }
     }
     else
     {
         DockPane pane2 = this.DockPanel.DockPaneFactory.CreateDockPane(this.Content, pane.DockState, true);
         INestedPanesContainer nestedPanesContainer = pane.NestedPanesContainer;
         if (dockStyle == DockStyle.Left)
         {
             pane2.DockTo(nestedPanesContainer, pane, DockAlignment.Left, 0.5);
         }
         else if (dockStyle == DockStyle.Right)
         {
             pane2.DockTo(nestedPanesContainer, pane, DockAlignment.Right, 0.5);
         }
         else if (dockStyle == DockStyle.Top)
         {
             pane2.DockTo(nestedPanesContainer, pane, DockAlignment.Top, 0.5);
         }
         else if (dockStyle == DockStyle.Bottom)
         {
             pane2.DockTo(nestedPanesContainer, pane, DockAlignment.Bottom, 0.5);
         }
         pane2.DockState = pane.DockState;
     }
 }
Beispiel #3
0
 private void SetPaneContentIndex(DockPane pane, int contentIndex, bool samePane)
 {
     if (contentIndex == -1 || !samePane)
     {
         pane.SetContentIndex(this.Content, contentIndex);
     }
     else
     {
         DockContentCollection contents = pane.Contents;
         int num  = contents.IndexOf(this.Content);
         int num2 = contentIndex;
         if (num < num2)
         {
             num2++;
             if (num2 > contents.Count - 1)
             {
                 num2 = -1;
             }
         }
         pane.SetContentIndex(this.Content, num2);
     }
 }
Beispiel #4
0
        /// <include file='CodeDoc\DockContent.xml' path='//CodeDoc/Class[@name="DockContent"]/Method[@name="Show(DockPane, DockContent)"]/*'/>
        public void Show(DockPane pane, DockContent beforeContent)
        {
            if (pane == null)
            {
                throw(new ArgumentNullException(ResourceHelper.GetString("DockContent.Show.NullPane")));
            }

            if (beforeContent != null && pane.Contents.IndexOf(beforeContent) == -1)
            {
                throw(new ArgumentException(ResourceHelper.GetString("DockContent.Show.InvalidBeforeContent")));
            }

            DockPanel = pane.DockPanel;
            Pane      = pane;
            pane.SetContentIndex(this, pane.Contents.IndexOf(beforeContent));
            Show();
        }
Beispiel #5
0
 public void Show(DockPane pane, IDockContent beforeContent)
 {
     if (pane == null)
     {
         throw new ArgumentNullException(Strings.DockContentHandler_Show_NullPane);
     }
     if (beforeContent != null && pane.Contents.IndexOf(beforeContent) == -1)
     {
         throw new ArgumentException(Strings.DockContentHandler_Show_InvalidBeforeContent);
     }
     pane.DockPanel.SuspendLayout(true);
     this.DockPanel = pane.DockPanel;
     this.Pane      = pane;
     pane.SetContentIndex(this.Content, pane.Contents.IndexOf(beforeContent));
     this.Show();
     pane.DockPanel.ResumeLayout(true, true);
 }
Beispiel #6
0
        public void Show(DockPane pane, DockContent beforeContent)
        {
            if (pane == null)
            {
                throw new InvalidOperationException("InvalidValue");
            }

            if (beforeContent != null && pane.Contents.IndexOf(beforeContent) == -1)
            {
                throw new InvalidOperationException("InvalidValue");
            }

            DockPanel = pane.DockPanel;
            Pane      = pane;
            pane.SetContentIndex(this, pane.Contents.IndexOf(beforeContent));
            Show();
        }
Beispiel #7
0
        public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
        {
            if (dockStyle == DockStyle.Fill)
            {
                for (int num = NestedPanes.Count - 1; num >= 0; num--)
                {
                    DockPane dockPane = NestedPanes[num];
                    for (int num2 = dockPane.Contents.Count - 1; num2 >= 0; num2--)
                    {
                        IDockContent dockContent = dockPane.Contents[num2];
                        dockContent.DockHandler.Pane = pane;
                        if (contentIndex != -1)
                        {
                            pane.SetContentIndex(dockContent, contentIndex);
                        }
                        dockContent.DockHandler.Activate();
                    }
                }
            }
            else
            {
                DockAlignment alignment = DockAlignment.Left;
                switch (dockStyle)
                {
                case DockStyle.Left:
                    alignment = DockAlignment.Left;
                    break;

                case DockStyle.Right:
                    alignment = DockAlignment.Right;
                    break;

                case DockStyle.Top:
                    alignment = DockAlignment.Top;
                    break;

                case DockStyle.Bottom:
                    alignment = DockAlignment.Bottom;
                    break;
                }
                MergeNestedPanes(VisibleNestedPanes, pane.NestedPanesContainer.NestedPanes, pane, alignment, 0.5);
            }
        }
Beispiel #8
0
        public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
        {
            if (dockStyle == DockStyle.Fill)
            {
                for (int i = NestedPanes.Count - 1; i >= 0; i--)
                {
                    DockPane paneFrom = NestedPanes[i];
                    for (int j = paneFrom.Contents.Count - 1; j >= 0; j--)
                    {
                        IDockContent c = paneFrom.Contents[j];
                        c.DockHandler.Pane = pane;
                        if (contentIndex != -1)
                        {
                            pane.SetContentIndex(c, contentIndex);
                        }
                        c.DockHandler.Activate();
                    }
                }
            }
            else
            {
                DockAlignment alignment = DockAlignment.Left;
                if (dockStyle == DockStyle.Left)
                {
                    alignment = DockAlignment.Left;
                }
                else if (dockStyle == DockStyle.Right)
                {
                    alignment = DockAlignment.Right;
                }
                else if (dockStyle == DockStyle.Top)
                {
                    alignment = DockAlignment.Top;
                }
                else if (dockStyle == DockStyle.Bottom)
                {
                    alignment = DockAlignment.Bottom;
                }

                MergeNestedPanes(VisibleNestedPanes, pane.NestedPanesContainer.NestedPanes, pane, alignment, 0.5);
            }
        }
        public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
        {
            if (dockStyle == DockStyle.Fill)
            {
                bool samePane = (Pane == pane);
                if (!samePane)
                {
                    Pane = pane;
                }

                int visiblePanes   = 0;
                int convertedIndex = 0;
                while (visiblePanes <= contentIndex && convertedIndex < Pane.Contents.Count)
                {
                    DockContent window = Pane.Contents[convertedIndex] as DockContent;
                    if (window != null && !window.IsHidden)
                    {
                        ++visiblePanes;
                    }

                    ++convertedIndex;
                }

                contentIndex = Math.Min(Math.Max(0, convertedIndex - 1), Pane.Contents.Count - 1);

                if (contentIndex == -1 || !samePane)
                {
                    pane.SetContentIndex(Content, contentIndex);
                }
                else
                {
                    DockContentCollection contents = pane.Contents;
                    int oldIndex = contents.IndexOf(Content);
                    int newIndex = contentIndex;
                    if (oldIndex < newIndex)
                    {
                        newIndex += 1;
                        if (newIndex > contents.Count - 1)
                        {
                            newIndex = -1;
                        }
                    }
                    pane.SetContentIndex(Content, newIndex);
                }
            }
            else
            {
                DockPane paneFrom = DockPanel.Theme.Extender.DockPaneFactory.CreateDockPane(Content, pane.DockState, true);
                INestedPanesContainer container = pane.NestedPanesContainer;
                if (dockStyle == DockStyle.Left)
                {
                    paneFrom.DockTo(container, pane, DockAlignment.Left, 0.5);
                }
                else if (dockStyle == DockStyle.Right)
                {
                    paneFrom.DockTo(container, pane, DockAlignment.Right, 0.5);
                }
                else if (dockStyle == DockStyle.Top)
                {
                    paneFrom.DockTo(container, pane, DockAlignment.Top, 0.5);
                }
                else if (dockStyle == DockStyle.Bottom)
                {
                    paneFrom.DockTo(container, pane, DockAlignment.Bottom, 0.5);
                }

                paneFrom.DockState = pane.DockState;
            }

            if (PatchController.EnableActivateOnDockFix == true)
            {
                Pane.ActiveContent = Content;
            }
        }
        private void Pane_OnEndDrag(bool abort)
        {
            User32.SetCursor(DragControl.Cursor.Handle);

            if (abort)
            {
                return;
            }

            DockPane pane = (DockPane)DragControl;

            if (DropTarget.DropTo is DockPane)
            {
                DockPane paneTo = DropTarget.DropTo as DockPane;

                if (DropTarget.Dock == DockStyle.Fill)
                {
                    for (int i = pane.Contents.Count - 1; i >= 0; i--)
                    {
                        DockContent c = pane.Contents[i];
                        c.Pane = paneTo;
                        if (DropTarget.ContentIndex != -1)
                        {
                            paneTo.SetContentIndex(c, DropTarget.ContentIndex);
                        }
                        c.Activate();
                    }
                }
                else
                {
                    if (DropTarget.Dock == DockStyle.Left)
                    {
                        pane.AddToDockList(paneTo.DockListContainer, paneTo, DockAlignment.Left, 0.5);
                    }
                    else if (DropTarget.Dock == DockStyle.Right)
                    {
                        pane.AddToDockList(paneTo.DockListContainer, paneTo, DockAlignment.Right, 0.5);
                    }
                    else if (DropTarget.Dock == DockStyle.Top)
                    {
                        pane.AddToDockList(paneTo.DockListContainer, paneTo, DockAlignment.Top, 0.5);
                    }
                    else if (DropTarget.Dock == DockStyle.Bottom)
                    {
                        pane.AddToDockList(paneTo.DockListContainer, paneTo, DockAlignment.Bottom, 0.5);
                    }

                    pane.DockState = paneTo.DockState;
                    pane.Activate();
                }
            }
            else if (DropTarget.DropTo is DockPanel)
            {
                if (DropTarget.Dock == DockStyle.Top)
                {
                    pane.DockState = DockState.DockTop;
                }
                else if (DropTarget.Dock == DockStyle.Bottom)
                {
                    pane.DockState = DockState.DockBottom;
                }
                else if (DropTarget.Dock == DockStyle.Left)
                {
                    pane.DockState = DockState.DockLeft;
                }
                else if (DropTarget.Dock == DockStyle.Right)
                {
                    pane.DockState = DockState.DockRight;
                }
                else if (DropTarget.Dock == DockStyle.Fill)
                {
                    pane.DockState = DockState.Document;
                }

                pane.Activate();
            }
            else if (IsDockStateValid(DockState.Float))
            {
                Point ptMouse = Control.MousePosition;

                Point location = new Point(ptMouse.X + m_mouseOffset.X, ptMouse.Y + m_mouseOffset.Y);
                Size  size;
                bool  createFloatWindow = true;
                if (pane.FloatWindow == null)
                {
                    size = FloatWindow.DefaultWindowSize;
                }
                else if (pane.FloatWindow.DockList.Count == 1)
                {
                    size = pane.FloatWindow.Size;
                    createFloatWindow = false;
                }
                else
                {
                    size = FloatWindow.DefaultWindowSize;
                }

                if (ptMouse.X > location.X + size.Width)
                {
                    location.X += ptMouse.X - (location.X + size.Width) + OutlineBorderWidth;
                }

                if (createFloatWindow)
                {
                    pane.FloatWindow = pane.DockPanel.FloatWindowFactory.CreateFloatWindow(pane.DockPanel, pane, new Rectangle(location, size));
                }
                else
                {
                    pane.FloatWindow.Bounds = new Rectangle(location, size);
                }

                pane.DockState = DockState.Float;
                pane.Activate();
            }
        }
        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();
            }
        }
        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);
            }
        }