blob: 4b1f995540ebbacfbc58b64aadc66513d14a0f31 [file] [log] [blame]
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;
}