EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 ›...

47
E GENi GMF f l EuGENia: GMF for mortals Dimitris Kolovos, Louis Rose, Richard Paige {dkolovos, louis, paige}@cs.york.ac.uk @dskolovos, @louismrose, @richpaige Department of Computer Science f University of York

Transcript of EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 ›...

Page 1: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
Page 18: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige

Powerful

Page 19: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige

Configurable

Page 20: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige

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

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

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

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

EuGENia

Page 25: EGENiEuGENia: GMF for mortalls › studier › emner › matnat › ifi › INF5120 › v10 › und… · EGENiEuGENia: GMF for mortalls Dimitris Kolovos, Louis Rose, Richard Paige

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AcknowledgementsAcknowledgements

ModelPlex EU Projectwww modelplex orgwww.modelplex.org