/// clones a diagram cloning all diagramElements and their related /// elements public UML.Diagrams.Diagram cloneDiagram(UML.Classes.Kernel.Element owner, UML.Diagrams.Diagram diagram) { Dictionary <UML.Diagrams.DiagramElement, UML.Diagrams.DiagramElement> diagramElementsMap = new Dictionary <UML.Diagrams.DiagramElement, UML.Diagrams.DiagramElement>(); Dictionary <UML.Classes.Kernel.Element, UML.Classes.Kernel.Element> elementsMap = new Dictionary <UML.Classes.Kernel.Element, UML.Classes.Kernel.Element>(); UML.Diagrams.Diagram clonedDiagram = null; if (diagram is UML.Diagrams.ClassDiagram) { clonedDiagram = this.createNewDiagram <UML.Diagrams.ClassDiagram>(owner, diagram.name); } else if (diagram is UML.Diagrams.SequenceDiagram) { clonedDiagram = this.createNewDiagram <UML.Diagrams.SequenceDiagram>(owner, diagram.name); } clonedDiagram.name = diagram.name; clonedDiagram.width = diagram.width; clonedDiagram.height = diagram.height; clonedDiagram.comment = diagram.comment; List <UML.Diagrams.DiagramElement> diagramElements = diagram.diagramElements.ToList(); diagramElements = this.sortDiagramElements(diagramElements); foreach (UML.Diagrams.DiagramElement diagramElement in diagramElements) { UML.Diagrams.DiagramElement clonedDiagramElement = this.cloneDiagramElement(clonedDiagram, diagramElement, elementsMap); if (clonedDiagramElement != null) { diagramElementsMap.Add(diagramElement, clonedDiagramElement); elementsMap.Add(diagramElement.element, clonedDiagramElement.element); } } foreach (UML.Classes.Kernel.Element element in elementsMap.Keys) { foreach (UML.Classes.Kernel.Element subElement in element.ownedElements) { this.cloneElement(elementsMap[element], subElement, elementsMap, true); } } return(clonedDiagram); }
/// creates a set of stereotypes based on the comma separated names string /// and attaches it to the given Diagram public HashSet <UML.Profiles.Stereotype> createStereotypes (UML.Diagrams.Diagram owner, String names) { HashSet <UML.Profiles.Stereotype> newStereotypes = new HashSet <UML.Profiles.Stereotype>(); String[] stereotypeNames = names.Split(','); foreach (String name in stereotypeNames) { if (name != String.Empty) { UML.Profiles.Stereotype stereotype = this.createStereotype(owner, name); if (stereotype != null) { newStereotypes.Add(stereotype); } } } return(newStereotypes); }
public UML.Diagrams.DiagramElement cloneDiagramElement (UML.Diagrams.Diagram ownerDiagram, UML.Diagrams.DiagramElement diagramElement, Dictionary <UML.Classes.Kernel.Element, UML.Classes.Kernel.Element> clonedElementsMap) { // clone the element itself UML.Classes.Kernel.Element clonedElement = this.cloneElement(ownerDiagram.owner, diagramElement.element, clonedElementsMap, false); // create the new DiagramElement UML.Diagrams.DiagramElement clonedDiagramElement = this.createNewDiagramElement(ownerDiagram, clonedElement); if (clonedDiagramElement != null) { // copy the attributes clonedDiagramElement.xPosition = diagramElement.xPosition; clonedDiagramElement.yPosition = diagramElement.yPosition; } return(clonedDiagramElement); }
public abstract UML.Diagrams.DiagramElement createNewDiagramElement (UML.Diagrams.Diagram owner, UML.Classes.Kernel.Element element);
public override UML.Diagrams.DiagramElement createNewDiagramElement (UML.Diagrams.Diagram owner, UML.Classes.Kernel.Element element) { return(owner.addToDiagram(element)); }
/// returns a new stereotype based on the given name and attached to the /// given diagram public UML.Profiles.Stereotype createStereotype (UML.Diagrams.Diagram owner, String name) { return(new Stereotype(this.model as Model, owner as Element, name)); }