示例#1
0
        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);
        }