Ejemplo n.º 1
0
        public void Drop(Point dropLocation, out bool dropHandled)
        {
            dropHandled = false;

            UpdateMouseLocation(dropLocation);

            var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;
            var root = floatingWindowModel.Root;

            if (_currentHost != null)
                _currentHost.HideOverlayWindow();

            if (_currentDropTarget != null)
            {
                _currentWindow.DragDrop(_currentDropTarget);
                root.CollectGarbage();
                dropHandled = true;
            }

            _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));

            if (_currentDropTarget != null)
                _currentWindow.DragLeave(_currentDropTarget);
            if (_currentWindow != null)
                _currentWindow.DragLeave(_floatingWindow);
            _currentWindow = null;

            _currentHost = null;
        }
        internal DockingManagerOverlayArea(IOverlayWindow overlayWindow, DockingManager manager)
            : base(overlayWindow)
        {
            _manager = manager;

            base.SetScreenDetectionArea(new Rect(
                _manager.PointToScreenDPI(new Point()),
                _manager.TransformActualSizeToAncestor()));
        }
        internal DockingManagerOverlayArea(IOverlayWindow overlayWindow, DockingManager manager)
            : base(overlayWindow)
        {
            var manager1 = manager;

            SetScreenDetectionArea(new Rect(
                manager1.PointToScreenDpi(new Point()),
                manager1.TransformActualSizeToAncestor()));
        }
 internal DocumentPaneControlOverlayArea(
     IOverlayWindow overlayWindow,
     LayoutDocumentPaneControl documentPaneControl)
     : base(overlayWindow)
 {
     _documentPaneControl = documentPaneControl;
     base.SetScreenDetectionArea(new Rect(
         _documentPaneControl.PointToScreenDPI(new Point()),
         _documentPaneControl.TransformActualSizeToAncestor()));
 }
 internal AnchorablePaneControlOverlayArea(
     IOverlayWindow overlayWindow, 
     LayoutAnchorablePaneControl anchorablePaneControl)
     : base(overlayWindow)
 {
     _anchorablePaneControl = anchorablePaneControl;
     base.SetScreenDetectionArea(new Rect(
         _anchorablePaneControl.PointToScreenDPI(new Point()),
         _anchorablePaneControl.TransformActualSizeToAncestor()));
 }
 internal DocumentPaneControlOverlayArea(
     IOverlayWindow overlayWindow,
     LayoutDocumentPaneControl documentPaneControl)
     : base(overlayWindow)
 {
     var documentPaneControl1 = documentPaneControl;
     SetScreenDetectionArea(new Rect(
         documentPaneControl1.PointToScreenDpi(new Point()),
         documentPaneControl1.TransformActualSizeToAncestor()));
 }
        internal AnchorablePaneControlOverlayArea(
			IOverlayWindow overlayWindow,
			LayoutAnchorablePaneControl anchorablePaneControl)
            : base(overlayWindow)
        {
            var anchorablePaneControl1 = anchorablePaneControl;
            SetScreenDetectionArea(new Rect(
                anchorablePaneControl1.PointToScreenDpi(new Point()),
                anchorablePaneControl1.TransformActualSizeToAncestor()));
        }
Ejemplo n.º 8
0
		public void UpdateMouseLocation(Point dragPosition)
		{
			var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;

			var newHost = _overlayWindowHosts.FirstOrDefault(oh => oh.HitTest(dragPosition));

			if (_currentHost != null || _currentHost != newHost)
			{
				//is mouse still inside current overlay window host?
				if ((_currentHost != null && !_currentHost.HitTest(dragPosition)) ||
					_currentHost != newHost)
				{
					//esit drop target
					if (_currentDropTarget != null)
						_currentWindow.DragLeave(_currentDropTarget);
					_currentDropTarget = null;

					//exit area
					_currentWindowAreas.ForEach(a =>
						_currentWindow.DragLeave(a));
					_currentWindowAreas.Clear();

					//hide current overlay window
					if (_currentWindow != null)
						_currentWindow.DragLeave(_floatingWindow);
					if (_currentHost != null)
						_currentHost.HideOverlayWindow();
					_currentHost = null;
				}

				if (_currentHost != newHost)
				{
					_currentHost = newHost;
					_currentWindow = _currentHost.ShowOverlayWindow(_floatingWindow);
					_currentWindow.DragEnter(_floatingWindow);
				}
			}

			if (_currentHost == null)
				return;

			if (_currentDropTarget != null &&
				!_currentDropTarget.HitTest(dragPosition))
			{
				_currentWindow.DragLeave(_currentDropTarget);
				_currentDropTarget = null;
			}

			List<IDropArea> areasToRemove = new List<IDropArea>();
			_currentWindowAreas.ForEach(a =>
			{
				//is mouse still inside this area?
				if (!a.DetectionRect.Contains(dragPosition))
				{
					_currentWindow.DragLeave(a);
					areasToRemove.Add(a);
				}
			});

			areasToRemove.ForEach(a =>
				_currentWindowAreas.Remove(a));


			var areasToAdd =
				_currentHost.GetDropAreas(_floatingWindow).Where(cw => !_currentWindowAreas.Contains(cw) && cw.DetectionRect.Contains(dragPosition)).ToList();

			_currentWindowAreas.AddRange(areasToAdd);

			areasToAdd.ForEach(a =>
				_currentWindow.DragEnter(a));

			if (_currentDropTarget == null)
			{
				_currentWindowAreas.ForEach(wa =>
					{
						if (_currentDropTarget != null)
							return;

						_currentDropTarget = _currentWindow.GetTargets().FirstOrDefault(dt => dt.HitTest(dragPosition));
						if (_currentDropTarget != null)
						{
							_currentWindow.DragEnter(_currentDropTarget);
							return;
						}
					});
			}

		}
