示例#1
0
        /// <summary>
        /// Function called when dragged window is dropped over already docked window</summary>
        /// <param name="sender">Dockable window being dragged</param>
        /// <param name="e">Drag and drop arguments when window is dropped to be docked to dockpanel</param>
        public void DockDrop(object sender, DockDragDropEventArgs e)
        {
            DockPanel parent = Root;
            DockTo    dockTo = (DockTo)m_dockPreview;

            if (e.Content is TabLayout)
            {
                foreach (DockContent subContent in ((TabLayout)e.Content).Children)
                {
                    ContentSettings contentSettings = subContent.Settings;
                    contentSettings.DockState = DockState.Docked;
                }
            }
            else
            {
                ContentSettings contentSettings = ((DockContent)e.Content).Settings;
                contentSettings.DockState = DockState.Docked;
            }
            switch (dockTo)
            {
            case DockTo.Left:
            case DockTo.Right:
            case DockTo.Top:
            case DockTo.Bottom:
                ((IDockLayout)Parent).Dock(DockedContent, e.Content, dockTo);
                break;

            case DockTo.Center:
                Dock(null, e.Content, dockTo);
                break;
            }
            parent.CheckConsistency();
        }
示例#2
0
 private void Exit_Click(object sender, EventArgs e)
 {
     if (lastFindPos != -1)
     {
         DockTo.SelectionStart  = lastFindPos;
         DockTo.SelectionLength = lastSearchQuery.Length;
         DockTo.SelectionColor  = SystemColors.WindowText;
     }
     this.Visible = false;
     DockTo.Focus();
     DockTo.SelectionLength = 0;
     lastFindPos            = -1;
     lastSearchQuery        = "";
     Query.Text             = "";
 }
示例#3
0
        /// <summary>
        /// Dock the new content next to content</summary>
        /// <param name="nextTo">Dock content to add new content next to</param>
        /// <param name="newContent">New content to be docked</param>
        /// <param name="dockTo">Side of nextTo content where new content should be docked</param>
        public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
        {
            TabLayout tabLayout = newContent as TabLayout;

            if (tabLayout != null)
            {
                IEnumerator <DockContent> contentEnumerator = tabLayout.Children.GetEnumerator();
                while (contentEnumerator.MoveNext())
                {
                    DockContent content = contentEnumerator.Current;
                    tabLayout.RemoveItem(content);
                    AddContent(content);
                    contentEnumerator = tabLayout.Children.GetEnumerator();
                }
            }
            else
            {
                AddContent((DockContent)newContent);
            }
        }
示例#4
0
        private static DockTo ControlGroupToDockTo(Sce.Atf.Applications.StandardControlGroup standardControlGroup)
        {
            DockTo dockTo = DockTo.Top;

            switch (standardControlGroup)
            {
            case Sce.Atf.Applications.StandardControlGroup.Bottom:
                dockTo = DockTo.Bottom;
                break;

            case Sce.Atf.Applications.StandardControlGroup.Center:
                dockTo = DockTo.Center;
                break;

            case Sce.Atf.Applications.StandardControlGroup.CenterPermanent:
                dockTo = DockTo.Center;
                break;

            case Sce.Atf.Applications.StandardControlGroup.Floating:
                dockTo = DockTo.Center;
                break;

            case Sce.Atf.Applications.StandardControlGroup.Left:
                dockTo = DockTo.Left;
                break;

            case Sce.Atf.Applications.StandardControlGroup.Right:
                dockTo = DockTo.Right;
                break;

            case Sce.Atf.Applications.StandardControlGroup.Top:
                dockTo = DockTo.Top;
                break;
            }
            return(dockTo);
        }
示例#5
0
 public static void Add(this ValuesInitializer @this, DockTo value) =>
 @this.Element <BlockElement, DockTo>().SetValue(Dock.ToProperty, value);
