41. TODOsforaGraphicalTool
Diagrameditor view
uni
Hard-wiredbidirectionalmapping DSL
Elementpicker/filter expressions
Bidirectionaltransactionmapper snapshot
live Diagramdesign stylesheetDSL
Modelbrowserorfullmodeleditor
Detaileditor
Modelnavigation
Editorsynchro
Freitag, 4. November 11
42. TODOsforaGraphicalTool
Diagrameditor view
uni
live Hard-wiredbidirectionalmapping DSL
Elementpicker/filter expressions
Bidirectionaltransactionmapper snapshot
live Diagramdesign stylesheetDSL
Modelbrowserorfullmodeleditor
Detaileditor
Modelnavigation
Editorsynchro
Freitag, 4. November 11
43. TODOsforaGraphicalTool
Diagrameditor view
uni
live Hard-wiredbidirectionalmapping DSL
Elementpicker/filter expressions
Bidirectionaltransactionmapper snapshot
live Diagramdesign stylesheetDSL
Modelbrowserorfullmodeleditor
Detaileditor
Modelnavigation
Editorsynchro
Freitag, 4. November 11
44. TODOsforaGraphicalTool
Diagrameditor view
uni
live Hard-wiredbidirectionalmapping DSL
Elementpicker/filter expressions
Bidirectionaltransactionmapper snapshot
live Diagramdesign stylesheetDSL
Modelbrowserorfullmodeleditor
Detaileditor
Modelnavigation
Editorsynchro
text
Freitag, 4. November 11
46. base
Modern Expression Language
Freitag, 4. November 11
47. base
Modern Expression Language
Java-Integration
Freitag, 4. November 11
48. base
Modern Expression Language
Java-Integration
Statically Typed
Freitag, 4. November 11
49. base
Modern Expression Language
Java-Integration
Statically Typed
Highly Reusable
Freitag, 4. November 11
50. RUNTIME
• Reads mapping and stylesheet
• Capture snapshots of any live model
• Render GEF diagram with shape library
• Selection / navigation adapter for
• EMF, Xtext, JDT
Freitag, 4. November 11
51. MAPPING DSL
• Xtext-based with Xbase expressions
• Uni-directional transformation
• Interpreted
Freitag, 4. November 11
52. STYLING DSL
• Xtext-based with Xbase expressions
• Directly modifies Draw2d figures
• Interpreted
Freitag, 4. November 11
57. diagram EClassHierarchy type EClass {
node EClassNode for this {
MyClass this
SuperClass
Freitag, 4. November 11
58. diagram EClassHierarchy type EClass {
node EClassNode for this {
MyClass this
SuperClass
Freitag, 4. November 11
59. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
MyClass this
SuperClass
Freitag, 4. November 11
60. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
MyClass this MyClass
SuperClass
Freitag, 4. November 11
61. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
MyClass this MyClass
SuperClass
Freitag, 4. November 11
62. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
MyClass MyClass
SuperClass this
Freitag, 4. November 11
63. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
= call EClassNode for this
MyClass MyClass
SuperClass this
Freitag, 4. November 11
64. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
= call EClassNode for this
MyClass MyClass
SuperClass this
Freitag, 4. November 11
65. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
= call EClassNode for this
MyClass MyClass
SuperClass this SuperClass
Freitag, 4. November 11
66. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
= call EClassNode for this
MyClass this MyClass
SuperClass SuperClass
Freitag, 4. November 11
67. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
= call EClassNode for this
MyClass this MyClass
SuperClass SuperClass
Freitag, 4. November 11
68. diagram EClassHierarchy type EClass {
node EClassNode for this {
label Name for this
edge SuperType for each this.getESuperTypes() {
= call EClassNode for this
}
}
}
MyClass this MyClass
SuperClass SuperClass
Freitag, 4. November 11
69. stylesheet EClassHierarchy
for EClassHierarchy
style EClassNode.SuperType {
var arrow = new PolygonDecoration()
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this.targetDecoration = arrow
}
style EClassNode.Name {
font = font(Helvetica, 13,
if (element.abstract) 3 else 1)
}
Freitag, 4. November 11
70. stylesheet EClassHierarchy
for EClassHierarchy
refs to mappings
style EClassNode.SuperType {
var arrow = new PolygonDecoration()
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this.targetDecoration = arrow
}
style EClassNode.Name {
font = font(Helvetica, 13,
if (element.abstract) 3 else 1)
}
Freitag, 4. November 11
71. stylesheet EClassHierarchy
for EClassHierarchy
style EClassNode.SuperType {
var arrow = new PolygonDecoration() Xbase body
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this.targetDecoration = arrow
}
style EClassNode.Name {
font = font(Helvetica, 13,
if (element.abstract) 3 else 1)
}
Freitag, 4. November 11
72. stylesheet EClassHierarchy
for EClassHierarchy
style EClassNode.SuperType {
var arrow = new PolygonDecoration()
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this variable
this.targetDecoration = arrow
}
style EClassNode.Name {
font = font(Helvetica, 13,
if (element.abstract) 3 else 1)
}
Freitag, 4. November 11
73. stylesheet EClassHierarchy
for EClassHierarchy
style EClassNode.SuperType {
var arrow = new PolygonDecoration()
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this.targetDecoration = arrow
}
color literals
style EClassNode.Name {
font = font(Helvetica, 13,
if (element.abstract) 3 else 1)
}
Freitag, 4. November 11
74. stylesheet EClassHierarchy
for EClassHierarchy
style EClassNode.SuperType {
var arrow = new PolygonDecoration()
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this.targetDecoration = arrow
}
style EClassNode.Name { extensions
font = font(Helvetica, 13,
if (element.abstract) 3 else 1)
}
Freitag, 4. November 11
75. stylesheet EClassHierarchy
for EClassHierarchy
style EClassNode.SuperType {
var arrow = new PolygonDecoration()
arrow.setScale(10,10)
arrow.backgroundColor = color(#ffffff)
arrow.lineWidth = 2
this.targetDecoration = arrow
}
style EClassNode.Name {
font = font(Helvetica, 13,
if (element.abstract) 3 else 1) semantic styling
}
Freitag, 4. November 11
76. The code is at
https://github.com/JanKoehnlein/Generic-Graph-View
But remember:
IT‘S A PROTOTYPE
Freitag, 4. November 11