egenieugenia: gmf for mortalls › studier › emner › matnat › ifi › inf5120 › v10 ›...
TRANSCRIPT
![Page 1: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/1.jpg)
E GENi GMF f lEuGENia: GMF for mortals
Dimitris Kolovos, Louis Rose, Richard Paige{dkolovos, louis, paige}@cs.york.ac.uk@dskolovos, @louismrose, @richpaige
Department of Computer SciencefUniversity of York
![Page 2: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/2.jpg)
Aim: Implement a graphical p g peditor for a DSL
![Page 3: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/3.jpg)
Technologies: Eclipse, EMF, GMFg p , ,
![Page 4: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/4.jpg)
Our Metamodel (in EMF/Ecore)Our Metamodel (in EMF/Ecore)
![Page 5: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/5.jpg)
How EMF WorksHow EMF Works
Metamodel
Generator Model Code Generator
![Page 6: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/6.jpg)
How GMF WorksHow GMF Works
Meta
Model
Graph Model
Tooling Model
Mapping Model
Generator Model Code Generator
![Page 7: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/7.jpg)
How GMF WorksHow GMF Works
Meta
Model
Graph Model
Tooling Model
Mapping Model
Generator Model Code Generator
![Page 8: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/8.jpg)
The GMF Tooling ModelThe GMF Tooling Model
![Page 9: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/9.jpg)
How GMF WorksHow GMF Works
Meta
Model
Graph Model
Tooling Model
Mapping Model
Generator Model Code Generator
![Page 10: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/10.jpg)
The GMF Graph ModelThe GMF Graph Model
![Page 11: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/11.jpg)
How GMF WorksHow GMF Works
Meta
Model
Graph Model
Tooling Model
Mapping Model
Generator Model Code Generator
![Page 12: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/12.jpg)
Mapping Model WizardMapping Model Wizard
![Page 13: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/13.jpg)
The GMF Mapping ModelThe GMF Mapping Model
![Page 14: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/14.jpg)
How GMF WorksHow GMF Works
Meta
Model
Graph Model
Tooling Model
Mapping Model
Generator Model Code Generator
![Page 15: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/15.jpg)
The Generator ModelThe Generator Model
![Page 16: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/16.jpg)
How GMF WorksHow GMF Works
Meta
Model
Graph Model
Tooling Model
Mapping Model
Generator Model Code Generator
![Page 17: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/17.jpg)
![Page 18: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/18.jpg)
Powerful
![Page 19: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/19.jpg)
Configurable
![Page 20: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/20.jpg)
Labour intensive
![Page 21: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/21.jpg)
Hard to master
![Page 22: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/22.jpg)
Error prone
![Page 23: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/23.jpg)
Replace itp
![Page 24: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/24.jpg)
EuGENia
![Page 25: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/25.jpg)
How EuGENia WorksHow EuGENia Works
Metamodel+
AnnotationsAnnotations
Graph ModelTooling ModelMapping Model
GMF
![Page 26: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/26.jpg)
Our MetamodelOur Metamodel
![Page 27: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/27.jpg)
Our Metamodel (in Emfatic)Our Metamodel (in Emfatic)
![Page 28: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/28.jpg)
Our annotated metamodelOur annotated metamodel
![Page 29: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/29.jpg)
A closer look…
![Page 30: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/30.jpg)
FilesystemFilesystem
@gmf [email protected] Filesystem {val Drive[*] drivesval Drive[*] drives;val Sync[*] syncs;
}}
![Page 31: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/31.jpg)
FileFile
@gmf node(label “name”)@gmf.node(label=“name”)class File {attr String nameattr String name;
}
![Page 32: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/32.jpg)
ShortcutShortcut
@gmf node(label “name”)@gmf.node(label=“name”)class Shortcut extends File {attr String nameattr String name;@gmf.link(target.decoration="arrow",
style "dash")style="dash")ref File target;
}}
![Page 33: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/33.jpg)
FolderFolder
@gmf node(label “name”)@gmf.node(label=“name”)class Folder extends File {attr String nameattr String name;@gmf.compartmentval File[*] contentsval File[*] contents;
}
![Page 34: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/34.jpg)
DriveDrive
@gmf node(label “name”)@gmf.node(label=“name”)classDrive extends Folder {attr String nameattr String name;@gmf.compartmentval File[*] contentsval File[*] contents;
}
![Page 35: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/35.jpg)
SyncSync
@gmf link(label "lastSync" source "source"@gmf.link(label="lastSync", source="source",target="target", style="dot", width="2")
class Sync {class Sync {ref File source;ref File targetref File target;attr String lastSync;
}}
![Page 36: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/36.jpg)
How EuGENia WorksHow EuGENia Works
Metamodel+
AnnotationsAnnotations
Graph ModelTooling ModelMapping Model
GMF
![Page 37: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/37.jpg)
Customize it!
![Page 38: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/38.jpg)
Polishing your EditorPolishing your Editor
Add EOL scripts next to your metamodel to customize the produced GMF modelscustomize the produced GMF models
ECore2GMF.eol <‐ .gmfgraph, .gmftool, .gmfmapFi GMFG l fFixGMFGen.eol <‐ .gmfgen
EuGENia picks them up and runs them after the built‐in transformations
www.eclipse.org/gmt/epsilon/doc/articles/eugenia‐polishing
![Page 39: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/39.jpg)
Polishing ExamplePolishing Example
// Set Shortcut’s label font to italic// Set Shortcut’s label font to italicvar shortcutLabel = GmfGraph!Label.all.selectOne(lbl | lbl.name = "ShortcutLabelFigure");
shortcutLabel.font = createItalicFont();
operation createItalicFont() {operation createItalicFont() {var font = new GmfGraph!BasicFont;font st le GmfGraph!FontSt le#ITALICfont.style = GmfGraph!FontStyle#ITALIC;return font;
}
![Page 40: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/40.jpg)
Live Demo
![Page 41: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/41.jpg)
More featuresMore features
Custom Java figuresInternal/external/composite labelsInternal/external/composite labelsAffixed nodesPhantom nodesCombined diagram/model fileCombined diagram/model fileModel/diagram extensionCopyright text (in separate copyright.txt file)
![Page 42: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/42.jpg)
Good stuffGood stuff
EasyHigh levelHigh levelHides GMF detailsChange resilientCan target different editor Can target different editor frameworks in the futureF h i i i h EOLFurther customization with EOL
www.eclipse.org/gmt/epsilon/doc/articles/eugenia‐polishing
![Page 43: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/43.jpg)
Not so good stuffNot so good stuff
Not 1:1 GMF mappingBy constructionBy constructionPolishing compensates for this
ll d lPollutesmetamodelTrade‐off for usability
![Page 44: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/44.jpg)
Implementation NotesImplementation Notes
2 Model‐to‐Model Transformations1235 Lines of Code1235 Lines of CodeTransformations in EOL
Epsilon Object Language (≈ JavaScript + OCL) www.eclipse.org/gmt/epsilon/doc/eolTry EOL in your browserwww.eclipse.org/gmt/epsilon/live
![Page 45: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/45.jpg)
CommunityCommunity
Well‐received contributionForum activityForum activityhttp://www.eclipse.org/gmt/epsilon/forum
R t f h tRequests for enhancements#265145, #265285, #265609, #268085, #285912 …
C l blComments in Epsilon’s bloghttp://epsilonblog.wordpress.com
![Page 46: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/46.jpg)
ResourcesResources
Downloadwww eclipse org/gmt/epsilonwww.eclipse.org/gmt/epsilon
Tutorial (+ list of annotations)www.eclipse.org/gmt/epsilon/doc/eugenia
Examplespwww.eclipse.org/gmt/epsilon/examples
ScreencastsScreencastswww.eclipse.org/gmt/epsilon/cinema
Follow Epsilon on Twitter @epsilonews
![Page 47: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige](https://reader034.vdocuments.us/reader034/viewer/2022042323/5f0dc4dc7e708231d43bfe6b/html5/thumbnails/47.jpg)
AcknowledgementsAcknowledgements
ModelPlex EU Projectwww modelplex orgwww.modelplex.org