public void Drop(IDropInfo dropInfo) { if (dropInfo.Data is OverlayBlockDefinitionItemModel dropItem) { if (dropInfo.TargetItem is OverlayLinkModel overlayLink && dropInfo.DropTargetAdorner == DropTargetAdorners.Highlight) { // change the link definition of an existing text link item overlayLink.LinkedBlock = dropItem; } else { var item = new OverlayLinkModel(Container.Items) { LinkedBlock = dropItem }; Container.Items.Insert(dropInfo.UnfilteredInsertIndex, item); } }
public void Drop(IDropInfo dropInfo) { if (dropInfo.Data is TextBlockDefinitionItemModel textDef) { // Dropping the definition into a blockcontainer if (dropInfo.TargetCollection is IdeCollection <IdeBaseItem> collection && collection.Parent is BlockContainer container) { var link = new TextLinkModel(container.Items) { LinkedBlock = textDef }; container.Items.Insert(dropInfo.UnfilteredInsertIndex, link); } // change the link definition of an existing text link item else if (dropInfo.TargetItem is TextLinkModel textLink) { textLink.LinkedBlock = textDef; } // Dropping the definition into a conditional case else if (dropInfo.TargetItem is IBaseConditionalCase conditionalCase) { var link = new TextLinkModel(conditionalCase.BlockContainer.Items) { LinkedBlock = textDef }; conditionalCase.BlockContainer.Items.Add(link); } return; } if (dropInfo.Data is OverlayBlockDefinitionItemModel overlayDef) { // Dropping the definition into a blockcontainer if (dropInfo.TargetCollection is IdeCollection <IdeBaseItem> collection && collection.Parent is BlockContainer container) { var link = new OverlayLinkModel(container.Items) { LinkedBlock = overlayDef }; container.AddLink(link, dropInfo.UnfilteredInsertIndex); } // Dropping the definition into a conditional case else if (dropInfo.TargetItem is IBaseConditionalCase conditionalCase) { var link = new OverlayLinkModel(conditionalCase.BlockContainer.Items) { LinkedBlock = overlayDef, }; conditionalCase.BlockContainer.AddLink(link, conditionalCase.BlockContainer.Items.Count); } return; } if (dropInfo.Data is OverlayLinkModel overlayLink) { if (IsOverlayHandler == false) { return; } if (dropInfo.TargetItem is IBaseConditionalCase conditionalCase) { overlayLink.RemoveItem(); conditionalCase.BlockContainer.AddLink(overlayLink, conditionalCase.BlockContainer.Items.Count); } else if (dropInfo.TargetItem is IBaseBlock block) { overlayLink.RemoveItem(); int insertIndex = dropInfo.UnfilteredInsertIndex; (block.Source.Parent as BlockContainer).AddLink(overlayLink, insertIndex); } } else { DragDrop.DefaultDropHandler.Drop(dropInfo); } }