Ejemplo n.º 9
0
		internal void Abort()
		{
			var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;

			_currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));

			if (_currentDropTarget != null)
				_currentWindow.DragLeave(_currentDropTarget);
			if (_currentWindow != null)
				_currentWindow.DragLeave(_floatingWindow);
			_currentWindow = null;
			if (_currentHost != null)
				_currentHost.HideOverlayWindow();
			_currentHost = null;
		}
Ejemplo n.º 10
0
		internal OverlayArea(IOverlayWindow overlayWindow)
		{
			_overlayWindow = overlayWindow;
		}
Ejemplo n.º 11
0
        public void UpdateMouseLocation(Point dragPosition)
        {
            var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow;

            var newHost = _overlayWindowHosts.FirstOrDefault(oh => oh.HitTest(dragPosition));

            if (_currentHost != null || _currentHost != newHost)
            {
                //is mouse still inside current overlay window host?
                if ((_currentHost != null && !_currentHost.HitTest(dragPosition)) ||
                    _currentHost != newHost)
                {
                    //esit drop target
                    if (_currentDropTarget != null)
                    {
                        _currentWindow.DragLeave(_currentDropTarget);
                    }
                    _currentDropTarget = null;

                    //exit area
                    _currentWindowAreas.ForEach(a =>
                                                _currentWindow.DragLeave(a));
                    _currentWindowAreas.Clear();

                    //hide current overlay window
                    if (_currentWindow != null)
                    {
                        _currentWindow.DragLeave(_floatingWindow);
                    }
                    if (_currentHost != null)
                    {
                        _currentHost.HideOverlayWindow();
                    }
                    _currentHost = null;
                }

                if (_currentHost != newHost)
                {
                    _currentHost   = newHost;
                    _currentWindow = _currentHost.ShowOverlayWindow(_floatingWindow);
                    _currentWindow.DragEnter(_floatingWindow);
                }
            }

            if (_currentHost == null)
            {
                return;
            }

            if (_currentDropTarget != null &&
                !_currentDropTarget.HitTest(dragPosition))
            {
                _currentWindow.DragLeave(_currentDropTarget);
                _currentDropTarget = null;
            }

            List <IDropArea> areasToRemove = new List <IDropArea>();

            _currentWindowAreas.ForEach(a =>
            {
                //is mouse still inside this area?
                if (!a.DetectionRect.Contains(dragPosition))
                {
                    _currentWindow.DragLeave(a);
                    areasToRemove.Add(a);
                }
            });

            areasToRemove.ForEach(a =>
                                  _currentWindowAreas.Remove(a));


            var areasToAdd =
                _currentHost.GetDropAreas(_floatingWindow).Where(cw => !_currentWindowAreas.Contains(cw) && cw.DetectionRect.Contains(dragPosition)).ToList();

            _currentWindowAreas.AddRange(areasToAdd);

            areasToAdd.ForEach(a =>
                               _currentWindow.DragEnter(a));

            if (_currentDropTarget == null)
            {
                _currentWindowAreas.ForEach(wa =>
                {
                    if (_currentDropTarget != null)
                    {
                        return;
                    }

                    _currentDropTarget = _currentWindow.GetTargets().FirstOrDefault(dt => dt.HitTest(dragPosition));
                    if (_currentDropTarget != null)
                    {
                        _currentWindow.DragEnter(_currentDropTarget);
                        return;
                    }
                });
            }
        }
