示例#1
0
        public override Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
        {
            switch (Type)
            {
            case DropTargetType.DocumentPaneGroupDockInside:
            {
                var targetScreenRect = TargetElement.GetScreenArea();
                targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);

                return(new RectangleGeometry(targetScreenRect));
            }
            }

            return(null);
        }
    public override System.Windows.Media.Geometry GetPreviewPath( OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel )
    {
      switch( Type )
      {
        case DropTargetType.DocumentPaneGroupDockInside:
          #region DropTargetType.DocumentPaneGroupDockInside
          {
            var targetScreenRect = TargetElement.GetScreenArea();
            targetScreenRect.Offset( -overlayWindow.Left, -overlayWindow.Top );

            return new RectangleGeometry( targetScreenRect );
          }
          #endregion
      }

      return null;
    }
示例#3
0
        public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
        {
            switch (Type)
            {
            case DropTargetType.DocumentPaneDockInside:
            {
                var targetScreenRect = TargetElement.GetScreenArea();
                targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);

                if (_tabIndex == -1)
                {
                    return(new RectangleGeometry(targetScreenRect));
                }
                else
                {
                    var translatedDetectionRect = new Rect(DetectionRects[0].TopLeft, DetectionRects[0].BottomRight);
                    translatedDetectionRect.Offset(-overlayWindow.Left, -overlayWindow.Top);

                    var pathFigure = new PathFigure();
                    pathFigure.StartPoint = targetScreenRect.BottomRight;
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = new Point(targetScreenRect.Right, translatedDetectionRect.Bottom)
                        });
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = translatedDetectionRect.BottomRight
                        });
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = translatedDetectionRect.TopRight
                        });
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = translatedDetectionRect.TopLeft
                        });
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = translatedDetectionRect.BottomLeft
                        });
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = new Point(targetScreenRect.Left, translatedDetectionRect.Bottom)
                        });
                    pathFigure.Segments.Add(new LineSegment()
                        {
                            Point = targetScreenRect.BottomLeft
                        });
                    pathFigure.IsClosed = true;
                    pathFigure.IsFilled = true;
                    pathFigure.Freeze();
                    return(new PathGeometry(new PathFigure[] { pathFigure }));
                }
            }

            case DropTargetType.DocumentPaneDockBottom:
            {
                var targetScreenRect = TargetElement.GetScreenArea();
                targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
                targetScreenRect.Offset(0.0, targetScreenRect.Height / 2.0);
                targetScreenRect.Height /= 2.0;
                return(new RectangleGeometry(targetScreenRect));
            }

            case DropTargetType.DocumentPaneDockTop:
            {
                var targetScreenRect = TargetElement.GetScreenArea();
                targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
                targetScreenRect.Height /= 2.0;
                return(new RectangleGeometry(targetScreenRect));
            }

            case DropTargetType.DocumentPaneDockLeft:
            {
                var targetScreenRect = TargetElement.GetScreenArea();
                targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
                targetScreenRect.Width /= 2.0;
                return(new RectangleGeometry(targetScreenRect));
            }

            case DropTargetType.DocumentPaneDockRight:
            {
                var targetScreenRect = TargetElement.GetScreenArea();
                targetScreenRect.Offset(-overlayWindow.Left, -overlayWindow.Top);
                targetScreenRect.Offset(targetScreenRect.Width / 2.0, 0.0);
                targetScreenRect.Width /= 2.0;
                return(new RectangleGeometry(targetScreenRect));
            }
            }

            return(null);
        }
        public override System.Windows.Media.Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
        {
            var anchorableFloatingWindowModel      = floatingWindowModel as LayoutAnchorableFloatingWindow;
            var layoutAnchorablePane               = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElement;
            var layoutAnchorablePaneWithActualSize = anchorableFloatingWindowModel.RootPanel as ILayoutPositionableElementWithActualSize;

            var targetScreenRect = TargetElement.GetScreenArea();

            switch (Type)
            {
            case DropTargetType.DockingManagerDockLeft:
            {
                var desideredWidth = layoutAnchorablePane.DockWidth.IsAbsolute ? layoutAnchorablePane.DockWidth.Value : layoutAnchorablePaneWithActualSize.ActualWidth;
                var previewBoxRect = new Rect(
                    targetScreenRect.Left - overlayWindow.Left,
                    targetScreenRect.Top - overlayWindow.Top,
                    Math.Min(desideredWidth, targetScreenRect.Width / 2.0),
                    targetScreenRect.Height);

                return(new RectangleGeometry(previewBoxRect));
            }

            case DropTargetType.DockingManagerDockTop:
            {
                var desideredHeight = layoutAnchorablePane.DockHeight.IsAbsolute ? layoutAnchorablePane.DockHeight.Value : layoutAnchorablePaneWithActualSize.ActualHeight;
                var previewBoxRect  = new Rect(
                    targetScreenRect.Left - overlayWindow.Left,
                    targetScreenRect.Top - overlayWindow.Top,
                    targetScreenRect.Width,
                    Math.Min(desideredHeight, targetScreenRect.Height / 2.0));

                return(new RectangleGeometry(previewBoxRect));
            }

            case DropTargetType.DockingManagerDockRight:
            {
                var desideredWidth = layoutAnchorablePane.DockWidth.IsAbsolute ? layoutAnchorablePane.DockWidth.Value : layoutAnchorablePaneWithActualSize.ActualWidth;
                var previewBoxRect = new Rect(
                    targetScreenRect.Right - overlayWindow.Left - Math.Min(desideredWidth, targetScreenRect.Width / 2.0),
                    targetScreenRect.Top - overlayWindow.Top,
                    Math.Min(desideredWidth, targetScreenRect.Width / 2.0),
                    targetScreenRect.Height);

                return(new RectangleGeometry(previewBoxRect));
            }

            case DropTargetType.DockingManagerDockBottom:
            {
                var desideredHeight = layoutAnchorablePane.DockHeight.IsAbsolute ? layoutAnchorablePane.DockHeight.Value : layoutAnchorablePaneWithActualSize.ActualHeight;
                var previewBoxRect  = new Rect(
                    targetScreenRect.Left - overlayWindow.Left,
                    targetScreenRect.Bottom - overlayWindow.Top - Math.Min(desideredHeight, targetScreenRect.Height / 2.0),
                    targetScreenRect.Width,
                    Math.Min(desideredHeight, targetScreenRect.Height / 2.0));

                return(new RectangleGeometry(previewBoxRect));
            }
            }


            throw new InvalidOperationException();
        }