public override bool CanMoveLinkTarget(DesignerItem source, DesignerItem target, DesignerItem newTarget) { string sourceName = source.Renderer.Text; string targetName = target.Renderer.Text; string newTargetName = newTarget.Renderer.Text; if (targetName.Equals(newTargetName)) { return(true); } string title = "Unable to move link"; string message = "Unable to move link from : " + targetName + " to : " + newTargetName + "."; if (source.Tag == null || target.Tag == null || newTarget.Tag == null) { message = message + "\n" + "Source or Target Entity is null!"; Kernel.Util.MessageDisplayer.DisplayError(title, message); return(false); } TransformationTreeItem sourceTag = (TransformationTreeItem)source.Tag; TransformationTreeItem targetTag = (TransformationTreeItem)target.Tag; TransformationTreeItem newTargetTag = (TransformationTreeItem)newTarget.Tag; if (newTargetTag.parent != null) { message = message + "\n" + newTargetName + " already has a parent."; Kernel.Util.MessageDisplayer.DisplayError(title, message); return(false); } if (sourceTag.parent != null) { foreach (TransformationTreeItem item in newTargetTag.GetDescendentsTree()) { if (item.name.Equals(sourceTag.name)) { message = message + "\n" + "Unable to build cyclic model."; Kernel.Util.MessageDisplayer.DisplayError(title, message); return(false); } } } return(true); }