Пример #1
0
        private static void FixRoles(VisioConnector Connector, DomainRelationship Relationship)
        {
            String SourceName = new VisioClass(Connector.Source).Name;
            String TargetName = new VisioClass(Connector.Target).Name;

            //if (Relationship.Source.RolePlayer == SourceName &&
            //    Relationship.Target.RolePlayer == TargetName) return;

            String SourceText = Connector.SourceText == String.Empty ? SourceName : Connector.SourceText;
            String TargetText = Connector.TargetText == String.Empty ? TargetName : Connector.TargetText;

            DomainRole source = Relationship.Source;
            source.SetAttribute("Name", "s" + SourceName + "Name");
            source.SetAttribute("DisplayName", SourceText);
            source.SetAttribute("PropertyName", "s" + TargetName + "Prop");
            source.SetAttribute("PropertyDisplayName", TargetText);
            source.Multiplicity = MultiplicityHelper.Compatible(Connector.SourceMultiplicity);

            DomainRole target = Relationship.Target;
            target.SetAttribute("Name", "t" + TargetName + "Name");
            target.SetAttribute("DisplayName", TargetText);
            target.SetAttribute("PropertyName", "t" + SourceName + "Prop");
            target.SetAttribute("PropertyDisplayName", SourceText);
            target.Multiplicity = MultiplicityHelper.Compatible(Connector.TargetMultiplicity);
        }
Пример #2
0
 private static bool ExistsSame(VisioPage Page, VisioConnector VisioConnector, String Name)
 {
     foreach (VisioConnector vc in Page.Relationships)
     {
         if (!VisioConnector.Equals(vc) && vc.Name == Name)
         {
             return true;
         }
     }
     return false;
 }
Пример #3
0
 public static Shape DropConnection(
     Shape source,
     Shape target,
     string masterNameU,
     ClassConnections sourcePoint,
     ClassConnections targetPoint)
 {
     VisioConnector connector = new VisioConnector(
         Drop(source.Document, masterNameU, 0, 0)
     );
     connector.SetSource(source, sourcePoint);
     connector.SetTarget(target, targetPoint);
     return connector.Shape;
 }
Пример #4
0
        public static String UniqueName(VisioPage Page, VisioConnector VisioConnector)
        {
            String Name = VisioConnector.Name;
            Regex regex = new Regex(@"^(.*?)([0-9]+)$");
            Match m = regex.Match(Name);
            String BaseName = m.Success ? m.Groups[1].Value : Name;
            int index = m.Success ? int.Parse(m.Groups[2].Value) : 1;

            while (ExistsSame(Page, VisioConnector, Name))
            {
                Name = BaseName + (++index);
            }

            Trace.WriteLine(Name);
            return Name;
        }
