| var association = ECore!EClass.all.selectOne(c|c.name = "Association"); | |
| association.createLinkEndLabel("sourceLabel", true); | |
| association.createLinkEndLabel("targetLabel", false); | |
| operation ECore!EClass createLinkEndLabel(attribute:String, source:Boolean){ | |
| var endName; | |
| if (source) { | |
| endName = "Source"; | |
| } | |
| else { | |
| endName = "Target"; | |
| } | |
| var labelName = self.name + endName + "Label"; | |
| // Create the figure descriptor and the label | |
| var labelFigureDescriptor = | |
| createFigureDescriptor(labelName + "Figure"); | |
| var label = new GmfGraph!Label; | |
| label.name = labelName; | |
| label.text = endName; | |
| labelFigureDescriptor.actualFigure = label; | |
| // Create the diagram label | |
| var diagramLabel = new GmfGraph!DiagramLabel; | |
| diagramLabel.figure = labelFigureDescriptor; | |
| diagramLabel.name = labelName; | |
| diagramLabel.elementIcon = false; | |
| GmfGraph!Canvas.all.first().labels.add(diagramLabel); | |
| // Specify if the label will be placed at the beginning/end of the link | |
| var alignmentFacet = new GmfGraph!AlignmentFacet; | |
| if (source){ | |
| alignmentFacet.alignment = GmfGraph!Alignment#END; | |
| } | |
| else { | |
| alignmentFacet.alignment = GmfGraph!Alignment#BEGINNING; | |
| } | |
| diagramLabel.facets.add(alignmentFacet); | |
| // Specify how far the label should be from the line | |
| var labelOffsetFacet = new GmfGraph!LabelOffsetFacet; | |
| labelOffsetFacet.x = 5; | |
| labelOffsetFacet.y = 5; | |
| diagramLabel.facets.add(labelOffsetFacet); | |
| // Create the label/attribute mapping in the .gmfmap model | |
| var featureLabelMapping = new GmfMap!FeatureLabelMapping; | |
| featureLabelMapping.diagramLabel = diagramLabel; | |
| featureLabelMapping.features.add(self.eAllStructuralFeatures. | |
| selectOne(sf|sf.name = attribute)); | |
| featureLabelMapping.readOnly = false; | |
| var linkMapping = GmfMap!LinkMapping.all. | |
| selectOne(lm|lm.domainMetaElement = self); | |
| linkMapping.labelMappings.add(featureLabelMapping); | |
| } | |
| operation createFigureDescriptor(name : String) { | |
| var figureDescriptor = new GmfGraph!FigureDescriptor; | |
| figureDescriptor.name = name; | |
| GmfGraph!FigureGallery.all.first().descriptors.add(figureDescriptor); | |
| return figureDescriptor; | |
| } |