示例#6
0
        public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
        {
            IDockLayout targetChild = null;

            if (nextTo != null)
            {
                foreach (IDockLayout child in m_children)
                {
                    if (child.HasChild(nextTo))
                    {
                        targetChild = child;
                        break;
                    }
                }
            }
            if (targetChild == null)
            {
                foreach (IDockLayout child in m_children)
                {
                    if (child.HasDescendant(nextTo))
                    {
                        child.Dock(nextTo, newContent, dockTo);
                        // child was docked, nothing else is necessary
                        return;
                    }
                }
            }
            if (dockTo == DockTo.Center && m_children.Count == 1)
            {
                m_children[0].Dock(null, newContent, dockTo);
            }
            else if (m_children.Count < 2)
            {
                if (dockTo == DockTo.Center)
                {
                    dockTo = DockTo.Right;
                }
                if (dockTo == DockTo.Top || dockTo == DockTo.Bottom)
                {
                    m_orientation = Orientation.Vertical;
                }
                else
                {
                    m_orientation = Orientation.Horizontal;
                }
                DockedWindow newChild = new DockedWindow(Root, newContent);
                if (Children.Count == 0)
                {
                    AddFirstChild(newChild);
                }
                else
                {
                    if (targetChild == null)
                    {
                        if (dockTo == DockTo.Top || dockTo == DockTo.Left)
                        {
                            targetChild = m_children[0];
                        }
                        else
                        {
                            targetChild = m_children[m_children.Count - 1];
                        }
                    }
                    FrameworkElement control = (FrameworkElement)targetChild;
                    int index = m_children.IndexOf(targetChild);
                    if (dockTo == DockTo.Left || dockTo == DockTo.Right)
                    {
                        GridSplitter     splitter  = NewGridSplitter(Orientation.Horizontal);
                        int              column    = (int)control.GetValue(Grid.ColumnProperty);
                        ColumnDefinition oldColumn = ColumnDefinitions[index * 2];

                        ContentSettings contentSettings = (newContent is TabLayout) ? ((TabLayout)newContent).Children[0].Settings : ((DockContent)newContent).Settings;
                        double          totalWidth      = ((FrameworkElement)targetChild).ActualWidth;
                        double          width           = Math.Max(Math.Min(contentSettings.Size.Width, (totalWidth - splitter.Width) / 2), (totalWidth - splitter.Width) / 5);
                        double          ratioNew        = width / totalWidth;
                        double          ratioOld        = (totalWidth - width - splitter.Width) / totalWidth;

                        if (dockTo == DockTo.Left)
                        {
                            ColumnDefinition leftColumn  = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioNew, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinition rightColumn = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioOld, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinitions[index * 2] = leftColumn;
                            ColumnDefinitions.Insert(index * 2 + 1, rightColumn);
                            ColumnDefinitions.Insert(index * 2 + 1, NewColumnDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index, newChild);

                            Children.Insert(index * 2, splitter);
                            Children.Insert(index * 2, newChild);
                        }
                        else
                        {
                            ColumnDefinition leftColumn  = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioOld, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinition rightColumn = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioNew, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinitions[index * 2] = leftColumn;
                            ColumnDefinitions.Insert(index * 2 + 1, rightColumn);
                            ColumnDefinitions.Insert(index * 2 + 1, NewColumnDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index + 1, newChild);
                            Children.Insert(index * 2 + 1, newChild);
                            Children.Insert(index * 2 + 1, splitter);
                        }
                        for (int i = index * 2; i < Children.Count; i++)
                        {
                            Grid.SetColumn(Children[i], i);
                        }
                    }
                    else
                    {
                        GridSplitter  splitter = NewGridSplitter(Orientation.Vertical);
                        int           row      = (int)control.GetValue(Grid.RowProperty);
                        RowDefinition oldRow   = RowDefinitions[index * 2];

                        ContentSettings contentSettings = (newContent is TabLayout) ? ((TabLayout)newContent).Children[0].Settings : ((DockContent)newContent).Settings;
                        double          totalHeight     = ((FrameworkElement)targetChild).ActualHeight;
                        double          height          = Math.Max(Math.Min(contentSettings.Size.Height, (totalHeight - splitter.Height) / 2), (totalHeight - splitter.Height) / 5);
                        double          ratioNew        = height / totalHeight;
                        double          ratioOld        = (totalHeight - height - splitter.Height) / totalHeight;

                        if (dockTo == DockTo.Top)
                        {
                            RowDefinition topRow    = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioNew, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinition bottomRow = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioOld, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinitions[index * 2] = topRow;
                            RowDefinitions.Insert(index * 2 + 1, bottomRow);
                            RowDefinitions.Insert(index * 2 + 1, NewRowDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index, newChild);
                            Children.Insert(index * 2, splitter);
                            Children.Insert(index * 2, newChild);
                        }
                        else
                        {
                            RowDefinition topRow    = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioOld, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinition bottomRow = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioNew, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinitions[index * 2] = topRow;
                            RowDefinitions.Insert(index * 2 + 1, bottomRow);
                            RowDefinitions.Insert(index * 2 + 1, NewRowDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index + 1, newChild);
                            Children.Insert(index * 2 + 1, newChild);
                            Children.Insert(index * 2 + 1, splitter);
                        }
                        for (int i = index * 2; i < Children.Count; i++)
                        {
                            Grid.SetRow(Children[i], i);
                        }
                    }
                }
            }
            else if (dockTo == DockTo.Left || dockTo == DockTo.Right || dockTo == DockTo.Top || dockTo == DockTo.Bottom)
            {
                DockedWindow dockedWindow = (DockedWindow)targetChild;
                int          index        = m_children.IndexOf(targetChild);
                GridLayout   gridLayout   = new GridLayout(Root);
                gridLayout.SetValue(Grid.ColumnProperty, dockedWindow.GetValue(Grid.ColumnProperty));
                gridLayout.SetValue(Grid.RowProperty, dockedWindow.GetValue(Grid.RowProperty));
                Children.Remove(dockedWindow);
                IDockContent content = dockedWindow.DockedContent;
                dockedWindow.Undock(content);
                m_children[index] = gridLayout;
                Children.Insert(index * 2, gridLayout);
                gridLayout.Dock(null, content, DockTo.Center);
                UpdateLayout();
                gridLayout.Dock(content, newContent, dockTo);
            }
            else if (targetChild != null)
            {
                targetChild.Dock(nextTo, newContent, dockTo);
            }
        }