Пример #5
0
        private void SynchronizeRelationships(List<DomainRelationship> implementationOnlyRelationships)
        {
            Trace.WriteLine("Synchronizing Relationships");
            Trace.Indent();
            foreach (DomainRelationship dr in Doc.Dsl.Relationships)
            {
                Shape shape = Page.Find(dr.GUID);
                //if (dr.Properties.Count > 0)
                //{
                //    // Create a new class for this relationship
                //    // and associate it with an existing Dsl relationship
                //    VisioClass vc = new VisioClass(
                //        shape == null ? VisioMaster.Drop(Page.Document, "Class") : shape);
                //    vc.GUID = dr.GUID;
                //    vc.IsDslRelationClass = true;
                //    vc.Name = dr.Xml.GetAttribute("Name");
                //    vc.DisplayName = dr.Xml.GetAttribute("DisplayName");

                //    VisioConnector ingoingConnector = new VisioConnector(VisioMaster.Drop(Page.Document, (dr.IsEmbedding ? Constants.Composition : Constants.Association)));
                //    ingoingConnector.SetSourceMultiplicity(dr.Source.Multiplicity);
                //    ingoingConnector.SetTargetMultiplicity(Multiplicity.One);

                //    Shape sourceShape = Page.Find(Doc.Dsl.Classes[dr.Source.RolePlayer].GUID);
                //    ingoingConnector.Source = sourceShape;
                //    ingoingConnector.Target = vc.Shape;

                //    VisioConnector outgoingConnector = new VisioConnector(VisioMaster.Drop(Page.Document, (dr.IsEmbedding ? Constants.Composition : Constants.Association)));
                //    outgoingConnector.SetSourceMultiplicity(Multiplicity.One);
                //    outgoingConnector.SetTargetMultiplicity(dr.Target.Multiplicity);

                //    outgoingConnector.Source = vc.Shape;
                //    Shape targetShape = Page.Find(Doc.Dsl.Classes[dr.Target.RolePlayer].GUID);
                //    outgoingConnector.Target = targetShape;

                //}
                //else
                if (!implementationOnlyRelationships.Contains(dr))
                {
                    VisioConnector vc = new VisioConnector(
                        shape == null ? VisioMaster.Drop(Page.Document, (dr.IsEmbedding ? Constants.Composition : Constants.Association)) : shape
                    );
                    vc.GUID = dr.GUID;
                    vc.Name = dr.Xml.GetAttribute("Name");
                    vc.DisplayName = dr.Xml.GetAttribute("DisplayName");
                    vc.SourceText = dr.Source.Xml.GetAttribute("DisplayName");
                    vc.TargetText = dr.Target.Xml.GetAttribute("DisplayName");
                    vc.SetSourceMultiplicity(dr.Source.Multiplicity);
                    vc.SetTargetMultiplicity(dr.Target.Multiplicity);

                    shape = Page.Find(Doc.Dsl.Classes[dr.Source.RolePlayer].GUID);
                    if (vc.Source != shape) vc.Source = shape;

                    shape = Page.Find(Doc.Dsl.Classes[dr.Target.RolePlayer].GUID);
                    if (vc.Target != shape) vc.Target = shape;
                }
            }
            Trace.Unindent();
        }
Пример #6
0
        private void SynchronizeClasses(List<DomainClass> implementationOnlyClasses)
        {
            Trace.WriteLine("Synchronizing Classes");
            Trace.Indent();
            foreach (DomainClass dc in Doc.Dsl.Classes)
            {
                if (!implementationOnlyClasses.Contains(dc))
                {
                    Shape shape = Page.Find(dc.GUID);
                    VisioClass vc = new VisioClass(shape == null ? VisioMaster.Drop(Page.Document, "Class") : shape);
                    vc.GUID = dc.GUID;
                    vc.Name = dc.Xml.GetAttribute("Name");
                    vc.DisplayName = dc.Xml.GetAttribute("DisplayName");
                    String attrs = "";
                    foreach (DomainProperty prop in dc.Properties)
                    {
                        attrs += prop.Xml.GetAttribute("Name") + "\n";
                    }
                    vc.Attributes = attrs.Trim();
                }
            }
            foreach (DomainClass dc in Doc.Dsl.Classes)
            {
                if (!implementationOnlyClasses.Contains(dc))
                {
                    if (dc.BaseClass != null)
                    {
                        Shape vc = Page.Find(dc.GUID);
                        Shape bc = Page.Find(Doc.Dsl.Classes[dc.BaseClass].GUID);

                        VisioList<VisioConnector> connectors = new VisioList<VisioConnector>(
                            Page.Shapes,
                            delegate(Shape shape)
                            {
                                VisioConnector conn = new VisioConnector(shape);
                                return conn.Source == vc && conn.Target == bc;
                            }
                        );
                        if (connectors.Count == 0)
                        {
                            VisioMaster.DropConnection(vc, bc, Constants.Generalization);
                        }
                    }
                }
            }
            Trace.Unindent();
        }
Пример #7
0
 public AssociationAction(VisioConnector targetShape)
 {
     Connector = targetShape.ToStaticConnector();
 }
Пример #8
0
 public AssociationDeleted(VisioConnector targetShape)
     : base(targetShape)
 {
 }