Weitere ähnliche Inhalte Ähnlich wie Eclipse meets e4 (20) Mehr von Dr. Jan Köhnlein (20) Kürzlich hochgeladen (20) Eclipse meets e41. Setting Up the
Development Workbench
• Copy both to your local disk:
• the right archive for your platform
• the folder material
• Hand the USB stick to the attendee next to you.
• Unzip the archive and start the included Eclipse with a
fresh workspace.
• NOTE: On Windows systems, make sure you pick a short
directory name and everything gets extracted without
errors.
2. meets
Developing an editor
for the e4 workbench model
13. • Simplify programming
• Declarative styling / UI markup
• Uniform, pervasive platform
• Diversity of contributors
• Backward compatibility
16. Run the Demo
• Import the Contacts Demo application as a
project
• Try to run the Contacts Demo product
(fails, but creates a run config)
• Run again by means of the run configuration
25. Reference
ar
Model
m
m
ra
G
Generator
Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
27. Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
Model
Model
Model
28. Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
Model
Model
Model
29. Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
AST
Model
Model
Model
30. Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
AST
Model
Model
Model
31. Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
Interpreter AST
Model
Model
Code Model
Generator
32. Runtime
Superclass
Subclass Class
ecore meta model LL(*) Parser editor
Interpreter AST
Model
Model
Code Model
Generator
41. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"/>
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"/>
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
<commands xmi:id="contacts.exit" id="contacts.exit"
commandName="Exit" description=""/>
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commandName="Dark Theme"/>
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commandName="Bright Theme" description=""/>
<commands xmi:id="contacts.save" id="contacts.save"
commandName="Save" description=""/>
<commands xmi:id="contacts.delete" id="contacts.delete"
commandName="Delete" description=""/>
42. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"/>
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"/>
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
Remove
<commands xmi:id="contacts.exit" id="contacts.exit"
commandName="Exit" description=""/> XML brackets
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commandName="Dark Theme"/>
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commandName="Bright Theme" description=""/>
<commands xmi:id="contacts.save" id="contacts.save"
commandName="Save" description=""/>
<commands xmi:id="contacts.delete" id="contacts.delete"
commandName="Delete" description=""/>
43. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"
command="contacts.exit"/>
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"
command="contacts.save"/>
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"
command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"
command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
bindings
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
<commands xmi:id="contacts.exit" id="contacts.exit"
commands
commandName="Exit" description=""/>
description=""
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands
commandName="Dark Theme"/>
Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands
commandName="Bright Theme" description=""/>
description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands
commandName="Save" description=""/>
description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands
commandName="Delete" description=""/>
description=""
44. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"
command="contacts.exit"/>
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"
command="contacts.save"/>
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"
command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"
command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings
Remove
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
bindings
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
<commands xmi:id="contacts.exit" id="contacts.exit"
commands
commandName="Exit" description=""/>
description="" UUIDs
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands
commandName="Dark Theme"/>
Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands
commandName="Bright Theme" description=""/>
description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands
commandName="Save" description=""/>
description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands
commandName="Delete" description=""/>
description=""
45. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"
command="contacts.exit"/>
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"
command="contacts.save"/>
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"
command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"
command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
bindings
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
<commands xmi:id="contacts.exit" id="contacts.exit"
commands
commandName="Exit" description=""/>
description=""
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands
commandName="Dark Theme"/>
Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands
commandName="Bright Theme" description=""/>
description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands
commandName="Save" description=""/>
description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands
commandName="Delete" description=""/>
description=""
46. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"
command="contacts.exit"/>
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"
command="contacts.save"/>
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"
command="contacts.delete"/>
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"
command="contacts.brightTheme"/>
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings
Remove
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
bindings
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
<commands xmi:id="contacts.exit" id="contacts.exit"
commands
commandName="Exit" description=""/>
description="" reference markup
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands
commandName="Dark Theme"/>
Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands
commandName="Bright Theme" description=""/>
description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands
commandName="Save" description=""/>
description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands
commandName="Delete" description=""/>
description=""
47. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"
command="contacts.exit"/>
contacts.exit
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"
command="contacts.save"/>
contacts.save
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"
command="contacts.delete"/>
contacts.delete
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
contacts.darkTheme
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"
command="contacts.brightTheme"/>
contacts.brightTheme
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings "CTRL+D"
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
contacts.darkTheme
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings "CTRL+L"
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
contacts.brightTheme
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings "CTRL+S"
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
contacts.save
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings "Delete"
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
contacts.delete
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
bindings "CTRL+5
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
contacts.exit
<commands xmi:id="contacts.exit" id="contacts.exit"
commands contacts.exit
commandName="Exit" description=""/>
"Exit" description=""
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands contacts.darkTheme
commandName="Dark Theme"/>
"Dark Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands contacts.brightTheme
commandName="Bright Theme" description=""/>
"Bright description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands contacts.save
commandName="Save" description=""/>
"Save" description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands contacts.delete
commandName="Delete" description=""/>
"Delete" description=""
48. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
command="contacts.exit"
command="contacts.exit"/>
contacts.exit
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
command="contacts.save"
command="contacts.save"/>
contacts.save
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
command="contacts.delete"
command="contacts.delete"/>
contacts.delete
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
command="contacts.darkTheme"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
contacts.darkTheme
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
command="contacts.brightTheme"
command="contacts.brightTheme"/>
contacts.brightTheme
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings "CTRL+D"
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
contacts.darkTheme
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings "CTRL+L"
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
contacts.brightTheme
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings "CTRL+S"
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
contacts.save
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings "Delete"
bindings
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
contacts.delete
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
"CTRL+5
Simplify
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
contacts.exit
<commands xmi:id="contacts.exit" id="contacts.exit"
commands contacts.exit
commandName="Exit" description=""/>
"Exit" description=""
Java references
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands contacts.darkTheme
commandName="Dark Theme"/>
"Dark Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands contacts.brightTheme
commandName="Bright Theme" description=""/>
"Bright description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands contacts.save
commandName="Save" description=""/>
"Save" description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands contacts.delete
commandName="Delete" description=""/>
"Delete" description=""
49. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
org.eclipse...ExitHandler
command="contacts.exit"
command="contacts.exit"/>
contacts.exit
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
org.eclipse...SaveHandler
command="contacts.save"
command="contacts.save"/>
contacts.save
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
org.eclipse...DeleteContactHandler
command="contacts.delete"
command="contacts.delete"/>
contacts.delete
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
org.eclipse...DarkThemeHandler
command="contacts.darkTheme"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
contacts.darkTheme
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
org.eclipse...BrightThemeHandler
command="contacts.brightTheme"
command="contacts.brightTheme"/>
contacts.brightTheme
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings "CTRL+D"
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
contacts.darkTheme
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings "CTRL+L"
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
contacts.brightTheme
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings "CTRL+S"
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
contacts.save
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings "Delete"
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
contacts.delete
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
bindings "CTRL+5
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
contacts.exit
<commands xmi:id="contacts.exit" id="contacts.exit"
commands contacts.exit
commandName="Exit" description=""/>
"Exit" description=""
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands contacts.darkTheme
commandName="Dark Theme"/>
"Dark Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands contacts.brightTheme
commandName="Bright Theme" description=""/>
"Bright description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands contacts.save
commandName="Save" description=""/>
"Save" description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands contacts.delete
commandName="Delete" description=""/>
"Delete" description=""
50. <handlers xmi:id="_SeXUF-8EEd6FC9cDb6iV7g" id="_SeXUF-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...ExitHandler"
org.eclipse...ExitHandler
command="contacts.exit"
command="contacts.exit"/>
contacts.exit
<handlers xmi:id="_SeXUGO8EEd6FC9cDb6iV7g" id="_SeXUGO8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...SaveHandler"
org.eclipse...SaveHandler
command="contacts.save"
command="contacts.save"/>
contacts.save
<handlers xmi:id="_SeXUGe8EEd6FC9cDb6iV7g" id="_SeXUGe8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DeleteContactHandler"
org.eclipse...DeleteContactHandler
command="contacts.delete"
command="contacts.delete"/>
contacts.delete
<handlers xmi:id="_SeXUGu8EEd6FC9cDb6iV7g" id="_SeXUGu8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...DarkThemeHandler"
org.eclipse...DarkThemeHandler
command="contacts.darkTheme"
command="contacts.darkTheme"
command="contacts.darkTheme"/>
contacts.darkTheme
<handlers xmi:id="_SeXUG-8EEd6FC9cDb6iV7g" id="_SeXUG-8EEd6FC9cDb6iV7g"
handlers
URI="platform:/plugin/org.eclipse.e4.demo.contacts/org.eclipse...BrightThemeHandler"
org.eclipse...BrightThemeHandler
command="contacts.brightTheme"
command="contacts.brightTheme"/>
contacts.brightTheme
<bindings xmi:id="_SeXUHO8EEd6FC9cDb6iV7g" keySequence="CTRL+D"
bindings "CTRL+D"
id="_SeXUHO8EEd6FC9cDb6iV7g" command="contacts.darkTheme"/>
command="contacts.darkTheme"
contacts.darkTheme
<bindings xmi:id="_SeXUHe8EEd6FC9cDb6iV7g" keySequence="CTRL+L"
bindings "CTRL+L"
id="_SeXUHe8EEd6FC9cDb6iV7g" command="contacts.brightTheme"/>
command="contacts.brightTheme"
contacts.brightTheme
<bindings xmi:id="_SeXUHu8EEd6FC9cDb6iV7g" keySequence="CTRL+S"
bindings "CTRL+S"
id="_SeXUHu8EEd6FC9cDb6iV7g" command="contacts.save"/>
command="contacts.save"
contacts.save
<bindings xmi:id="_SeXUH-8EEd6FC9cDb6iV7g" keySequence="Delete"
bindings "Delete"
bindings
id="_SeXUH-8EEd6FC9cDb6iV7g" command="contacts.delete"/>
command="contacts.delete"
contacts.delete
<bindings xmi:id="_SeXUIO8EEd6FC9cDb6iV7g" keySequence="CTRL+5 X"
"CTRL+5
Make it
id="_SeXUIO8EEd6FC9cDb6iV7g" command="contacts.exit"/>
command="contacts.exit"
contacts.exit
<commands xmi:id="contacts.exit" id="contacts.exit"
commands contacts.exit
commandName="Exit" description=""/>
"Exit" description=""
a language
<commands xmi:id="contacts.darkTheme" id="contacts.darkTheme"
commands contacts.darkTheme
commandName="Dark Theme"/>
"Dark Theme"
<commands xmi:id="contacts.brightTheme" id="contacts.brightTheme"
commands contacts.brightTheme
commandName="Bright Theme" description=""/>
"Bright description=""
<commands xmi:id="contacts.save" id="contacts.save"
commands contacts.save
commandName="Save" description=""/>
"Save" description=""
<commands xmi:id="contacts.delete" id="contacts.delete"
commands contacts.delete
commandName="Delete" description=""/>
"Delete" description=""
51. handler org.eclipse.e4.demo.contacts.handlers.ExitHandler
for contacts.exit
handler org.eclipse.e4.demo.contacts.handlers.SaveHandler
for contacts.save
handler org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler
for contacts.darkTheme
handler org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler
for contacts.brightTheme
handler org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler
for contacts.delete
bind "CTRL+D" to contacts.darkTheme
bind "CTRL+L" to contacts.brightTheme
bind "CTRL+S" to contacts.save
bind "CTRL+5 X" to contacts.exit
bind "Delete" to contacts.delete
command contacts.exit "Exit"
command contacts.darkTheme "Dark Theme"
command contacts.brightTheme "Bright Theme"
command contacts.save "Save"
command contacts.delete "Delete"
52. handler org.eclipse.e4.demo.contacts.handlers.ExitHandler
for contacts.exit
handler org.eclipse.e4.demo.contacts.handlers.SaveHandler
for contacts.save
handler org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler
for contacts.darkTheme
handler org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler
for contacts.brightTheme
handler org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler
for contacts.delete
bind "CTRL+D" to contacts.darkTheme
bind "CTRL+L" to contacts.brightTheme
bind "CTRL+S" to contacts.save
bind "CTRL+5 X" to contacts.exit
bind "Delete" to contacts.delete Add
command contacts.exit "Exit" namespace
command contacts.darkTheme "Dark Theme"
command contacts.brightTheme "Bright Theme"
command contacts.save "Save"
command contacts.delete "Delete"
53. application contacts
handler org.eclipse.e4.demo.contacts.handlers.ExitHandler
handler contacts.exit
for org.eclipse.e4.demo.contacts.handlers.ExitHandler
handler org.eclipse.e4.demo.contacts.handlers.SaveHandler
for exit
handler contacts.save
for org.eclipse.e4.demo.contacts.handlers.SaveHandler
handler org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler
for save
handler contacts.darkTheme
for org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler
handler org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler
for darkTheme
handler contacts.brightTheme
for org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler
handler org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler
for brightTheme
handler contacts.delete
for org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler
for delete
bind "CTRL+D" to contacts.darkTheme
bind "CTRL+L" to contacts.brightTheme
"CTRL+D" darkTheme
bind "CTRL+S" to contacts.save
"CTRL+L" brightTheme
bind "CTRL+5 X" to contacts.ex
"CTRL+S" to save
bind "CTRL+5 X" to exit
bind "Delete" to
it delete
command contacts.exit "Exit"
exit
command contacts.darkTheme "Dark Theme"
darkTheme
command contacts.brightTheme "Bright Theme"
brightTheme
command contacts.save "Save"
save
command contacts.delete "Delete"
delete
54. Exercise:
A Grammar for Commands
application contacts
handler org.eclipse.e4.demo.contacts.handlers.ExitHandler for exit
handler org.eclipse.e4.demo.contacts.handlers.SaveHandler for save
handler org.eclipse.e4.demo.contacts.handlers.DarkThemeHandler for darkTheme
handler org.eclipse.e4.demo.contacts.handlers.BrightThemeHandler for brightTheme
handler org.eclipse.e4.demo.contacts.handlers.DeleteContactHandler for delete
bind "CTRL+D" to darkTheme
bind "CTRL+L" to brightTheme
bind "CTRL+S" to save
bind "CTRL+5 X" to exit
bind "Delete" to delete
command exit "Exit"
command darkTheme "Dark Theme"
command brightTheme "Bright Theme"
command save "Save"
command delete "Delete"
55. <mainMenu xmi:id="_SeXUDu8EEd6FC9cDb6iV7g" id="_SeXUDu8EEd6FC9cDb6iV7g">
<children xsi:type="application:MenuItem"
xmi:id="_SeXUD-8EEd6FC9cDb6iV7g" id="_SeXUD-8EEd6FC9cDb6iV7g"
label="File">
<children xsi:type="application:HandledMenuItem"
xmi:id="_SeXUEO8EEd6FC9cDb6iV7g" id="_SeXUEO8EEd6FC9cDb6iV7g"
label="Save"
iconURI="platform:/plugin/org.eclipse.e4.demo.contacts/icons/silk/disk.png"
command="contacts.save"/>
<children xsi:type="application:HandledMenuItem"
xmi:id="_SeXUEe8EEd6FC9cDb6iV7g" id="_SeXUEe8EEd6FC9cDb6iV7g"
label="Delete"
iconURI="platform:/plugin/org.eclipse.e4.demo.contacts/icons/silk/user_delete.png"
command="contacts.delete"/>
<children xsi:type="application:DirectMenuItem"
xmi:id="_SeXUEu8EEd6FC9cDb6iV7g" id="_SeXUEu8EEd6FC9cDb6iV7g"
URI="platform:/plugin/org.eclipse.e4.demo.contactsorg.eclipse.e4.demo.contacts.h...
label="Direct Exit"/>
<children xsi:type="application:HandledMenuItem"
xmi:id="_SeXUE-8EEd6FC9cDb6iV7g" id="_SeXUE-8EEd6FC9cDb6iV7g"
label="Exit"
command="contacts.exit"/>
</children>
<children xsi:type="application:MenuItem"
xmi:id="_SeXUFO8EEd6FC9cDb6iV7g" id="_SeXUFO8EEd6FC9cDb6iV7g"
label="Theme">
<children xsi:type="application:HandledMenuItem"
xmi:id="_SeXUFe8EEd6FC9cDb6iV7g" id="_SeXUFe8EEd6FC9cDb6iV7g"
label="Dark Theme"
command="contacts.darkTheme"/>
<children xsi:type="application:HandledMenuItem"
xmi:id="_SeXUFu8EEd6FC9cDb6iV7g" id="_SeXUFu8EEd6FC9cDb6iV7g"
label="Bright Theme"
command="contacts.brightTheme"/>
</children>
</mainMenu>
56. Menu {
"File" {
"Save" contacts.save icon="icons/silk/disk.png"
"Delete" contacts.delete icon="icons/silk/user_delete.png"
"Direct Exit" handler=org.eclipse.e4.demo.contacts.handlers.ExitHandler
"Exit" contacts.exit
}
"Theme" {
"Dark Theme" contacts.darkTheme
"Bright Theme" contacts.brightTheme
}
}
57. Exercise:
Adding the menu section
application contacts
Menu {
"File" {
"Save" contacts.save icon="icons/silk/disk.png"
"Delete" contacts.delete icon="icons/ silk/user_delete.png"
"Direct Exit" handler=org.eclipse.e4.demo.contacts.handlers.ExitHandler
"Exit" contacts.exit
}
"Theme" {
"Dark Theme" contacts.darkTheme
"Bright Theme" contacts.brightTheme
}
}
command exit "Exit"
...
59. Cross References
...
<children xsi:type="application:PerspectiveStack"
xmi:id="_NGiG4DGjEd-zge_czUaGVQ"
UUIDs
id="_NGiG4DGjEd-zge_czUaGVQ"
selectedElement="_NGjVADGjEd-zge_czUaGVQ">
<children xsi:type="application:Perspective"
xmi:id="_NGjVADGjEd-zge_czUaGVQ"
id="_NGjVADGjEd-zge_czUaGVQ">
...
PerspectiveStack :myDslPerspectiveStack
selectedElement=myDslPerspective {
Names ...
Perspective :myDslPerspective
...
65. Qualified Names
application contacts EAttribute „name“
1 command save "Save"
qualifiedName( 1 )
Default save
QualifiedNameProvider
66. Qualified Names
application contacts EAttribute „name“
1 command save "Save"
qualifiedName( 1 )
Default save
QualifiedNameProvider
69. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
70. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
71. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope
name EObject
„contacts“ 1
„save“ 2
„exit“ 3
72. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope
name EObject
„contacts“ 1
„save“ 2
„exit“ 3
73. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope
name EObject
„contacts“ 1
„save“ 2
„exit“ 3
74. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope
name EObject
„contacts“ 1
„save“ 2
„exit“ 3
75. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope
name EObject
„contacts“ 1
„save“ 2
„exit“ 3
76. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope
name EObject
„contacts“ 1 outerScope
„save“ 2
„exit“ 3
77. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope File Scope
name EObject name EObject
„contacts“ 1 outerScope „contacts“ 1
„save“ 2 „contacts.save“ 2
„exit“ 3 „contacts.exit“ 3
78. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope File Scope
name EObject name EObject
„contacts“ 1 outerScope „contacts“ 1
„save“ 2 „contacts.save“ 2
„exit“ 3 „contacts.exit“ 3
79. application contacts 1
2 command save "Save"
Scopes
command exit "Exit" 3
bind "CTRL+S" to save
bind "CTRL+X" to contacts.exit
Application Scope File Scope
name EObject name EObject
„contacts“ 1 outerScope „contacts“ 1
„save“ 2 „contacts.save“ 2
„exit“ 3 „contacts.exit“ 3
82. GlobalScope
name EObject
outerScope
... all visible
FQNs
elements
83. GlobalScope
name EObject
outerScope
... all visible
FQNs
elements
DefaultGlobalScopeProvider
84. GlobalScope
name EObject
outerScope
... all visible
FQNs
elements
DefaultGlobalScopeProvider
• all in workspace
85. GlobalScope
name EObject
outerScope
... all visible
FQNs
elements
DefaultGlobalScopeProvider
• all in workspace
• backed by an Eclipse builder
86. GlobalScope
name EObject
outerScope
... all visible
FQNs
elements
DefaultGlobalScopeProvider
• all in workspace
• backed by an Eclipse builder
ResourceSetGlobalScopeProvider
87. GlobalScope
name EObject
outerScope
... all visible
FQNs
elements
DefaultGlobalScopeProvider
• all in workspace
• backed by an Eclipse builder
ResourceSetGlobalScopeProvider
• all in ResourceSet
88. Namespace Imports
Global
name EObject
„java.util.List“ 1
„java.util.Set“ 2
„java.util.Map“ 3
89. Namespace Imports
Global
name EObject
„java.util.List“ 1
„java.util.Set“ 2
„java.util.Map“ 3
Import:
Grammar 'import' importedNamespace=ImportFQN;
90. Namespace Imports
Global
name EObject
„java.util.List“ 1
„java.util.Set“ 2
„java.util.Map“ 3
Import:
Grammar 'import' importedNamespace=ImportFQN;
Model import java.util.*
91. Namespace Imports
Global ImportNamespaceAware
name EObject name EObject
„java.util.List“ 1 „List“ 1
outerScope
„java.util.Set“ 2 „Set“ 2
„java.util.Map“ 3 „Map“ 3
Import:
Grammar 'import' importedNamespace=ImportFQN;
Model import java.util.*
92. Exercise: Java Types
application contacts
import org.eclipse.e4.demo.contacts.handlers.*;
command contacts.exit "Exit"
handler ExitHandler for contacts.exit
bind "CTRL+5 X" to contacts.exit
command contacts.darkTheme "Dark Theme"
handledBy DarkThemeHandler
key "CTRL+D"
command contacts.brightTheme "Bright Theme"
handledBy BrightThemeHandler
key "CTRL+L"
command contacts.save "Save"
handledBy SaveHandler
key "CTRL+S"
command contacts.delete "Delete"
handledBy DeleteContactHandler
key "Delete"
97. Dependency Injection
• Based on Google Guice
• Pervasively used in Xtext
• Invisible for clients (ex. Annotations)
• Language specific and global injectors
98. Dependency Injection
• Based on Google Guice
• Pervasively used in Xtext
• Invisible for clients (ex. Annotations)
• Language specific and global injectors
• Makes overriding defaults easy
99. DI: Client Side
@Inject
private ISomeService myService;
@Inject
public MyClass(Provider<ISomeOtherService> provider) {
ISomeOtherService firstInstance = provider.get();
ISomeOtherService secondInstance = provider.get();
}
@Inject@ContentProposalLabelProvider
private ILabelProvider labelProvider;
100. DI: Configuration
@ImplementedBy(MyServiceImpl.class)
public class IServiceInterface {
...
public class MyDeclarativeModule extends AbstractModule {
public Class<? extends IQualifiedNameProvider>
bindIQualifiedNameProvider() {
return MyQualifiedNameProvider.class;
}
...
@Singleton
public class MySingletonService extends AbstractSomeService {
...
101. DI: Language Modules
MyLanguage MyLanguage
RuntimeModule
bindIServiceInterface() Manual UiModule
bindIServiceInterface()
... ...
MyLanguageAbstract MyLanguageAbstract
RuntimeModule
bindIServiceInterface() Generated UiModule
bindIServiceInterface()
... ...
Default Default
RuntimeModule
bindIServiceInterface() Defaults UiModule
bindIServiceInterface()
... ...
AbstractModule
102. DI: Equinox
<plugin>
<extension point="org.eclipse.ui.editors">
<editor class=
"mydsl.MyDslExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
contributorClass=
"org.eclipse.ui.editors.text.TextEditorActionContributor"
default="true"
extensions="mydsl"
id="mydsl.MyDsl"
name="MyDsl Editor">
</editor>
</extension>
...
104. Annotations
@Fix(DomainmodelJavaValidator.INVALID_TYPE_NAME)
public void fixTypeName(final Issue issue,
IssueResolutionAcceptor acceptor) {
acceptor.accept(issue, "Capitalize name", ...
Naming
Conventions
public class MyScopeProvider
extends AbstractDeclarativeScopeProvider {
public IScope scope_Handler_command(
final Handler h, EReference rRef) {
Polymorphic ...
Dispatch
public class MyLabelProvider
Declarative
extends DefaultLabelProvider {
public String image(Command c) {
return “cmd.png“;
}
public String image(Handler c) {
... APIs
107. Outlook
• Improve Xtext support for
• Ecore generics
• Partial textual models
• EP org.eclipse.e4.workbench.model
108. Questions?
find out more at
http://www.xtext.org
http://eclipse.org/e4