/// <summary> /// Loads the docking layout. /// </summary> /// <param name="storedLayout">The stored layout.</param> /// <inheritdoc cref="DockSerializer.Load"/> public void LoadLayout(XElement storedLayout) { try { DockStrategy.Begin(); var oldItems = Items.ToList(); DockSerializer.Load(this, storedLayout); var newItems = Items.ToList(); // Screen conduction for items closed in Load(). foreach (var dockTabItem in oldItems.Except(newItems)) { // IActivatable (dockTabItem as IActivatable)?.OnDeactivate(true); // IScreen var screen = dockTabItem as IScreen; if (screen != null) { screen.Conductor = null; } } } finally { DockStrategy.End(); } }
/// <summary> /// Ends the drag operation. /// </summary> /// <param name="commit"> /// <see langword="true"/> to commit the changes; otherwise, <see langword="false"/> to /// revert the changes. /// </param> internal void EndDrag(bool commit) { Debug.Assert(IsDragging); if (!_dragDeltaExceeded) { commit = false; } if (_targetDockTabPane != null) { _targetDockTabPane.PreviewKeyDown -= OnPreviewKeyDown; if (_dragDeltaExceeded) { ClearTranslateTransform(); } } if (IsDraggingDockTabItems) { // Remove event handlers. _dockControl.LostMouseCapture -= OnLostMouseCapture; _dockControl.MouseLeftButtonUp -= OnMouseLeftButtonUp; _dockControl.MouseMove -= OnMouseMove; _dockControl.PreviewKeyDown -= OnPreviewKeyDown; _dockControl.ReleaseMouseCapture(); } if (commit) { Commit(); } else { Win32.ReleaseCapture(); // Exit Win32 move window loop. Rollback(); } // Get rid of DockIndicators. HideBorderDockIndicators(); HidePaneIndicators(); // Finalize docking layout. _dockStrategy.End(); // Remove obsolete FloatWindows. _dockControl.UpdateFloatWindows(); Mouse.OverrideCursor = null; Reset(); }
/// <summary> /// Saves the docking layout. /// </summary> /// <param name="excludeNonPersistentItems"> /// <see langword="true"/> to exclude non-persistent <see cref="IDockTabItem"/>s. /// <see langword="false"/> to store the layout of all (persistent and non-persistent) /// <see cref="IDockTabItem"/>s. /// </param> /// <returns>The <see cref="XElement"/> with the serialized layout.</returns> /// <inheritdoc cref="DockSerializer.Save(IDockControl,bool)"/> public XElement SaveLayout(bool excludeNonPersistentItems = false) { try { DockStrategy.Begin(); return(DockSerializer.Save(this, excludeNonPersistentItems)); } finally { DockStrategy.End(); } }
public MainViewModel() { Themes = new List <string> { "Default", "System", "Light", "Gray", "Dark", }; SelectedThemeIndex = 3; // Build dock layout directly. //var dockTabPaneViewModel = new DockTabPaneViewModel(); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //var dockAnchorPaneViewModel = new DockAnchorPaneViewModel //{ // ChildPane = dockTabPaneViewModel //}; //DockControlViewModel = new DockControlViewModel(new DockStrategy()) //{ // RootPane = dockAnchorPaneViewModel //}; // Or use DockStrategy to do the same. var dockStrategy = new DockStrategy(); DockControlViewModel = new DockControlViewModel(dockStrategy) { RootPane = new DockAnchorPaneViewModel(), }; dockStrategy.Begin(); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.End(); }
public MainViewModel() { Themes = new List<string> { "Default", "System", "Light", "Gray", "Dark", }; SelectedThemeIndex = 3; // Build dock layout directly. //var dockTabPaneViewModel = new DockTabPaneViewModel(); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new SystemViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new DigitalRuneViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new PropertyGridViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //dockTabPaneViewModel.Items.Add(new ICSharpDevelopViewModel { DockState = DockState.Dock }); //var dockAnchorPaneViewModel = new DockAnchorPaneViewModel //{ // ChildPane = dockTabPaneViewModel //}; //DockControlViewModel = new DockControlViewModel(new DockStrategy()) //{ // RootPane = dockAnchorPaneViewModel //}; // Or use DockStrategy to do the same. var dockStrategy = new DockStrategy(); DockControlViewModel = new DockControlViewModel(dockStrategy) { RootPane = new DockAnchorPaneViewModel(), }; dockStrategy.Begin(); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new SystemViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new DigitalRuneViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new PropertyGridViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.Dock(new ICSharpDevelopViewModel()); dockStrategy.End(); }