public override void doEaGuiStuff() { base.doEaGuiStuff(); EA.Element realElement = ActivityNodeEAElement.getRealElement(); if (StatementExpression == null) { realElement.Notes = ""; realElement.Update(); } else { realElement.Notes = StatementExpression.ToString(); //diagramObject.right = diagramObject.left + 20 + longestConstraint * 5; foreach (String id in EAUtil.getDiagramIDsOfObject(ActivityNodeEAElement, Repository)) { if (id != "") { EA.Diagram currentDiagram = Repository.GetOriginalRepository().GetDiagramByID(int.Parse(id)); if (currentDiagram != null) { EA.DiagramObject diagramObject = EAEcoreAddin.Util.EAUtil.findDiagramObject(Repository, realElement, currentDiagram); if (diagramObject != null) { diagramObject.right = diagramObject.left + 20 + StatementExpression.ToString().Length * 5; diagramObject.bottom = diagramObject.top - 80; diagramObject.Update(); } } } } } realElement.Stereotype = SDMModelingMain.StatementNodeStereotype; realElement.Update(); }
public static int jumpToAnchorPredecessor(EA.Repository repository, int currentDiagramId) { SQLRepository sqlRepository = new SQLRepository(repository, false); if (targetDiagramIdToSourceDiagramId.ContainsKey(currentDiagramId)) { int sourceDiagramId = targetDiagramIdToSourceDiagramId[currentDiagramId]; repository.OpenDiagram(sourceDiagramId); lastAnchorSourceId = currentDiagramId; targetDiagramIdToSourceDiagramId.Remove(currentDiagramId); return(currentDiagramId); } else { EA.Diagram diagramToOpen = null; EA.Diagram currentDiagram = repository.GetDiagramByID(currentDiagramId); if (currentDiagram != null) { if (currentDiagram.ParentID != 0) { SQLElement parentElement = sqlRepository.GetElementByID(currentDiagram.ParentID); List <String> diagramIds = EAUtil.getDiagramIDsOfObject(parentElement, sqlRepository); while (diagramIds.Count == 1 && diagramIds[0] == "") { if (parentElement.ParentID != 0) { diagramIds = EAUtil.getDiagramIDsOfObject(sqlRepository.GetElementByID(parentElement.ParentID), sqlRepository); } } diagramToOpen = repository.GetDiagramByID(int.Parse(diagramIds[0])); } if (diagramToOpen == null) { EA.Package parentPackage = repository.GetPackageByID(currentDiagram.PackageID); if (parentPackage.Diagrams.Count > 0) { EA.Diagram firstDiagram = parentPackage.Diagrams.GetAt(0) as EA.Diagram; if (firstDiagram.DiagramID != currentDiagramId) { diagramToOpen = firstDiagram; } else { if (parentPackage.ParentID != 0) { parentPackage = repository.GetPackageByID(parentPackage.ParentID); if (parentPackage.Diagrams.Count > 0) { EA.Diagram parentDiagram = parentPackage.Diagrams.GetAt(0) as EA.Diagram; if (parentDiagram.DiagramID != currentDiagramId) { diagramToOpen = parentDiagram; } } } } } } if (diagramToOpen != null) { lastAnchorSourceId = currentDiagramId; repository.OpenDiagram(diagramToOpen.DiagramID); return(currentDiagramId); } } } return(-1); }
private void autoSetDiagramObjectSize(String bindingExprText) { //three empty lines to ensure the attribute assignments output are on the correct position int longestOvStringLength = 0; foreach (AttributeAssignment attrAssignment in this.AttributeAssignments) { String assignmentString = attrAssignment.ToString(); if (assignmentString.StartsWith(this.sqlElement.Name)) { assignmentString = assignmentString.Remove(0, this.sqlElement.Name.Length + 1); } if (assignmentString.Length > longestOvStringLength) { longestOvStringLength = assignmentString.Length; } sqlElement.getRealElement().Notes += "\r\n" + assignmentString; } foreach (Constraint constraint in this.Constraints) { String constraintString = constraint.ToString(); constraintString = constraintString.Remove(0, this.sqlElement.Name.Length + 1); if (constraintString.Length > longestOvStringLength) { longestOvStringLength = constraintString.Length; } sqlElement.getRealElement().Notes += "\r\n" + constraintString; } if (bindingExprText.Length > longestOvStringLength) { longestOvStringLength = bindingExprText.Length; } if (this.sqlElement.Name.Length > longestOvStringLength) { longestOvStringLength = this.sqlElement.Name.Length; } if (this.Classifier != null && (sqlElement.Name + this.Classifier.EaElement.Name).Length > longestOvStringLength) { longestOvStringLength = (sqlElement.Name + this.Classifier.EaElement.Name).Length; } int widthMultiplier = 6; int widthOffset = 10; //set the size of all diagramObjects of the current objectvariable foreach (String id in EAUtil.getDiagramIDsOfObject(sqlElement, Repository)) { if (id != "") { EA.Diagram currentDiagram = Repository.GetOriginalRepository().GetDiagramByID(int.Parse(id)); if (currentDiagram != null) { EA.DiagramObject diagramObject = EAEcoreAddin.Util.EAUtil.findDiagramObject(Repository, sqlElement.getRealElement(), currentDiagram); if (diagramObject != null) { //only auto update width right after OV creation if (Main.getLastBroadcastMethod() == Main.EAOnPostNewElement) { diagramObject.right = diagramObject.left + widthOffset + longestOvStringLength * widthMultiplier; //size shouldnt be less than 90 if (diagramObject.right - diagramObject.left < 90) { diagramObject.right = diagramObject.left + 90; } } int assignmentConstraintCount = this.AttributeAssignments.Count + this.Constraints.Count; //ideal height if there is exactly one assignment or constraint if (assignmentConstraintCount == 1) { diagramObject.bottom = diagramObject.top - 30 - assignmentConstraintCount * 25; } //ideal height for more than one else if (assignmentConstraintCount > 1) { diagramObject.bottom = diagramObject.top - 50 - assignmentConstraintCount * 13; } //else leave height as it is diagramObject.Update(); } } } } }