Пример #1
0
        /// <summary>
        /// Initializes an inner docked control for the specified position.
        /// </summary>
        /// <param name="pos">Dock position.</param>
        protected virtual void SetupChildDock(Pos pos)
        {
            if (m_DockedTabControl == null)
            {
                m_DockedTabControl = new DockedTabControl(this);
                m_DockedTabControl.TabRemoved += OnTabRemoved;
                m_DockedTabControl.TabStripPosition = Pos.Bottom;
                m_DockedTabControl.TitleBarVisible = true;
            }

            Dock = pos;

            Pos sizeDir;
            if (pos == Pos.Right) sizeDir = Pos.Left;
            else if (pos == Pos.Left) sizeDir = Pos.Right;
            else if (pos == Pos.Top) sizeDir = Pos.Bottom;
            else if (pos == Pos.Bottom) sizeDir = Pos.Top;
            else throw new ArgumentException("Invalid dock", "pos");

            if (m_Sizer != null)
                m_Sizer.Dispose();
            m_Sizer = new Resizer(this);
            m_Sizer.Dock = sizeDir;
            m_Sizer.ResizeDir = sizeDir;
            m_Sizer.SetSize(2, 2);
        }
Пример #2
0
        public override bool DragAndDrop_HandleDrop(Package p, int x, int y)
        {
            Point pos = CanvasPosToLocal(new Point(x, y));
            Pos   dir = GetDroppedTabDirection(pos.X, pos.Y);

            DockedTabControl addTo = m_DockedTabControl;

            if (dir == Pos.Fill && addTo == null)
            {
                return(false);
            }

            if (dir != Pos.Fill)
            {
                DockBase dock = GetChildDock(dir);
                addTo = dock.m_DockedTabControl;

                if (!m_DropFar)
                {
                    dock.BringToFront();
                }
                else
                {
                    dock.SendToBack();
                }
            }

            if (p.Name == "TabButtonMove")
            {
                TabButton tabButton = DragAndDrop.SourceControl as TabButton;
                if (null == tabButton)
                {
                    return(false);
                }

                addTo.AddPage(tabButton);
            }

            if (p.Name == "TabWindowMove")
            {
                DockedTabControl tabControl = DragAndDrop.SourceControl as DockedTabControl;
                if (null == tabControl)
                {
                    return(false);
                }

                if (tabControl == addTo)
                {
                    return(false);
                }

                tabControl.MoveTabsTo(addTo);
            }

            Invalidate();

            return(true);
        }
Пример #3
0
 public void MoveTabsTo(DockedTabControl target)
 {
     var children = TabStrip.Children.ToArray(); // copy because collection will be modified
     foreach (Base child in children)
     {
         TabButton button = child as TabButton;
         if (button == null)
             continue;
         target.AddPage(button);
     }
     Invalidate();
 }
Пример #4
0
        /// <summary>
        /// Initializes an inner docked control for the specified position.
        /// </summary>
        /// <param name="pos">Dock position.</param>
        protected virtual void SetupChildDock(Dock pos)
        {
            if (m_DockedTabControl == null)
            {
                m_DockedTabControl                  = new DockedTabControl(this);
                m_DockedTabControl.TabRemoved      += OnTabRemoved;
                m_DockedTabControl.TabStripPosition = Dock.Bottom;
                m_DockedTabControl.TitleBarVisible  = true;
            }

            Dock = pos;

            Dock sizeDir;

            if (pos == Dock.Right)
            {
                sizeDir = Dock.Left;
            }
            else if (pos == Dock.Left)
            {
                sizeDir = Dock.Right;
            }
            else if (pos == Dock.Top)
            {
                sizeDir = Dock.Bottom;
            }
            else if (pos == Dock.Bottom)
            {
                sizeDir = Dock.Top;
            }
            else
            {
                throw new ArgumentException("Invalid dock", "pos");
            }

            if (m_Sizer != null)
            {
                m_Sizer.Dispose();
            }

            m_Sizer           = new Resizer(this);
            m_Sizer.Dock      = sizeDir;
            m_Sizer.ResizeDir = sizeDir;
            if (sizeDir == Dock.Left || sizeDir == Dock.Right)
            {
                m_Sizer.Width = 2;
            }
            else
            {
                m_Sizer.Height = 2;
            }
        }
Пример #5
0
        public void MoveTabsTo(DockedTabControl target)
        {
            var children = TabStrip.Children.ToArray(); // copy because collection will be modified

            foreach (ControlBase child in children)
            {
                TabButton button = child as TabButton;
                if (button == null)
                {
                    continue;
                }
                target.AddPage(button);
            }
            Invalidate();
        }
Пример #6
0
        /// <summary>
        /// Initializes an inner docked control for the specified position.
        /// </summary>
        /// <param name="pos">Dock position.</param>
        protected virtual void SetupChildDock(Pos pos)
        {
            if (m_DockedTabControl == null)
            {
                m_DockedTabControl                  = new DockedTabControl(this);
                m_DockedTabControl.TabRemoved      += OnTabRemoved;
                m_DockedTabControl.TabStripPosition = Pos.Bottom;
                m_DockedTabControl.TitleBarVisible  = true;
            }

            Dock = pos;

            Pos sizeDir;

            if (pos == Pos.Right)
            {
                sizeDir = Pos.Left;
            }
            else if (pos == Pos.Left)
            {
                sizeDir = Pos.Right;
            }
            else if (pos == Pos.Top)
            {
                sizeDir = Pos.Bottom;
            }
            else if (pos == Pos.Bottom)
            {
                sizeDir = Pos.Top;
            }
            else
            {
                throw new ArgumentException("Invalid dock", "pos");
            }

            if (m_Sizer != null)
            {
                m_Sizer.Dispose();
            }

            m_Sizer = new Resizer(this)
            {
                Dock      = sizeDir,
                ResizeDir = sizeDir
            };
            m_Sizer.SetSize(2, 2);
        }