Beispiel #1
0
        /// <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();
            }
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
 /// <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();
     }
 }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        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();
        }