private void HandleDragOverSection([NotNull] DragDataDescriptor descriptor, [NotNull] DragEventArgs e) { Debug.ArgumentNotNull(descriptor, nameof(descriptor)); Debug.ArgumentNotNull(e, nameof(e)); var source = GetDragSource(e.OriginalSource); var targetSection = source as UI.TemplateDesigner.TemplateSection; if (targetSection == null) { return; } if (targetSection.IsLastSection()) { return; } if (targetSection == descriptor.Data) { return; } var position = e.GetPosition(targetSection); var sy = position.Y < targetSection.ActualHeight / 2 ? 0 : targetSection.ActualHeight; var p = targetSection.TranslatePoint(new Point(0, sy), this); descriptor.TargetSection = targetSection.Section; descriptor.PositionBefore = sy == 0; SetAdorner((int)p.Y); e.Effects = DragDropEffects.Move; }
public void HandleMouseMove([NotNull] object sender, [NotNull] MouseEventArgs e) { Assert.ArgumentNotNull(sender, nameof(sender)); Assert.ArgumentNotNull(e, nameof(e)); if (!DragManager.IsDragStart(this, e, ref _origin)) { return; } var sectionControl = sender as UI.TemplateDesigner.TemplateSection; if (sectionControl != null && sectionControl.IsLastSection()) { return; } var fieldControl = sender as UI.TemplateDesigner.TemplateField; if (fieldControl != null && fieldControl.IsLastField()) { return; } var descriptor = new DragDataDescriptor { Type = sender is UI.TemplateDesigner.TemplateSection ? @"section" : @"field", Data = sender, TemplateDesigner = this }; var dragData = new DataObject(@"SitecoreTemplateDesigner", descriptor); DragManager.DoDragDrop(this, dragData, DragDropEffects.Move); SetAdorner(-1); e.Handled = true; }
private void HandleDragOverField([NotNull] DragDataDescriptor descriptor, [NotNull] DragEventArgs e) { Debug.ArgumentNotNull(descriptor, nameof(descriptor)); Debug.ArgumentNotNull(e, nameof(e)); var field = descriptor.Data as UI.TemplateDesigner.TemplateField; if (field == null) { return; } var y = -1; var source = GetDragSource(e.OriginalSource); var targetSection = source as UI.TemplateDesigner.TemplateSection; var targetField = source as UI.TemplateDesigner.TemplateField; if (targetSection != null) { if (targetSection.IsLastSection()) { return; } if (targetSection.Section == field.Field.Section) { return; } var fieldStack = targetSection.FieldStack; if (fieldStack.Children.Count == 0) { return; } var element = fieldStack.Children[fieldStack.Children.Count - 1]; y = (int)element.TranslatePoint(new Point(0, 0), this).Y; descriptor.TargetSection = targetSection.Section; descriptor.Field = null; } else if (targetField != null) { if (targetField == field) { return; } if (targetField.IsLastField()) { return; } var position = e.GetPosition(targetField); var fy = position.Y < targetField.ActualHeight / 2 ? 0 : targetField.ActualHeight; y = (int)targetField.TranslatePoint(new Point(0, fy), this).Y; descriptor.TargetSection = targetField.Field.Section; descriptor.Field = targetField.Field; descriptor.PositionBefore = fy == 0; } if (y == -1) { return; } SetAdorner(y); e.Effects = DragDropEffects.Move; }