public Main() { sdmModeling = new SDMModelingMain(); ecoreModeling = new ECOREModelingMain(); tggModeling = new TGGModelingMain(ecoreModeling); incrementalUpdateAdapter = new EcoreDiagramUpdateAdapter(); }
public void EA_OnPostOpenDiagram(EA.Repository repository, EA.Diagram openedDiagram) { if (openedDiagram.MetaType == TGGModelingMain.TggRuleDiagramMetatype[0]) { SDMModelingMain.createAnchorElementIfNecessary(repository, openedDiagram, true); } else if (openedDiagram.MetaType == TGGModelingMain.TggRulesDiagramMetatype[0]) { SDMModelingMain.createAnchorElementIfNecessary(repository, openedDiagram, true); } }
private void appendNewMethodAndSdm() { repository.SaveDiagram(oldSDMDiagram.DiagramID); EA.Element eClass = getContainingClass(); this.newMethod = eClass.Methods.AddNew(textBoxNewSDM.Text, "void") as EA.Method; newMethod.Update(); SDMModelingMain.createStoryDiagram(sqlRepository.GetMethodByID(newMethod.MethodID), sqlRepository.GetOriginalRepository(), oldSDMDiagram); newSdmContainer = sqlRepository.GetOriginalRepository().GetElementByID(sqlRepository.GetCurrentDiagram().ParentID); EA.Diagram newSdmDiagram = newSdmContainer.Diagrams.GetAt(0) as EA.Diagram; EA.Element newStartNode = findNewStartNode(newSdmContainer); createExtractedSDMStatementNode(); int leftMax = 10000000; int topMax = -100000; computeLeftAndTopMin(ref leftMax, ref topMax); //copy elements foreach (EA.Element selectedElement in this.selectedActivityNodes) { selectedElement.ParentID = newSdmContainer.ElementID; EA.DiagramObject newPatternDiagramObject = null; copyDiagramObjects(leftMax - 100, topMax + 100, newSdmDiagram, selectedElement); EA.DiagramObject selectedDiagramObject = getDiagramObject(selectedElement.ElementID); if (selectedDiagramObject != null) { newPatternDiagramObject = copyDiagramObject(leftMax - 100, topMax + 100, newSdmDiagram, selectedDiagramObject, selectedElement, 2); EAUtil.deleteDiagramObject(repository, oldSDMDiagram, selectedElement); } //deleteUnselectedConnectors(selectedElement); selectedElement.Update(); arrangeUnselectedConnectors(newSdmContainer, newSdmDiagram, newStartNode, selectedElement, newPatternDiagramObject.bottom, newPatternDiagramObject.left); } repository.ReloadDiagram(newSdmDiagram.DiagramID); repository.ReloadDiagram(oldSDMDiagram.DiagramID); repository.OpenDiagram(oldSDMDiagram.DiagramID); }
private void buttonToMethodCallExpression_Click(object sender, EventArgs e) { Object selectedSource = expressionProvider.getSelectedSecond(); if (selectedSource is SDMExpressionHelper.SecondObject) { SDMExpressionHelper.SecondObject secondObject = selectedSource as SDMExpressionHelper.SecondObject; if (secondObject.eaObject is SQLMethod) { SQLMethod selectedOperation = secondObject.eaObject as SQLMethod; if (selectedOperation != null) { SQLMethod method = repository.GetMethodByID(selectedOperation.MethodID); EA.Diagram currentDiagram = repository.GetCurrentDiagram(); int sdmDiagramId = SDMUtil.getSDMDiagramID(repository, method); if (sdmDiagramId != SDMUtil.UNKNOWN_SDM_DIAGRAM_ID) { Navigator.addAnchorEntry(sdmDiagramId, currentDiagram.DiagramID); repository.OpenDiagram(sdmDiagramId); this.ParentForm.Close(); } else { CreateSDMDialog.CreateSDMDialog createSdmDialog = new CreateSDMDialog.CreateSDMDialog(); if (createSdmDialog.ShowDialog() == DialogResult.OK) { SDMModelingMain.createStoryDiagram(method, repository.eaRepository, currentDiagram); this.ParentForm.Close(); } } } } } }
private void extractStoryPattern() { Dictionary <EA.DiagramObject, EA.Element> diagramObjectsToElement = new Dictionary <EA.DiagramObject, EA.Element>(); EA.Diagram newDiagram = null; //create new diagram if necessary if (activityTabsForm.ActivityNode.ActivityNodeEAElement.Diagrams.Count == 0) { newDiagram = (EA.Diagram)activityTabsForm.ActivityNode.ActivityNodeEAElement.getRealElement().Diagrams.AddNew(activityTabsForm.ActivityNode.ActivityNodeEAElement.Name, SDMModelingMain.SdmDiagramMetatype[0]); } //or choose already existing diagram else { newDiagram = (activityTabsForm.ActivityNode.ActivityNodeEAElement.Diagrams.GetAt(0) as SQLDiagram).getRealDiagram(); newDiagram.Name = activityTabsForm.ActivityNode.ActivityNodeEAElement.Name; newDiagram.Update(); } newDiagram.ParentID = activityTabsForm.ActivityNode.ActivityNodeEAElement.ElementID; repository.SaveDiagram(newDiagram.DiagramID); newDiagram.Update(); int leftMin = int.MaxValue; int topMax = int.MinValue; //compute the minimal left value and the maximal top value of all object variables contained by current StoryNode foreach (SQLElement actElement in activityTabsForm.ActivityNode.ActivityNodeEAElement.Elements) { EA.DiagramObject actDiagObj = EAEcoreAddin.Util.EAUtil.findDiagramObject(repository, actElement.getRealElement(), currentSdmDiagram); if (actDiagObj != null) { if (leftMin > actDiagObj.left) { leftMin = actDiagObj.left; } if (topMax < actDiagObj.top) { topMax = actDiagObj.top; } diagramObjectsToElement.Add(actDiagObj, actElement.getRealElement()); } } //compute the difference for the new diagram objects so they are pinned on the left top corner int differenceLeftRight = leftMin - 40; if (differenceLeftRight < 0) { differenceLeftRight = 40; } int differenceTopBottom = topMax + 40; if (differenceTopBottom > 0) { differenceTopBottom = -40; } //delete all old diagramobjects and create new ones on the extracted diagram- foreach (EA.DiagramObject oldDiagramObject in diagramObjectsToElement.Keys) { EA.Element element = diagramObjectsToElement[oldDiagramObject]; EAUtil.deleteDiagramObject(repository.GetOriginalRepository(), currentSdmDiagram, element); EA.DiagramObject newDiaObj = (EA.DiagramObject)newDiagram.DiagramObjects.AddNew("", element.Type); newDiaObj.left = oldDiagramObject.left - differenceLeftRight; newDiaObj.right = oldDiagramObject.right - differenceLeftRight; newDiaObj.top = oldDiagramObject.top - differenceTopBottom; newDiaObj.bottom = oldDiagramObject.bottom - differenceTopBottom; newDiaObj.ElementID = element.ElementID; newDiaObj.Update(); } activityTabsForm.ActivityNode.ActivityNodeEAElement.getRealElement().Update(); repository.SaveDiagram(currentSdmDiagram.DiagramID); repository.ReloadDiagram(currentSdmDiagram.DiagramID); repository.ReloadDiagram(newDiagram.DiagramID); buttonEvacuate.Text = "Embed Story Pattern"; Navigator.addAnchorEntry(newDiagram.DiagramID, currentSdmDiagram.DiagramID); repository.OpenDiagram(newDiagram.DiagramID); SDMModelingMain.setAnchorElementTags(repository, currentSdmDiagram, activityTabsForm.ActivityNode.ActivityNodeEAElement); this.ParentForm.Close(); EAEcoreAddin.Util.EAUtil.setTaggedValue(repository, activityTabsForm.ActivityNode.ActivityNodeEAElement.getRealElement(), Main.MoflonExtractedStoryPatternTaggedValueName, "true"); }