/// <summary> /// Resets all fields. /// </summary> private void Reset() { Debug.Assert(Mouse.Captured == null); Debug.Assert(_borderDockIndicators == null); Debug.Assert(_paneDockIndicators == null); Debug.Assert( _dockStrategy == null || !_dockStrategy.DockControl.GetDockElements().OfType <DockTabItemProxy>().Any(), "All item proxies should have been removed."); _dockStrategy = null; _draggedItems.Clear(); _activeItem = null; _floatWindow = null; _targetDockTabPane = null; _layoutChanged = false; _initialMousePosition = new Point(double.NaN, double.NaN); _dragDeltaExceeded = false; _mouseOffset = new Vector(double.NaN, double.NaN); _initialSize = new Size(double.NaN, double.NaN); _canFloat = true; _originalDockState = DockState.Hide; _originalFloatWindow = null; _originalFloatLeft = 0; _originalFloatTop = 0; }
private void BackupFloatWindowPosition() { if (_floatWindow != null) { _originalFloatWindow = _floatWindow.GetViewModel(); _originalFloatLeft = _originalFloatWindow.Left; _originalFloatTop = _originalFloatWindow.Top; } }
private FloatWindow GetView(IFloatWindow viewModel) { for (int i = 0; i < _floatWindows.Count; i++) { if (_floatWindows[i].DataContext == viewModel) { return(_floatWindows[i]); } } return(null); }
public SerializationContext(IDockControl dockControl) { Debug.Assert(dockControl != null); Debug.Assert(dockControl.DockStrategy != null); DockControl = dockControl; var dockStrategy = dockControl.DockStrategy; DefaultFloatWindow = dockStrategy.CreateFloatWindow(); DefaultDockAnchorPane = dockStrategy.CreateDockAnchorPane(); DefaultDockSplitPane = dockStrategy.CreateDockSplitPane(); DefaultDockTabPane = dockStrategy.CreateDockTabPane(); }
/// <summary> /// Gets the <see cref="FloatWindow"/> (view) for the <see cref="IFloatWindow"/> /// (view-model). /// </summary> /// <param name="viewModel">The <see cref="IFloatWindow"/>.</param> /// <returns>The <see cref="FloatWindow"/>.</returns> private FloatWindow GetFloatWindow(IFloatWindow viewModel) { Debug.Assert(_dockControl != null); Debug.Assert(viewModel != null); _dockControl.UpdateFloatWindows(); for (int i = 0; i < _dockControl.FloatWindows.Count; i++) { var floatWindow = _dockControl.FloatWindows[i]; if (floatWindow.GetViewModel() == viewModel) { return(floatWindow); } } return(null); }
private static XElement Save(SerializationContext context, IFloatWindow floatWindow) { if (floatWindow == null) { return(null); } if (!ContainsItemsToSave(context, floatWindow.RootPane)) { return(null); } var xElement = new XElement("FloatWindow"); if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Left)) { xElement.Add(new XAttribute("Left", floatWindow.Left)); } if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Top)) { xElement.Add(new XAttribute("Top", floatWindow.Top)); } if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Width)) { xElement.Add(new XAttribute("Width", floatWindow.Width)); } if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Height)) { xElement.Add(new XAttribute("Height", floatWindow.Height)); } if (floatWindow.WindowState != context.DefaultFloatWindow.WindowState) { xElement.Add(new XAttribute("WindowState", floatWindow.WindowState)); } xElement.Add(Save(context, floatWindow.RootPane)); return(xElement); }
/// <summary> /// Gets the <see cref="FloatWindow"/> (view) for the <see cref="IFloatWindow"/> /// (view-model). /// </summary> /// <param name="viewModel">The <see cref="IFloatWindow"/>.</param> /// <returns>The <see cref="FloatWindow"/>.</returns> private FloatWindow GetFloatWindow(IFloatWindow viewModel) { Debug.Assert(_dockControl != null); Debug.Assert(viewModel != null); _dockControl.UpdateFloatWindows(); for (int i = 0; i < _dockControl.FloatWindows.Count; i++) { var floatWindow = _dockControl.FloatWindows[i]; if (floatWindow.GetViewModel() == viewModel) return floatWindow; } return null; }
/// <inheritdoc/> public override bool CanClose(IFloatWindow floatWindow) { // Optional: Handle CanClose for FloatWindow with multiple documents. return(base.CanClose(floatWindow)); }
private static XElement Save(SerializationContext context, IFloatWindow floatWindow) { if (floatWindow == null) return null; if (!ContainsItemsToSave(context, floatWindow.RootPane)) return null; var xElement = new XElement("FloatWindow"); if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Left)) xElement.Add(new XAttribute("Left", floatWindow.Left)); if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Top)) xElement.Add(new XAttribute("Top", floatWindow.Top)); if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Width)) xElement.Add(new XAttribute("Width", floatWindow.Width)); if (!floatWindow.Left.Equals(context.DefaultFloatWindow.Height)) xElement.Add(new XAttribute("Height", floatWindow.Height)); if (floatWindow.WindowState != context.DefaultFloatWindow.WindowState) xElement.Add(new XAttribute("WindowState", floatWindow.WindowState)); xElement.Add(Save(context, floatWindow.RootPane)); return xElement; }
//-------------------------------------------------------------- /// <summary> /// Resets all fields. /// </summary> private void Reset() { Debug.Assert(Mouse.Captured == null); Debug.Assert(_borderDockIndicators == null); Debug.Assert(_paneDockIndicators == null); Debug.Assert( _dockStrategy == null || !_dockStrategy.DockControl.GetDockElements().OfType<DockTabItemProxy>().Any(), "All item proxies should have been removed."); _dockStrategy = null; _draggedItems.Clear(); _activeItem = null; _floatWindow = null; _targetDockTabPane = null; _layoutChanged = false; _initialMousePosition = new Point(double.NaN, double.NaN); _dragDeltaExceeded = false; _mouseOffset = new Vector(double.NaN, double.NaN); _initialSize = new Size(double.NaN, double.NaN); _canFloat = true; _originalDockState = DockState.Hide; _originalFloatWindow = null; _originalFloatLeft = 0; _originalFloatTop = 0; }
private FloatWindow GetView(IFloatWindow viewModel) { for (int i = 0; i < _floatWindows.Count; i++) if (_floatWindows[i].DataContext == viewModel) return _floatWindows[i]; return null; }