Ejemplo n.º 12
0
 internal OverlayArea(IOverlayWindow overlayWindow)
 {
 }
Ejemplo n.º 13
0
 internal OverlayArea(IOverlayWindow overlayWindow)
 {
 }
Ejemplo n.º 14
0
 internal OverlayArea(IOverlayWindow overlayWindow)
 {
     _overlayWindow = overlayWindow;
 }
Ejemplo n.º 15
0
        public void UpdateMouseLocation(Point dragPosition)
        {
            Func <IDropTarget, bool> func2             = null;
            ILayoutElement           model             = this._floatingWindow.Model;
            IOverlayWindowHost       overlayWindowHost = this._overlayWindowHosts.FirstOrDefault <IOverlayWindowHost>((IOverlayWindowHost oh) => oh.HitTest(dragPosition));

            if (this._currentHost != null || this._currentHost != overlayWindowHost)
            {
                if (this._currentHost != null && !this._currentHost.HitTest(dragPosition) || this._currentHost != overlayWindowHost)
                {
                    if (this._currentDropTarget != null)
                    {
                        this._currentWindow.DragLeave(this._currentDropTarget);
                    }
                    this._currentDropTarget = null;
                    this._currentWindowAreas.ForEach((IDropArea a) => this._currentWindow.DragLeave(a));
                    this._currentWindowAreas.Clear();
                    if (this._currentWindow != null)
                    {
                        this._currentWindow.DragLeave(this._floatingWindow);
                    }
                    if (this._currentHost != null)
                    {
                        this._currentHost.HideOverlayWindow();
                    }
                    this._currentHost = null;
                }
                if (this._currentHost != overlayWindowHost)
                {
                    this._currentHost   = overlayWindowHost;
                    this._currentWindow = this._currentHost.ShowOverlayWindow(this._floatingWindow);
                    this._currentWindow.DragEnter(this._floatingWindow);
                }
            }
            if (this._currentHost == null)
            {
                return;
            }
            if (this._currentDropTarget != null && !this._currentDropTarget.HitTest(dragPosition))
            {
                this._currentWindow.DragLeave(this._currentDropTarget);
                this._currentDropTarget = null;
            }
            List <IDropArea> dropAreas = new List <IDropArea>();

            this._currentWindowAreas.ForEach((IDropArea a) => {
                if (!a.DetectionRect.Contains(dragPosition))
                {
                    this._currentWindow.DragLeave(a);
                    dropAreas.Add(a);
                }
            });
            dropAreas.ForEach((IDropArea a) => this._currentWindowAreas.Remove(a));
            List <IDropArea> list = this._currentHost.GetDropAreas(this._floatingWindow).Where <IDropArea>((IDropArea cw) => {
                if (this._currentWindowAreas.Contains(cw))
                {
                    return(false);
                }
                return(cw.DetectionRect.Contains(dragPosition));
            }).ToList <IDropArea>();

            this._currentWindowAreas.AddRange(list);
            list.ForEach((IDropArea a) => this._currentWindow.DragEnter(a));
            if (this._currentDropTarget == null)
            {
                this._currentWindowAreas.ForEach((IDropArea wa) => {
                    if (this._currentDropTarget != null)
                    {
                        return;
                    }
                    DragService u003cu003e4_this           = this;
                    IEnumerable <IDropTarget> targets      = this._currentWindow.GetTargets();
                    Func <IDropTarget, bool> u003cu003e9_7 = func2;
                    if (u003cu003e9_7 == null)
                    {
                        Func <IDropTarget, bool> func  = (IDropTarget dt) => dt.HitTest(dragPosition);
                        Func <IDropTarget, bool> func1 = func;
                        func2         = func;
                        u003cu003e9_7 = func1;
                    }
                    u003cu003e4_this._currentDropTarget = targets.FirstOrDefault <IDropTarget>(u003cu003e9_7);
                    if (this._currentDropTarget == null)
                    {
                        return;
                    }
                    this._currentWindow.DragEnter(this._currentDropTarget);
                });
            }
        }
Ejemplo n.º 16
0
        internal void Abort()
        {
            _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a));

            if (_currentDropTarget != null)
                _currentWindow.DragLeave(_currentDropTarget);
            _currentWindow?.DragLeave(_floatingWindow);
            _currentWindow = null;
            _currentHost?.HideOverlayWindow();
            _currentHost = null;
        }