示例#7
0
 /// <summary>
 /// Dock the new content next to content</summary>
 /// <param name="nextTo">Dock content to add new content next to</param>
 /// <param name="newContent">New content to be docked</param>
 /// <param name="dockTo">Side of nextTo content where new content should be docked</param>
 public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
 {
     DockedContent.Dock(nextTo as DockContent, newContent, dockTo);
 }
示例#8
0
 public static void SetTo([NotNull] BlockElement @this, DockTo value) => @this.SetValueSafe(ToProperty, value);
示例#9
0
文件: DockPanel.cs 项目: sbambach/ATF
 /// <summary>
 /// Register content with docking panel</summary>
 /// <param name="content">Content to register</param>
 /// <param name="ucid">Unique name for content (identifier, won't be visible anywhere in UI)</param>
 /// <param name="dockSide">Default docking place (center, left, right, top, bottom)</param>
 /// <returns>New dock content</returns>
 public IDockContent RegisterContent(object content, String ucid, DockTo dockSide) //where T : FrameworkElement, IDockContent
 {
     return RegisterContent(content, ucid, dockSide, String.Empty, null);
 }
示例#10
0
        public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
        {
            IDockLayout targetChild = null;
            if (nextTo != null)
            {
                foreach (IDockLayout child in m_children)
                {
                    if (child.HasChild(nextTo))
                    {
                        targetChild = child;
                        break;
                    }
                }
            }
            if (targetChild == null)
            {
                foreach (IDockLayout child in m_children)
                {
                    if (child.HasDescendant(nextTo))
                    {
                        child.Dock(nextTo, newContent, dockTo);
                        // child was docked, nothing else is necessary
                        return;
                    }
                }
            }
            if (dockTo == DockTo.Center && m_children.Count == 1)
            {
                m_children[0].Dock(null, newContent, dockTo);
            }
            else if (m_children.Count < 2)
            {
                if (dockTo == DockTo.Center)
                {
                    dockTo = DockTo.Right;
                }
                if (dockTo == DockTo.Top || dockTo == DockTo.Bottom)
                {
                    m_orientation = Orientation.Vertical;
                }
                else
                {
                    m_orientation = Orientation.Horizontal;
                }
                DockedWindow newChild = new DockedWindow(Root, newContent);
                if (Children.Count == 0)
                {
                    AddFirstChild(newChild);
                }
                else
                {
                    if (targetChild == null)
                    {
                        if (dockTo == DockTo.Top || dockTo == DockTo.Left)
                        {
                            targetChild = m_children[0];
                        }
                        else
                        {
                            targetChild = m_children[m_children.Count - 1];
                        }
                    }
                    FrameworkElement control = (FrameworkElement)targetChild;
                    int index = m_children.IndexOf(targetChild);
                    if (dockTo == DockTo.Left || dockTo == DockTo.Right)
                    {
                        GridSplitter splitter = NewGridSplitter(Orientation.Horizontal);
                        int column = (int)control.GetValue(Grid.ColumnProperty);
                        ColumnDefinition oldColumn = ColumnDefinitions[index * 2];

                        ContentSettings contentSettings = (newContent is TabLayout) ? ((TabLayout)newContent).Children[0].Settings : ((DockContent)newContent).Settings;
                        double totalWidth = ((FrameworkElement)targetChild).ActualWidth;
                        double width = Math.Max(Math.Min(contentSettings.Size.Width, (totalWidth - splitter.Width) / 2), (totalWidth - splitter.Width) / 5);
                        double ratioNew = width / totalWidth;
                        double ratioOld = (totalWidth - width - splitter.Width) / totalWidth;

                        if (dockTo == DockTo.Left)
                        {
                            ColumnDefinition leftColumn = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioNew, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinition rightColumn = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioOld, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinitions[index * 2] = leftColumn;
                            ColumnDefinitions.Insert(index * 2 + 1, rightColumn);
                            ColumnDefinitions.Insert(index * 2 + 1, NewColumnDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index, newChild);
                            
                            Children.Insert(index * 2, splitter);
                            Children.Insert(index * 2, newChild);
                        }
                        else
                        {
                            ColumnDefinition leftColumn = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioOld, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinition rightColumn = NewColumnDefinition(new GridLength(oldColumn.Width.Value * ratioNew, oldColumn.Width.GridUnitType), m_minGridSize.Width);
                            ColumnDefinitions[index * 2] = leftColumn;
                            ColumnDefinitions.Insert(index * 2 + 1, rightColumn);
                            ColumnDefinitions.Insert(index * 2 + 1, NewColumnDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index + 1, newChild);
                            Children.Insert(index * 2 + 1, newChild);
                            Children.Insert(index * 2 + 1, splitter);
                        }
                        for (int i = index * 2; i < Children.Count; i++)
                        {
                            Grid.SetColumn(Children[i], i);
                        }
                    }
                    else
                    {
                        GridSplitter splitter = NewGridSplitter(Orientation.Vertical);
                        int row = (int)control.GetValue(Grid.RowProperty);
                        RowDefinition oldRow = RowDefinitions[index * 2];

                        ContentSettings contentSettings = (newContent is TabLayout) ? ((TabLayout)newContent).Children[0].Settings : ((DockContent)newContent).Settings;
                        double totalHeight = ((FrameworkElement)targetChild).ActualHeight;
                        double height = Math.Max(Math.Min(contentSettings.Size.Height, (totalHeight - splitter.Height) / 2), (totalHeight - splitter.Height) / 5);
                        double ratioNew = height / totalHeight;
                        double ratioOld = (totalHeight - height - splitter.Height) / totalHeight;

                        if (dockTo == DockTo.Top)
                        {
                            RowDefinition topRow = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioNew, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinition bottomRow = NewRowDefinition(new GridLength(oldRow.Height.Value *ratioOld, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinitions[index * 2] = topRow;
                            RowDefinitions.Insert(index * 2 + 1, bottomRow);
                            RowDefinitions.Insert(index * 2 + 1, NewRowDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index, newChild);
                            Children.Insert(index * 2, splitter);
                            Children.Insert(index * 2, newChild);
                        }
                        else
                        {
                            RowDefinition topRow = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioOld, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinition bottomRow = NewRowDefinition(new GridLength(oldRow.Height.Value * ratioNew, oldRow.Height.GridUnitType), m_minGridSize.Height);
                            RowDefinitions[index * 2] = topRow;
                            RowDefinitions.Insert(index * 2 + 1, bottomRow);
                            RowDefinitions.Insert(index * 2 + 1, NewRowDefinition(new GridLength(1, GridUnitType.Auto), 0));
                            m_children.Insert(index + 1, newChild);
                            Children.Insert(index * 2 + 1, newChild);
                            Children.Insert(index * 2 + 1, splitter);
                        }
                        for (int i = index * 2; i < Children.Count; i++)
                        {
                            Grid.SetRow(Children[i], i);
                        }
                    }
                }
            }
            else if (dockTo == DockTo.Left || dockTo == DockTo.Right || dockTo == DockTo.Top || dockTo == DockTo.Bottom)
            {
                DockedWindow dockedWindow = (DockedWindow)targetChild;
                int index = m_children.IndexOf(targetChild);
                GridLayout gridLayout = new GridLayout(Root);
                gridLayout.SetValue(Grid.ColumnProperty, dockedWindow.GetValue(Grid.ColumnProperty));
                gridLayout.SetValue(Grid.RowProperty, dockedWindow.GetValue(Grid.RowProperty));
                Children.Remove(dockedWindow);
                IDockContent content = dockedWindow.DockedContent;
                dockedWindow.Undock(content);
                m_children[index] = gridLayout;
                Children.Insert(index * 2, gridLayout);
                gridLayout.Dock(null, content, DockTo.Center);
                UpdateLayout();
                gridLayout.Dock(content, newContent, dockTo);
            }
            else if (targetChild != null)
            {
                targetChild.Dock(nextTo, newContent, dockTo);
            }
        }
示例#11
0
 /// <summary>
 /// Constructor</summary>
 /// <param name="defaultDock">Default dock side</param>
 public ContentSettings(DockTo defaultDock)
 {
     DefaultDock = defaultDock;
     Size = new Size(0, 0);
     DockState = DockState.Docked;
 }
 /// <summary>
 /// Constructor</summary>
 /// <param name="defaultDock">Default dock side</param>
 public ContentSettings(DockTo defaultDock)
 {
     DefaultDock = defaultDock;
     Size        = new Size(0, 0);
     DockState   = DockState.Docked;
 }
示例#13
0
        private void FloatingToolStrip_Move(object sender, EventArgs e)
        {
            _toolstrip.LayoutStyle = ToolStripLayoutStyle.HorizontalStackWithOverflow;
            bool CanDock = false;

            if (candockcheck)
            {
                for (int i = 0; i < _parentpanels.Length; i++)
                {
                    Point     ParentPoint = _parentpanels[i].Parent.PointToScreen(_parentpanels[i].Location);
                    Rectangle ParentRect  = _parentpanels[i].Parent.RectangleToScreen(_parentpanels[i].ClientRectangle);

                    /*
                     * Rectangle toprect = new Rectangle(ParentPoint, new Size(_parentpanels[i].Width, _parentpanels[i].Height + _toolstrip.Height)); //_parentcontainer.RectangleToScreen(_parentcontainer.TopToolStripPanel.ClientRectangle);
                     *
                     * Rectangle bottomrect = new Rectangle(new Point(ParentPoint.X, ParentPoint.Y + _parentcontainer.Height - _toolstrip.Height - _parentcontainer.BottomToolStripPanel.Height),
                     *  new Size(_parentcontainer.Width, _parentcontainer.BottomToolStripPanel.Height + _toolstrip.Height));//_parentcontainer.RectangleToScreen(_parentcontainer.BottomToolStripPanel.ClientRectangle);
                     *
                     * Rectangle leftrect = new Rectangle(ParentPoint, new Size(_parentcontainer.LeftToolStripPanel.Width + _toolstrip.Height, _parentcontainer.Height)); //_parentcontainer.RectangleToScreen(_parentcontainer.LeftToolStripPanel.ClientRectangle);
                     *
                     * Rectangle rightrect = new Rectangle(new Point(ParentPoint.X + _parentcontainer.Width - _toolstrip.Height - _parentcontainer.RightToolStripPanel.Width, ParentPoint.Y/*_parentcontainer.Height),
                     *  new Size(_parentcontainer.RightToolStripPanel.Width + _toolstrip.Height, _parentcontainer.Height));//_parentcontainer.RectangleToScreen(_parentcontainer.RightToolStripPanel.ClientRectangle);
                     */
                    //Console.WriteLine(bottomrect.ToString());

                    bool Virtual = false;

                    dockto = DockTo.None;

                    switch (_parentpanels[i].Dock)
                    {
                    case DockStyle.Top:
                        ParentRect.Height += _toolstrip.Height;
                        dockto             = DockTo.Top;
                        break;

                    case DockStyle.Bottom:
                        ParentRect.Height += _toolstrip.Height;
                        ParentRect.Y      += _parentpanels[i].Parent.Height - ParentRect.Height;
                        if (_parentpanels[i].Parent is Form)
                        {
                            ParentRect.Y = ParentRect.Y - GetSystemMetrics(SystemMetric.SM_CXSIZEFRAME) * 2 - GetSystemMetrics(SystemMetric.SM_CYCAPTION);
                        }
                        dockto = DockTo.Bottom;
                        break;

                    case DockStyle.Left:
                        ParentRect.Width += _toolstrip.Height;
                        Virtual           = true;
                        dockto            = DockTo.Left;
                        break;

                    case DockStyle.Right:
                        ParentRect.Width += _toolstrip.Height;
                        ParentRect.X     += _parentpanels[i].Parent.Width - ParentRect.Width;
                        Virtual           = true;
                        if (_parentpanels[i].Parent is Form)
                        {
                            ParentRect.X = ParentRect.X - GetSystemMetrics(SystemMetric.SM_CXSIZEFRAME) * 2;
                        }
                        dockto = DockTo.Right;
                        break;
                    }
                    if (CheckCloss(ParentRect, MousePosition))
                    {
                        DrawRectangleToScreen(_parentpanels[i], Virtual, ParentRect);
                        CanDock   = true;
                        dockindex = i;
                        break;
                    }
                    else
                    {
                        dockindex = -1;
                        dockto    = DockTo.Float;
                    }
                    #region botsu

                    /*
                     * if (CheckCloss(toprect, MousePosition) &&
                     *  _parentcontainer.TopToolStripPanelVisible)
                     * {
                     *  dockto = DockTo.Top;
                     *  DrawRectangleToScreen(_parentcontainer.TopToolStripPanel, false, toprect);
                     *  //MessageBox.Show("TOP");
                     * }
                     * else if (CheckCloss(bottomrect, MousePosition) &&
                     *  _parentcontainer.BottomToolStripPanelVisible)
                     * {
                     *  dockto = DockTo.Bottom;
                     *  DrawRectangleToScreen(_parentcontainer.BottomToolStripPanel, false, bottomrect);
                     *  //MessageBox.Show("Bottom");
                     * }
                     * else if (CheckCloss(leftrect, MousePosition) &&
                     *  _parentcontainer.LeftToolStripPanelVisible)
                     * {
                     *  dockto = DockTo.Left;
                     *  DrawRectangleToScreen(_parentcontainer.LeftToolStripPanel, true, leftrect);
                     *  //MessageBox.Show("Left");
                     * }
                     * else if (CheckCloss(rightrect, MousePosition) &&
                     *  _parentcontainer.RightToolStripPanelVisible)
                     * {
                     *  dockto = DockTo.Right;
                     *  DrawRectangleToScreen(_parentcontainer.RightToolStripPanel, true, rightrect);
                     *  //MessageBox.Show("Right");
                     * }
                     * else
                     * {
                     *  dockto = DockTo.Float;
                     *  rectform.Hide();
                     *  this.Opacity = 1.0;
                     * }
                     * */
                    #endregion
                }
                if (CanDock)
                {
                }
                else
                {
                    rectform.Hide();
                    this.Opacity = 1.0;
                }
            }
            else
            {
                candockcheck = true;
            }
        }
示例#14
0
文件: DockPanel.cs 项目: sbambach/ATF
 /// <summary>
 /// Register content with docking panel</summary>
 /// <param name="content">Content to register</param>
 /// <param name="ucid">Unique name for content (identifier, won't be visible anywhere in UI)</param>
 /// <param name="dockSide">Default docking place (center, left, right, top, bottom)</param>
 /// <param name="header">Header information to display in the docked tab or title bar</param>
 /// <param name="icon">Icon to display</param>
 /// <returns>New dock content</returns>
 public IDockContent RegisterContent(object content, String ucid, DockTo dockSide, String header, ImageSource icon) //where T : FrameworkElement, IDockContent
 {
     if (m_registeredContents.ContainsKey(ucid))
     {
         throw new ArgumentException("Content with given id already exists, id/name must be unique");
     }
     DockContent dockContent = new DockContent(content, ucid, header, icon) { Settings = new ContentSettings(dockSide) };
     dockContent.IsFocusedChanged += DockContent_IsFocusedChanged;
     m_registeredContents.Add(ucid, dockContent);
     RegisteredContents.Add(dockContent);
     return dockContent;
 }
示例#15
0
 public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
 {
     DockedContent.Dock(nextTo as DockContent, newContent, dockTo);
 }
示例#16
0
文件: TabLayout.cs 项目: sbambach/ATF
 /// <summary>
 /// Dock the new content next to content</summary>
 /// <param name="nextTo">Dock content to add new content next to</param>
 /// <param name="newContent">New content to be docked</param>
 /// <param name="dockTo">Side of nextTo content where new content should be docked</param>
 public void Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
 {
     TabLayout tabLayout = newContent as TabLayout;
     if (tabLayout != null)
     {
         IEnumerator<DockContent> contentEnumerator = tabLayout.Children.GetEnumerator();
         while (contentEnumerator.MoveNext())
         {
             DockContent content = contentEnumerator.Current;
             tabLayout.RemoveItem(content);
             AddOneItem((DockContent)nextTo, content);
             contentEnumerator = tabLayout.Children.GetEnumerator();
         }
     }
     else
     {
         AddOneItem((DockContent)nextTo, newContent as DockContent);
     }
     Focus();
     UpdateLayout();
 }
示例#17
0
文件: DockPanel.cs 项目: sbambach/ATF
        /// <summary>
        /// Dock the new content next to content</summary>
        /// <param name="nextTo">Dock content to add new content next to</param>
        /// <param name="newContent">New content to be docked</param>
        /// <param name="dockTo">Side of nextTo content where new content should be docked</param>
        void IDockLayout.Dock(IDockContent nextTo, IDockContent newContent, DockTo dockTo)
        {
            if (GridLayout == null)
            {
                GridLayout = new GridLayout(this);
                GridLayout.Dock(null, newContent, DockTo.Center);

            }
            else
            {
                if (nextTo == null)
                {
                    if (GridLayout.Children.Count < 2)
                    {
                        GridLayout.Dock(null, newContent, dockTo);
                    }
                    else
                    {
                        if (dockTo == DockTo.Center)
                        {
                            dockTo = DockTo.Right;
                        }
                        GridLayout gridLayout = GridLayout;
                        GridLayout = null;
                        gridLayout = new GridLayout(this, gridLayout);
                        GridLayout = gridLayout;
                        gridLayout.Dock(null, newContent, dockTo);
                    }
                }
                else
                {
                    GridLayout.Dock(nextTo, newContent, dockTo);
                }
                CheckConsistency();
            }
        }