コード例 #1
0
        private bool IsLinkUniqueBothWays(ClassDiagramLinkData linkData, string category)
        {
            int count1 = (diagram.LinksSource as ObservableCollection <ClassDiagramLinkData>)
                         .Count(x => x.From == linkData.From && x.To == linkData.To && x.Category == category);
            int count2 = (diagram.LinksSource as ObservableCollection <ClassDiagramLinkData>)
                         .Count(x => x.From == linkData.To && x.To == linkData.From && x.Category == category);

            return(count1 + count2 < 2);
        }
コード例 #2
0
 private bool IsLinkUnique(ClassDiagramLinkData linkData, string category)
 {
     if ((diagram.LinksSource as ObservableCollection <ClassDiagramLinkData>)
         .Count(x => x.From == linkData.From && x.To == linkData.To && x.Category == category) > 1)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
コード例 #3
0
        private void diagram_LinkRelinked(object sender, DiagramEventArgs e)
        {
            Link link = (e.Part as Link);
            ClassDiagramLinkData linkData = link.Data as ClassDiagramLinkData;
            ClassDiagramNodeData fromData = link.FromData as ClassDiagramNodeData;
            ClassDiagramNodeData toData   = link.ToData as ClassDiagramNodeData;

            var isValid = CheckLink(fromData, toData, linkData, linkData.Category);

            if (!isValid)
            {
                (diagram.LinksSource as ObservableCollection <ClassDiagramLinkData>).Remove(linkData);
            }
        }
コード例 #4
0
        // event handler pro validaci myší vytvořených linků jakožto povolených vztahů z UPMM
        private void diagram_LinkDrawn(object sender, Northwoods.GoXam.DiagramEventArgs e)
        {
            Link link = (e.Part as Link);
            ClassDiagramLinkData linkData = link.Data as ClassDiagramLinkData;
            ClassDiagramNodeData fromData = link.FromData as ClassDiagramNodeData;
            ClassDiagramNodeData toData   = link.ToData as ClassDiagramNodeData;

            var isValid = CheckLink(fromData, toData, linkData, category: SelectedLinkType);

            if (!isValid)
            {
                (diagram.LinksSource as ObservableCollection <ClassDiagramLinkData>).Remove(linkData);
            }
        }
コード例 #5
0
        private bool CheckLink(ClassDiagramNodeData fromData, ClassDiagramNodeData toData, ClassDiagramLinkData linkData, string category)
        {
            if (category == Constants.UML_CD_ANCHOR)
            {
                if ((fromData.Category == Constants.UML_CD_NOTE || toData.Category == Constants.UML_CD_NOTE) && fromData.Category != toData.Category)
                {
                    linkData.Category = category;
                    linkData.Color    = Constants.VALID_COLOR;

                    return(IsLinkUniqueBothWays(linkData, category));
                }
                else
                {
                    return(false);
                }
            }
            else if (fromData.Category == Constants.UML_CD_NOTE || toData.Category == Constants.UML_CD_NOTE)
            {
                return(false);
            }
            else
            {
                string relationship = Uml4Upmm.CheckCDRelationship(fromData.IRI, toData.IRI, ClassDiagramPage.IsValidatingWithModel, out string color, category);

                if (relationship == null)
                {
                    return(false);
                }
                else
                {
                    linkData.Category = category;
                    linkData.FromText = "";
                    linkData.ToText   = "";
                    linkData.Text     = relationship == "" ? relationship : "<<" + relationship + ">>";
                    linkData.Color    = color;
                }
            }
            return(IsLinkUnique(linkData, category));
        }