/// <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(); }
/// <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); }
/// <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; }