public bool CanDrop(IElementClipboardData data) { if (Operator != null) { return(false); } if (data.Items.Length != 1) { return(false); } IElementFactory factory = data.Items[0].Factory; if (factory == null) { factory = Owner.Context.ElementFactoryManager.GetFactory(data.Items[0].ElementMetadata.ElementTypeId); } if (factory == null) { return(false); } return(factory.ElementType.IsOperator()); }
public static IElement[] CreateElements(this IElementOwner owner, IElementClipboardData data) { if (owner == null) { throw new ArgumentNullException(nameof(owner)); } if (data == null) { throw new ArgumentNullException(nameof(data)); } //Create the elements return(data.Items .Select(item => { if (item.ElementMetadata != null) { return owner.Context.ElementBuilder.CreateElement(owner, item.ElementMetadata); } if (item.Factory != null) { return owner.CreateElement(item.Factory); } //This shouldn't happen return null; }) .ToArray()); }
public bool Drop(IElementClipboardData data, bool insertAtBeginning) { if (CanDrop(data)) { var elements = this.CreateElements(data); var index = insertAtBeginning ? 0 : Elements.Count; foreach (var element in elements) { Elements.Insert(index++, element); } MarkDirty(); SaveUndoState(); //Make sure that the new items are selected. SelectionService.SelectNone(); foreach (var selectable in elements) { SelectionService.Select(selectable); } return(true); } return(false); }
public void Drop(IElementClipboardData data) { if (CanDrop(data)) { var elements = Owner.CreateElements(data); Operator = elements[0] as IOperator; Owner.SaveUndoState(); } }
public void Drop(IElementClipboardData data) { if (CanDrop(data)) { var elements = Owner.CreateElements(data); foreach (var element in elements) { Elements.Add(element); } Owner.SaveUndoState(); } }
public bool CanDrop(IElementClipboardData data) { if (Operator != null) return false; if (data.Items.Length != 1) return false; IElementFactory factory = data.Items[0].Factory; if (factory == null) { factory = Owner.Context.ElementFactoryManager.GetFactory(data.Items[0].ElementMetadata.ElementTypeId); } if (factory == null) return false; return factory.ElementType.IsOperator(); }
public void Drop(IElement element, IElementClipboardData data) { if (CanDrop(data)) { var index = IndexOf(element); if (index >= 0) { //Create the elements var elements = _owner.CreateElements(data); foreach (var newElement in elements) { Insert(++index, newElement); } _owner.SaveUndoState(); } } }
public static bool AreAllItemsStatements(this IElementOwner owner, IElementClipboardData data) { if (owner == null) { throw new ArgumentNullException(nameof(owner)); } if (data == null) { throw new ArgumentNullException(nameof(data)); } return(data.Items.Any() && data.Items.All(i => { IElementFactory factory; if (i.Factory != null) { //First try to use the factory factory = i.Factory; } else if (i.ElementMetadata != null) { //Get the factory for this element type factory = owner.Context.ElementFactoryManager.GetFactory(i.ElementMetadata.ElementTypeId); } else { //This shouldn't happen return false; } //Determine if this is a statement return factory.ElementType.IsStatement(); })); }
public bool CanDrop(IElementClipboardData data) { return(this.AreAllItemsStatements(data)); }
public bool Drop(IElementClipboardData data, bool insertAtBeginning) { if (CanDrop(data)) { var elements = this.CreateElements(data); var index = insertAtBeginning ? 0 : Elements.Count; foreach (var element in elements) { Elements.Insert(index++, element); } MarkDirty(); SaveUndoState(); //Make sure that the new items are selected. SelectionService.SelectNone(); foreach (var selectable in elements) { SelectionService.Select(selectable); } return true; } return false; }
public bool CanDrop(IElementClipboardData data) { return this.AreAllItemsStatements(data); }
void IElementParent.Drop(IElement element, IElementClipboardData data) { //TODO: }
bool IElementParent.CanDrop(IElementClipboardData data) { return false; }
public bool CanDrop(IElementClipboardData data) { return Parent?.CanDrop(data) == true; }
bool IElementParent.CanDrop(IElementClipboardData data) { return(false); }
public void Drop(IElementClipboardData data) { Parent?.Drop(this, data); }
public bool CanDrop(IElementClipboardData data) { return(Parent?.CanDrop(data) == true); }
//public static IElementDropTarget GetDropTarget(this FrameworkElement designRoot, Point position, Type elementType, Guid? returnType) //{ // var dropTargets = designRoot?.HitTestForTopDataContext<IElementDropTarget>(position); // return dropTargets?.FirstOrDefault(d => d.CanDrop(elementType, returnType)); //} public static IElementDropTarget GetDropTarget(this FrameworkElement designRoot, Point position, IElementClipboardData data) { var dropTargets = designRoot?.HitTestForTopDataContext <IElementDropTarget>(position); return(dropTargets?.FirstOrDefault(d => d.CanDrop(data))); }