private void OnSlidePanelDisposed(object sender, EventArgs e) { // Unhook from events so the control can be garbage collected _slidePanel.SplitterMoveRect -= OnSlidePanelSeparatorMoveRect; _slidePanel.SplitterMoved -= OnSlidePanelSeparatorMoved; _slidePanel.SplitterMoving -= OnSlidePanelSeparatorMoving; _slidePanel.PageCloseClicked -= OnSlidePanelPageCloseClicked; _slidePanel.PageAutoHiddenClicked -= OnSlidePanelPageAutoHiddenClicked; _slidePanel.PageDropDownClicked -= OnSlidePanelPageDropDownClicked; _slidePanel.Disposed -= OnPanelDisposed; // Events are generated from the parent docking manager KryptonDockingManager dockingManager = DockingManager; if (dockingManager != null) { // Only generate the removed event if we have already fired the adding event. if (_panelEventFired) { DockspaceEventArgs dockspaceArgs = new DockspaceEventArgs(_slidePanel.DockspaceControl, null); DockspaceSeparatorEventArgs separatorArgs = new DockspaceSeparatorEventArgs(_slidePanel.SeparatorControl, null); dockingManager.RaiseDockspaceRemoved(dockspaceArgs); dockingManager.RaiseDockspaceSeparatorRemoved(separatorArgs); } } // Make sure the groups panel is also disposed if (!_panel.IsDisposed) { _panel.Dispose(); } }
private KryptonDockingDockspace CreateAndInsertDockspace(int index, string name, Size size) { // Create a dockspace separator do the dockspace can be resized KryptonDockspaceSeparator separatorControl = new KryptonDockspaceSeparator(Edge, false); separatorControl.SplitterMoveRect += OnDockspaceSeparatorMoveRect; separatorControl.SplitterMoved += OnDockspaceSeparatorMoved; separatorControl.SplitterNotMoved += OnDockspaceSeparatorNotMoved; separatorControl.Disposed += OnDockspaceSeparatorDisposed; // Create and add the dockspace to the collection KryptonDockingDockspace dockspaceElement = new KryptonDockingDockspace(name, Edge, size); dockspaceElement.HasVisibleCells += OnDockingDockspaceHasVisibleCells; dockspaceElement.HasNoVisibleCells += OnDockingDockspaceHasNoVisibleCells; dockspaceElement.Disposed += OnDockingDockspaceDisposed; InternalInsert(index, dockspaceElement); // Create lookup associations _lookupSeparator.Add(separatorControl, dockspaceElement); _lookupDockspace.Add(dockspaceElement, separatorControl); // Events are generated from the parent docking manager KryptonDockingManager dockingManager = DockingManager; if (dockingManager != null) { // Allow the dockspace and dockspace separator to be customized by event handlers DockspaceEventArgs spaceArgs = new DockspaceEventArgs(dockspaceElement.DockspaceControl, dockspaceElement); DockspaceSeparatorEventArgs separatorArgs = new DockspaceSeparatorEventArgs(separatorControl, dockspaceElement); dockingManager.RaiseDockspaceAdding(spaceArgs); dockingManager.RaiseDockspaceSeparatorAdding(separatorArgs); } if (index == 0) { InsertAtOuterMost(separatorControl); InsertAtOuterMost(dockspaceElement.DockspaceControl); } else if (index == (Count - 1)) { InsertAtInnerMost(dockspaceElement.DockspaceControl); InsertAtInnerMost(separatorControl); } else { KryptonDockingDockspace target = this[index + 1] as KryptonDockingDockspace; InsertAfter(dockspaceElement.DockspaceControl, target.DockspaceControl); InsertAfter(separatorControl, target.DockspaceControl); } return(dockspaceElement); }
private KryptonDockingAutoHiddenGroup CreateAndInsertAutoHiddenGroup(int index, string name) { // Create the new auto hidden group instance and add into our collection KryptonDockingAutoHiddenGroup groupElement = new KryptonDockingAutoHiddenGroup(name, Edge); groupElement.PageClicked += OnDockingAutoHiddenGroupClicked; groupElement.PageHoverStart += OnDockingAutoHiddenGroupHoverStart; groupElement.PageHoverEnd += OnDockingAutoHiddenGroupHoverEnd; groupElement.Disposed += OnDockingAutoHiddenGroupDisposed; InternalInsert(index, groupElement); // Events are generated from the parent docking manager KryptonDockingManager dockingManager = DockingManager; if (dockingManager != null) { // The hosting panel/sliding panel dockspace/separator are not shown until the first group is added, so only // generate the events for allowing customization of the when there is a chance they will become displayed. if (!_panelEventFired) { AutoHiddenGroupPanelEventArgs panelArgs = new AutoHiddenGroupPanelEventArgs(_panel, this); DockspaceEventArgs dockspaceArgs = new DockspaceEventArgs(_slidePanel.DockspaceControl, null); DockspaceSeparatorEventArgs separatorArgs = new DockspaceSeparatorEventArgs(_slidePanel.SeparatorControl, null); dockingManager.RaiseAutoHiddenGroupPanelAdding(panelArgs); dockingManager.RaiseDockspaceAdding(dockspaceArgs); dockingManager.RaiseDockspaceSeparatorAdding(separatorArgs); _panelEventFired = true; } // Allow the auto hidden group to be customized by event handlers AutoHiddenGroupEventArgs groupArgs = new AutoHiddenGroupEventArgs(groupElement.AutoHiddenGroupControl, groupElement); dockingManager.RaiseAutoHiddenGroupAdding(groupArgs); } // Append to the child collection of groups _panel.Controls.Add(groupElement.AutoHiddenGroupControl); _panel.Controls.SetChildIndex(groupElement.AutoHiddenGroupControl, (_panel.Controls.Count - 1) - index); // When adding the first group the panel will not be visible and so we need to // force the calculation of a new size so it makes itself visible. _panel.PerformLayout(); return(groupElement); }
private void OnDockspaceSeparatorDisposed(object sender, EventArgs e) { // Unhook from events so the control can be garbage collected KryptonDockspaceSeparator separatorControl = (KryptonDockspaceSeparator)sender; separatorControl.SplitterMoveRect -= OnDockspaceSeparatorMoveRect; separatorControl.SplitterMoved -= OnDockspaceSeparatorMoved; separatorControl.SplitterNotMoved -= OnDockspaceSeparatorNotMoved; separatorControl.Disposed -= OnDockspaceSeparatorDisposed; // Events are generated from the parent docking manager KryptonDockingManager dockingManager = DockingManager; if (dockingManager != null) { // Allow the dockspace and dockspace separator to be customized by event handlers DockspaceSeparatorEventArgs separatorArgs = new DockspaceSeparatorEventArgs(separatorControl, _lookupSeparator[separatorControl]); dockingManager.RaiseDockspaceSeparatorRemoved(separatorArgs); } // Remove lookup association _lookupSeparator.Remove(separatorControl); }