Пример #1
0
        /// <summary>
        /// Remove the form
        /// </summary>
        /// <param name="info">info about form to remove</param>
        public void Remove(DockableFormInfo info)
        {
            if (info == null)
            {
                return;
            }

            FormsTabbedView view = HierarchyUtility.GetTabbedView(info.DockableForm);

            if (view != null)
            {
                if (view.Count == 1 && view.IsDocked)
                {
                    _layout.Undock(view);
                }

                if (view.Count == 1)
                {
                    _host.Remove(view.Parent);

                    DockingContainer container = HierarchyUtility.GetClosestDockableContainer(info.DockableForm);
                    container.SetModeEmpty();

                    view.Remove(info);
                }
                else
                {
                    if (view.Remove(info) == false)
                    {
                        if (SelectedFormInfo == info)
                        {
                            SelectedFormInfo = null;
                        }

                        return;
                    }
                }
            }

            if (SelectedFormInfo == info)
            {
                SelectedFormInfo = null;
            }

            _dockableForms.Remove(info);
            info.SelectedChanged   -= OnFormSelectedChanged;
            info.ShowAutoPanel     -= OnShowFormAutoPanel;
            info.ExplicitDisposing -= OnInfoDisposing;

            if (info.IsAutoHideMode)
            {
                _autohide.ArrangeAutoButtonsPanels();
            }

            info.Dispose();
        }
Пример #2
0
        /// <summary>
        /// Create floating container for the view
        /// </summary>
        /// <param name="view">view for which to create floating container</param>
        /// <param name="bounds">bounds of the floating container</param>
        /// <returns>floating container</returns>
        public DockingContainer CreateFloatingContainer(FormsTabbedView view, Rectangle bounds)
        {
            DockingContainer container = new DockingContainer();

            _host.AddFirst(container);

            container.Bounds = bounds;

            container.SetModeSingleChild(view);

            if (EnumUtility.Contains(view.AllowedDock, DockAllowed.None))
            {
                SetViewDock(view, DockStyle.None, DockStyle.None, DockableMode.None);
            }
            else if (EnumUtility.Contains(view.AllowedDock, DockAllowed.Left))
            {
                DockControl(container, null, DockStyle.Left, DockableMode.Outer);
            }
            else if (EnumUtility.Contains(view.AllowedDock, DockAllowed.Right))
            {
                DockControl(container, null, DockStyle.Right, DockableMode.Outer);
            }
            else if (EnumUtility.Contains(view.AllowedDock, DockAllowed.Top))
            {
                DockControl(container, null, DockStyle.Top, DockableMode.Outer);
            }
            else if (EnumUtility.Contains(view.AllowedDock, DockAllowed.Bottom))
            {
                DockControl(container, null, DockStyle.Bottom, DockableMode.Outer);
            }
            else if (EnumUtility.Contains(view.AllowedDock, DockAllowed.Fill))
            {
                DockControl(container, null, DockStyle.Fill, DockableMode.Inner);
            }
            else
            {
                _host.Remove(container);
                throw new NotSupportedException("Err");   // invalid allowed dock
            }

            return(container);
        }
Пример #3
0
        /// <summary>
        /// Auto-show the given view
        /// </summary>
        /// <param name="view">view to show</param>
        public void UnsetAutoHideMode(FormsTabbedView view)
        {
            AutoHidePanel    panel     = (AutoHidePanel)view.Parent;
            DockingContainer container = panel.RestoreParent;

            DockStyle logicalDock = DockStyle.None;

            if (LeftAutohideButtons.Remove(panel))
            {
                logicalDock = DockStyle.Left;
            }
            else if (RightAutohideButtons.Remove(panel))
            {
                logicalDock = DockStyle.Right;
            }
            else if (TopAutohideButtons.Remove(panel))
            {
                logicalDock = DockStyle.Top;
            }
            else if (BottomAutohideButtons.Remove(panel))
            {
                logicalDock = DockStyle.Bottom;
            }
            else
            {
                Debug.Fail("Panel not found");
            }

            _host.Remove(panel);

            container.SetModeSingleChild(view);

            OnSetHostContainerDock(view, logicalDock);
            view.IsAutoHideMode        = false;
            view.PagesPanel.AutoHidden = false;

            ShowRestoreContainers(panel);

            ArrangeAutoButtonsPanels();

            _autoShowPanel = null;
        }