void Target_MouseMove(object sender, MouseEventArgs e) { if (IsDown) { DeltaDelta = e.GetPosition(null) - CurrentPoint; CurrentPoint += DeltaDelta; if (!IsActive) { if (Math.Abs(Delta.X) >= SystemParameters.MinimumHorizontalDragDistance || Math.Abs(Delta.Y) >= SystemParameters.MinimumVerticalDragDistance) { IsActive = true; CurrentListener = this; if (Started != null) { Started(this); } } } if (IsActive && Changed != null) { Changed(this); } } }
private void dragX_Changed(DragListener drag) { Point currentPoint = Mouse.GetPosition(this.parent); Vector deltaVector = Point.Subtract(currentPoint, this.startPoint); var destAngle = (-0.5*deltaVector.X) + skewX; if (destAngle == 0 && skewY == 0) { this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).Reset(); rtTransform = null; skewTransform = null; } else { if ((rtTransform == null) || !(rtTransform.Component is SkewTransform)) { if (!this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).IsSet) { this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(0.5,0.5)); } if (this.skewTransform == null) this.skewTransform = new SkewTransform(0, 0); this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).SetValue(skewTransform); rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value; } rtTransform.Properties["AngleX"].SetValue(destAngle); } _adornerLayer.UpdateAdornersForElement(this.ExtendedItem.View, true); }
private void drag_Rotate_Started(DragListener drag) { var designerItem = this.ExtendedItem.Component as FrameworkElement; this.parent = VisualTreeHelper.GetParent(designerItem) as UIElement; this.centerPoint = designerItem.TranslatePoint( new Point(designerItem.ActualWidth*designerItem.RenderTransformOrigin.X, designerItem.ActualHeight*designerItem.RenderTransformOrigin.Y), this.parent); Point startPoint = Mouse.GetPosition(this.parent); this.startVector = Point.Subtract(startPoint, this.centerPoint); if (this.rotateTransform == null) { this.initialAngle = 0; } else { this.initialAngle = this.rotateTransform.Angle; } rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value; operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize); }
public override void OnApplyTemplate() { base.OnApplyTemplate(); upButton = (DragRepeatButton)Template.FindName("PART_UpButton", this); downButton = (DragRepeatButton)Template.FindName("PART_DownButton", this); textBox = (TextBox)Template.FindName("PART_TextBox", this); upButton.Click += upButton_Click; downButton.Click += downButton_Click; textBox.LostFocus += (sender, e) => OnLostFocus(e); var upDrag = new DragListener(upButton); var downDrag = new DragListener(downButton); upDrag.Started += drag_Started; upDrag.Changed += drag_Changed; upDrag.Completed += drag_Completed; downDrag.Started += drag_Started; downDrag.Changed += drag_Changed; downDrag.Completed += drag_Completed; Print(); }
protected void drag_Changed(DragListener drag) { var mprt = drag.Target as PathThumb; if (mprt != null) { _isDragging = true; MovePoints(drag.Delta.X, drag.Delta.Y); } }
void Complete() { IsActive = false; CurrentListener = null; if (Completed != null) { Completed(this); } }
// TODO : Remove all hide/show extensions from here. protected void drag_Started(DragListener drag) { //get current thumb var mprt = (drag.Target as PathThumb); if (mprt != null) { SetOperation(); } }
protected UserControlPointsObjectThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, DependencyProperty property) { var designerThumb = new UserControlPointsObjectThumb { Alignment = alignment, Cursor = cursor, IsPrimarySelection = true, DependencyProperty = property }; AdornerPanel.SetPlacement(designerThumb, Place(designerThumb, alignment)); adornerPanel.Children.Add(designerThumb); DragListener = new DragListener(designerThumb); DragListener.Started += drag_Started; DragListener.Changed += drag_Changed; DragListener.Completed += drag_Completed; return designerThumb; }
ResizeThumb CreateThumb(PlacementAlignment alignment, Cursor cursor) { ResizeThumb resizeThumb = new ResizeThumbImpl( cursor == Cursors.SizeNS, cursor == Cursors.SizeWE ); resizeThumb.Cursor = cursor; resizeThumb.Alignment = alignment; AdornerPanel.SetPlacement(resizeThumb, Place(ref resizeThumb, alignment)); adornerPanel.Children.Add(resizeThumb); DragListener drag = new DragListener(resizeThumb); drag.Started += new DragHandler(drag_Started); drag.Changed += new DragHandler(drag_Changed); drag.Completed += new DragHandler(drag_Completed); return resizeThumb; }
protected DesignerThumb CreateThumb(PlacementAlignment alignment, Cursor cursor) { DesignerThumb designerThumb = new DesignerThumb { Alignment = alignment, Cursor = cursor, IsPrimarySelection = true}; AdornerPanel.SetPlacement(designerThumb, Place(designerThumb, alignment)); adornerPanel.Children.Add(designerThumb); DragListener = new DragListener(designerThumb); DragListener.Started += drag_Started; DragListener.Changed += drag_Changed; DragListener.Completed += drag_Completed; return designerThumb; }
ResizeThumb CreateRotateThumb() { ResizeThumb rotateThumb = new RotateThumb(); rotateThumb.Cursor = Cursors.Hand; rotateThumb.Cursor = ZoomControl.GetCursor("Images/rotate.cur"); rotateThumb.Alignment = PlacementAlignment.Top; AdornerPanel.SetPlacement(rotateThumb, new RelativePlacement(HorizontalAlignment.Center, VerticalAlignment.Top) { WidthRelativeToContentWidth = 1, HeightOffset = 0 }); adornerPanel.Children.Add(rotateThumb); DragListener drag = new DragListener(rotateThumb); drag.Started += drag_Rotate_Started; drag.Changed += drag_Rotate_Changed; return rotateThumb; }
protected void drag_Completed(DragListener drag) { var mprt = drag.Target as PathThumb; if (mprt != null) { if (operation != null && drag.IsCanceled) { operation.Abort(); } else if (drag.IsCanceled) { changeGroup.Abort(); } CommitOperation(); } }
protected DesignerThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index) { DesignerThumb designerThumb = new MultiPointThumb { Index = index, Alignment = alignment, Cursor = cursor, IsPrimarySelection = true }; AdornerPlacement ap = Place(designerThumb, alignment, index); (designerThumb as MultiPointThumb).AdornerPlacement = ap; AdornerPanel.SetPlacement(designerThumb, ap); adornerPanel.Children.Add(designerThumb); DragListener drag = new DragListener(designerThumb); WeakEventManager<DesignerThumb, MouseButtonEventArgs>.AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp); drag.Started += drag_Started; drag.Changed += drag_Changed; drag.Completed += drag_Completed; return designerThumb; }
protected virtual void drag_Started(DragListener drag) { Line al = ExtendedItem.View as Line; CurrentX2 = al.X2; CurrentY2 = al.Y2; CurrentLeft = (double)al.GetValue(Canvas.LeftProperty); CurrentTop = (double)al.GetValue(Canvas.TopProperty); var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel; zoom = designPanel.TryFindParent<ZoomControl>(); if (resizeBehavior != null) operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize); else { changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray); } _isResizing = true; (drag.Target as UserControlPointsObjectThumb).IsPrimarySelection = false; }
protected virtual PathThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index, PathPoint pathpoint, Transform transform) { var designerThumb = new PathThumb(index, pathpoint) { Cursor = cursor }; designerThumb.OperationMenu = BuildMenu(pathpoint); designerThumb.InnerRenderTransform = ((Transform)transform.Inverse); if (pathpoint.TargetPathPoint != null) { designerThumb.IsEllipse = true; designerThumb.Foreground = Brushes.Blue; var bnd = new Binding("TranslatedPoint") { Source = pathpoint.TargetPathPoint, Mode = BindingMode.OneWay, Converter = new RelativeToPointConverter(pathpoint) }; designerThumb.SetBinding(PathThumb.RelativeToPointProperty, bnd); } AdornerPanel.SetPlacement(designerThumb, designerThumb.AdornerPlacement); adornerPanel.Children.Add(designerThumb); DragListener drag = new DragListener(designerThumb); drag.Transform = transform; WeakEventManager <DesignerThumb, MouseButtonEventArgs> .AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp); //drag.MouseDown += drag_MouseDown; drag.Started += drag_Started; drag.Changed += drag_Changed; drag.Completed += drag_Completed; return(designerThumb); }
private void dragX_Started(DragListener drag) { _adornerLayer = this.adornerPanel.TryFindParent<AdornerLayer>(); var designerItem = this.ExtendedItem.Component as FrameworkElement; this.parent = VisualTreeHelper.GetParent(designerItem) as UIElement; startPoint = Mouse.GetPosition(this.parent); if (this.skewTransform == null) { this.skewX = 0; this.skewY = 0; } else { this.skewX = this.skewTransform.AngleX; this.skewY = this.skewTransform.AngleY; } rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value; operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize); }
void drag_Completed(DragListener drag) { IsDragging = false; OnDragCompleted(); }
void drag_Changed(DragListener drag) { IsDragging = true; MoveValue(-drag.DeltaDelta.Y * SmallChange); }
void drag_Changed(DragListener drag) { double dx = 0; double dy = 0; var alignment = (drag.Target as ResizeThumb).Alignment; if (alignment.Horizontal == HorizontalAlignment.Left) dx = -drag.Delta.X; if (alignment.Horizontal == HorizontalAlignment.Right) dx = drag.Delta.X; if (alignment.Vertical == VerticalAlignment.Top) dy = -drag.Delta.Y; if (alignment.Vertical == VerticalAlignment.Bottom) dy = drag.Delta.Y; var newWidth = Math.Max(0, oldSize.Width + dx); var newHeight = Math.Max(0, oldSize.Height + dy); ModelTools.Resize(ExtendedItem, newWidth, newHeight); if (operation != null) { var info = operation.PlacedItems[0]; var result = info.OriginalBounds; if (alignment.Horizontal == HorizontalAlignment.Left) result.X = Math.Min(result.Right, result.X - dx); if (alignment.Vertical == VerticalAlignment.Top) result.Y = Math.Min(result.Bottom, result.Y - dy); result.Width = newWidth; result.Height = newHeight; info.Bounds = result.Round(); info.ResizeThumbAlignment = alignment; operation.CurrentContainerBehavior.BeforeSetPosition(operation); operation.CurrentContainerBehavior.SetPosition(info); } }
void drag_Started(DragListener drag) { OnDragStarted(); }
protected void drag_MouseDown(DragListener drag) { }
protected virtual void drag_Completed(DragListener drag) { if (operation != null) { if (drag.IsCanceled) operation.Abort(); else { ResetWidthHeightProperties(); operation.Commit(); } operation = null; } else { if (drag.IsCanceled) changeGroup.Abort(); else changeGroup.Commit(); changeGroup = null; } _isResizing = false; (drag.Target as UserControlPointsObjectThumb).IsPrimarySelection = true; HideSizeAndShowHandles(); }
protected override void OnInitialized() { if (this.ExtendedItem.Component is WindowClone) return; base.OnInitialized(); extendedItemArray[0] = this.ExtendedItem; this.ExtendedItem.PropertyChanged += OnPropertyChanged; var designerItem = this.ExtendedItem.Component as FrameworkElement; this.skewTransform = designerItem.RenderTransform as SkewTransform; if (skewTransform != null) { skewX = skewTransform.AngleX; skewY = skewTransform.AngleY; } thumb1 = new Thumb() { Cursor = Cursors.ScrollWE, Height = 14, Width = 4, Opacity = 1 }; thumb2 = new Thumb() { Cursor = Cursors.ScrollNS, Width = 14, Height = 4, Opacity = 1 }; OnPropertyChanged(null, null); adornerPanel.Children.Add(thumb1); adornerPanel.Children.Add(thumb2); DragListener drag1 = new DragListener(thumb1); drag1.Started += dragX_Started; drag1.Changed += dragX_Changed; drag1.Completed += dragX_Completed; DragListener drag2 = new DragListener(thumb2); drag2.Started += dragY_Started; drag2.Changed += dragY_Changed; drag2.Completed += dragY_Completed; }
private void drag_Rotate_Changed(DragListener drag) { Point currentPoint = Mouse.GetPosition(this.parent); Vector deltaVector = Point.Subtract(currentPoint, this.centerPoint); double angle = Vector.AngleBetween(this.startVector, deltaVector); var destAngle = this.initialAngle + Math.Round(angle, 0); if (!Keyboard.IsKeyDown(Key.LeftCtrl)) destAngle = ((int)destAngle / 15) * 15; if (destAngle == 0) { this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).Reset(); rtTransform = null; rotateTransform = null; } else { if (rtTransform == null) { if (!this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).IsSet) { this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(0.5,0.5)); } if (this.rotateTransform == null) this.rotateTransform = new RotateTransform(0); this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).SetValue(rotateTransform); rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value; } rtTransform.Properties["Angle"].SetValue(destAngle); this.angle = destAngle * Math.PI / 180.0; } }
protected virtual PathThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index, PathPoint pathpoint, Transform transform) { var designerThumb = new PathThumb(index, pathpoint) {Cursor = cursor}; designerThumb.OperationMenu = BuildMenu(pathpoint); designerThumb.InnerRenderTransform = ((Transform)transform.Inverse); if (pathpoint.TargetPathPoint != null) { designerThumb.IsEllipse = true; designerThumb.Foreground = Brushes.Blue; var bnd = new Binding("TranslatedPoint") { Source = pathpoint.TargetPathPoint, Mode = BindingMode.OneWay, Converter = new RelativeToPointConverter(pathpoint) }; designerThumb.SetBinding(PathThumb.RelativeToPointProperty, bnd); } AdornerPanel.SetPlacement(designerThumb, designerThumb.AdornerPlacement); adornerPanel.Children.Add(designerThumb); DragListener drag = new DragListener(designerThumb); drag.Transform = transform; WeakEventManager<DesignerThumb, MouseButtonEventArgs>.AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp); drag.MouseDown += drag_MouseDown; drag.Started += drag_Started; drag.Changed += drag_Changed; drag.Completed += drag_Completed; return designerThumb; }
private void drag_Rotate_Changed(DragListener drag) { Point currentPoint = Mouse.GetPosition(this.parent); Vector deltaVector = Point.Subtract(currentPoint, this.centerPoint); double angle = Vector.AngleBetween(this.startVector, deltaVector); var destAngle = this.initialAngle + Math.Round(angle, 0); if (!Keyboard.IsKeyDown(Key.LeftCtrl)) destAngle = ((int)destAngle / 15) * 15; ModelTools.ApplyTransform(this.ExtendedItem, new RotateTransform() { Angle = destAngle }); }
// TODO : Remove all hide/show extensions from here. void drag_Started(DragListener drag) { var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel; if (designPanel != null) { var p = VisualTreeHelper.GetParent(designPanel); while (p != null && !(p is ZoomControl)) { p = VisualTreeHelper.GetParent(p); } zoom = p as ZoomControl; } /* Abort editing Text if it was editing, because it interferes with the undo stack. */ foreach(var extension in this.ExtendedItem.Extensions){ if(extension is InPlaceEditorExtension){ ((InPlaceEditorExtension)extension).AbortEdit(); } } oldSize = new Size(ModelTools.GetWidth(ExtendedItem.View), ModelTools.GetHeight(ExtendedItem.View)); if (resizeBehavior != null) operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize); else { changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray); } _isResizing=true; ShowSizeAndHideHandles(); }
void drag_Completed(DragListener drag) { if (operation != null) { if (drag.IsCanceled) operation.Abort(); else operation.Commit(); operation = null; } else { if (drag.IsCanceled) changeGroup.Abort(); else changeGroup.Commit(); changeGroup = null; } _isResizing=false; HideSizeAndShowHandles(); }
// TODO : Remove all hide/show extensions from here. void drag_Started(DragListener drag) { /* Abort editing Text if it was editing, because it interferes with the undo stack. */ foreach(var extension in this.ExtendedItem.Extensions){ if(extension is InPlaceEditorExtension){ ((InPlaceEditorExtension)extension).AbortEdit(); } } oldSize = new Size(ModelTools.GetWidth(ExtendedItem.View), ModelTools.GetHeight(ExtendedItem.View)); if (resizeBehavior != null) operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize); else { changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray); } _isResizing=true; ShowSizeAndHideHandles(); }
void drag_Changed(DragListener drag) { double dx = 0; double dy = 0; var alignment = (drag.Target as ResizeThumb).Alignment; if (alignment.Horizontal == HorizontalAlignment.Left) dx = -drag.Delta.X; if (alignment.Horizontal == HorizontalAlignment.Right) dx = drag.Delta.X; if (alignment.Vertical == VerticalAlignment.Top) dy = -drag.Delta.Y; if (alignment.Vertical == VerticalAlignment.Bottom) dy = drag.Delta.Y; var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel; if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && alignment.Horizontal != HorizontalAlignment.Center && alignment.Vertical != VerticalAlignment.Center) { if (dx > dy) dx = dy; else dy = dx; } if (zoom != null) { dx = dx * (1 / zoom.CurrentZoom); dy = dy * (1 / zoom.CurrentZoom); } var newWidth = Math.Max(0, oldSize.Width + dx); var newHeight = Math.Max(0, oldSize.Height + dy); if (operation.CurrentContainerBehavior is GridPlacementSupport) { var hor = (HorizontalAlignment)this.ExtendedItem.Properties[FrameworkElement.HorizontalAlignmentProperty].ValueOnInstance; var ver = (VerticalAlignment)this.ExtendedItem.Properties[FrameworkElement.VerticalAlignmentProperty].ValueOnInstance; if (hor == HorizontalAlignment.Stretch) this.ExtendedItem.Properties[FrameworkElement.WidthProperty].Reset(); else this.ExtendedItem.Properties.GetProperty(FrameworkElement.WidthProperty).SetValue(newWidth); if (ver == VerticalAlignment.Stretch) this.ExtendedItem.Properties[FrameworkElement.HeightProperty].Reset(); else this.ExtendedItem.Properties.GetProperty(FrameworkElement.HeightProperty).SetValue(newHeight); } else { ModelTools.Resize(ExtendedItem, newWidth, newHeight); } if (operation != null) { var info = operation.PlacedItems[0]; var result = info.OriginalBounds; if (alignment.Horizontal == HorizontalAlignment.Left) result.X = Math.Min(result.Right, result.X - dx); if (alignment.Vertical == VerticalAlignment.Top) result.Y = Math.Min(result.Bottom, result.Y - dy); result.Width = newWidth; result.Height = newHeight; info.Bounds = result.Round(); info.ResizeThumbAlignment = alignment; operation.CurrentContainerBehavior.BeforeSetPosition(operation); operation.CurrentContainerBehavior.SetPosition(info); } }
void drag_Rotate_Completed(ICSharpCode.WpfDesign.Designer.Controls.DragListener drag) { operation.Commit(); }
protected virtual void drag_Changed(DragListener drag) { Line al = ExtendedItem.View as Line; var thumb = drag.Target as UserControlPointsObjectThumb; var alignment = thumb.Alignment; var info = operation.PlacedItems[0]; double dx = 0; double dy = 0; if (zoom != null) { dx = drag.Delta.X * (1 / zoom.CurrentZoom); dy = drag.Delta.Y * (1 / zoom.CurrentZoom); } double top, left, x, y, xtop, xleft; if (alignment == PlacementAlignment.TopLeft) { //normal values x = CurrentX2 - dx; y = CurrentY2 - dy; top = CurrentTop + dy; left = CurrentLeft + dx; //values to use when keys are pressed xtop = CurrentTop + CurrentY2; xleft = CurrentLeft + CurrentX2; } else { x = CurrentX2 + dx; y = CurrentY2 + dy; top = xtop = CurrentTop; left = xleft = CurrentLeft; } // Bounds position = CalculateDrawing(x, y, left, top, xleft, xtop); ExtendedItem.Properties.GetProperty(thumb.DependencyProperty).SetValue(new Point(x, y)); // if (operation != null) { // var result = info.OriginalBounds; // result.X = position.Left; // result.Y = position.Top; // result.Width = Math.Abs(position.X); // result.Height = Math.Abs(position.Y); // // info.Bounds = result.Round(); // operation.CurrentContainerBehavior.BeforeSetPosition(operation); // operation.CurrentContainerBehavior.SetPosition(info); // } (drag.Target as UserControlPointsObjectThumb).InvalidateArrange(); ResetWidthHeightProperties(); }