private void InsertRenderings([CanBeNull] LayoutDesignerItem target, ControlDragAdornerPosition position, [NotNull] IEnumerable <IItem> items) { Debug.ArgumentNotNull(items, nameof(items)); int index; if (target != null) { index = this.items.IndexOf(target); if (position == ControlDragAdornerPosition.Bottom) { index++; } } else { index = this.items.Count; } string placeholderKey = null; var renderingTarget = target as RenderingItem; if (renderingTarget != null) { placeholderKey = renderingTarget.PlaceholderKey.Key; } var modified = false; LayoutDesignerItem selectedRendering = null; foreach (var item in items) { var renderingItem = new RenderingItem(this, item); var layoutItem = AddRendering(renderingItem, index, index); var rendering = layoutItem as RenderingItem; if (rendering != null && string.IsNullOrEmpty(rendering.PlaceholderKey.Key) && !string.IsNullOrEmpty(placeholderKey)) { rendering.PlaceholderKey = new PlaceHolderKey(placeholderKey); } if (selectedRendering == null) { selectedRendering = layoutItem; } modified = true; } List.SelectedItem = selectedRendering; Keyboard.Focus(List); if (modified) { Modified = true; } }
private void Update(ControlDragAdornerPosition position) { LastPosition = position; _adorner.Position = position; var adornerLayer = AdornerLayer.GetAdornerLayer(Control); adornerLayer.Update(); }
public ControlDragAdorner([NotNull] FrameworkElement control, ControlDragAdornerPosition allowedPositions) { Assert.ArgumentNotNull(control, nameof(control)); Control = control; AllowedPositions = allowedPositions; control.DragEnter += ControlDragEnter; control.DragLeave += ControlDragLeave; control.DragOver += ControlDragMove; control.Drop += ControlDrop; }
public static void GetSortOrder([NotNull] ItemTreeViewItem target, ControlDragAdornerPosition position, int itemCount, out int sortOrder, out int sortOrderDelta, [CanBeNull] out ItemTreeViewItem parent, [CanBeNull] out ItemTreeViewItem anchor) { Debug.ArgumentNotNull(target, nameof(target)); if (position == ControlDragAdornerPosition.Top) { GetBeforeSortOrder(target, itemCount, out sortOrder, out sortOrderDelta, out parent, out anchor); return; } GetAfterSortOrder(target, itemCount, out sortOrder, out sortOrderDelta, out parent, out anchor); }
public DragCopyPipeline WithParameters([NotNull] ItemTreeViewItem target, [NotNull] IEnumerable <IItem> items, ControlDragAdornerPosition position, DragDropKeyStates keyStates) { Assert.ArgumentNotNull(target, nameof(target)); Assert.ArgumentNotNull(items, nameof(items)); KeyStates = keyStates; Target = target; Items = items; Position = position; Start(); return(this); }
private void MoveRenderings([CanBeNull] LayoutDesignerItem target, ControlDragAdornerPosition position) { var selectedItems = new List <LayoutDesignerItem>(); foreach (var selectedItem in List.SelectedItems.OfType <LayoutDesignerItem>()) { selectedItems.Add(selectedItem); } if ((Keyboard.Modifiers & ModifierKeys.Shift) != ModifierKeys.Shift) { var text = string.Format("Are you sure you want to move these {0} elements?", selectedItems.Count); if (selectedItems.Count == 1) { var selectedItem = selectedItems.First(); var renderingItem = selectedItem as RenderingItem; if (renderingItem != null) { text = string.Format("Are you sure you want to move the '{0}' rendering?", renderingItem.GetDisplayName()); } var placeholderItem = selectedItem as PlaceholderItem; if (placeholderItem != null) { text = string.Format("Are you sure you want to move the '{0}' placeholder?", placeholderItem.Name); } } if (AppHost.MessageBox(text, "Confirmation", MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK) { return; } } var index = target != null?items.IndexOf(target) : items.Count; foreach (var selectedItem in selectedItems) { var i = items.IndexOf(selectedItem); if (i < index) { index--; } items.Remove(selectedItem); } if (target != null && items.IndexOf(target) >= 0 && position == ControlDragAdornerPosition.Bottom) { index++; } if (index < 0) { index = 0; } var modified = false; object selected = null; for (var n = selectedItems.Count - 1; n >= 0; n--) { var selectedItem = selectedItems[n]; if (selected == null) { selected = selectedItem; } items.Insert(index, selectedItem); modified = true; } List.SelectedItem = selected; if (modified) { Modified = true; } }
private void CopyRenderings([CanBeNull] LayoutDesignerItem target, ControlDragAdornerPosition position) { var selectedItems = List.SelectedItems.OfType <RenderingItem>().ToList(); if (!selectedItems.Any()) { return; } var index = target != null?items.IndexOf(target) : items.Count; if (target != null && items.IndexOf(target) >= 0 && position == ControlDragAdornerPosition.Bottom) { index++; } if (index < 0) { index = 0; } string placeholderKey = null; var renderingTarget = target as RenderingItem; if (renderingTarget != null) { placeholderKey = renderingTarget.PlaceholderKey.Key; } var writer = new StringWriter(); var output = new XmlTextWriter(writer); output.WriteStartElement("renderings"); foreach (var selectedItem in selectedItems) { selectedItem.Write(output, true); } output.WriteEndElement(); var root = writer.ToString().ToXElement(); if (root == null) { return; } var renderings = root.Elements().Select(element => new RenderingItem(this, DatabaseUri, element, true)).ToList(); foreach (var rendering in renderings) { items.Insert(index, rendering); if (!string.IsNullOrEmpty(placeholderKey)) { rendering.PlaceholderKey = new PlaceHolderKey(placeholderKey); } } List.SelectedItem = renderings.FirstOrDefault(); Modified = true; }