a fresh look at graphical editing
DESCRIPTION
TRANSCRIPT
A FRESH LOOK AT
GRAPHICAL EDITING
Dr. Jan Köhnlein
Freitag, 4. November 11
一畫勝千言
Freitag, 4. November 11
A PICTURESAYS
MORE THANA THOUSAND
WORDS
一畫勝千言
Freitag, 4. November 11
A PICTURESAYS
MORE THANA THOUSAND
WORDS
一畫勝千言
wrong
Freitag, 4. November 11
Freitag, 4. November 11
package ecore
class EObject {}
abstract class EModelElement extends EObject {}
class EFactory extends EObject {}abstract class ENamedElement extends EModelElement{}class EAnnotation extends EObject {}
class EPackage extends ENamedElement {}abstract class EClassifier extends ENamedElement {}class EEnumLiteral extends ENamedElement {}abstract class ETypedElement extends ENamedElement {}
class EClass extends EClassifier {}class EDataType extends EClassifier {}
abstract class EStructuralFeature extends ETypedElement {}class EOperation extends ETypedElement {}class EParameter extends ETypedElement {}
class EEnum extends EDataType {}
class EAttribute extends EStructuralFeature {}class EReference extends EStructuralFeature {}
Freitag, 4. November 11
package ecore
class EObject {}
abstract class EModelElement extends EObject {}
class EFactory extends EObject {}abstract class ENamedElement extends EModelElement{}class EAnnotation extends EObject {}
class EPackage extends ENamedElement {}abstract class EClassifier extends ENamedElement {}class EEnumLiteral extends ENamedElement {}abstract class ETypedElement extends ENamedElement {}
class EClass extends EClassifier {}class EDataType extends EClassifier {}
abstract class EStructuralFeature extends ETypedElement {}class EOperation extends ETypedElement {}class EParameter extends ETypedElement {}
class EEnum extends EDataType {}
class EAttribute extends EStructuralFeature {}class EReference extends EStructuralFeature {}
73 words
Freitag, 4. November 11
Freitag, 4. November 11
package ecore
abstract class EModelElement extends EObject { op EAnnotation getEAnnotation(String source) contains EAnnotation[] eAnnotation opposite eModelElement }
class EAnnotation extends EObject { container EModelElement eModelElement opposite eAnnotation}
abstract class ENamedElement extends EModelElement{ String name}
class EFactory extends EObject { op EObject ^create(EClass eClass) op EJavaObject createFromString(EDataType eDataType, String literalValue) op String createFromString(EDataType eDataType, EJavaObject instanceValue) refers EPackage ePackage opposite eFactoryInstance}
abstract class ETypedElement extends ENamedElement { boolean ordered = "true" boolean ^unique = "true" int lowerBound int upperBound = "1" boolean many refers EClassifier eType}
abstract class EClassifier extends ENamedElement { String instanceClassName EJavaClass instanceClass EJavaObject defaultValue op boolean isInstance(EJavaObject object) op int getClassifierID() container EPackage ePackage opposite eClassifiers}
class EPackage extends ENamedElement { String nsURI String nsPrefix op EClassifier getEClassifier(String name) refers EFactory eFactoryInstance opposite ePackage contains EPackage[] eSubPackages opposite eSuperPackage container EPackage eSuperPackage opposite eSubPackages contains EClassifier[] eClassifiers opposite ePackage}
class EOperation extends ETypedElement { contains EParameter[] eParameters opposite eOperation container EClass eContainingClass opposite eOperations refers EClassifier[] eExceptions}
class EClass extends EClassifier { boolean ^abstract boolean ^interface op boolean isSuperTypeOf(EClass someClass) op EStructuralFeature getEStructuralFeature(int featureID) op EStructuralFeature getEStructuralFeature(String featureName) contains EOperation[] eOperations opposite eContainingClass refers EOperation[] eAllOperations contains EStructuralFeature[] eStructuralFeatures opposite eContainingClass refers EStructuralFeature[] eAllStructuralFeatures refers EReference[] eAllContainments refers EReference[] eAllReferences refers EReference[] eReferences refers EAttribute[] eAllAtrributes refers EAttribute[] eAtrributes refers EAttribute eIDAtrributes refers EClass[] eAllSuperTypes refers EClass[] eSuperTypes}
class EDataType extends EClassifier { boolean serializable = "true"}
abstract class EStructuralFeature extends ETypedElement { boolean changeable = "true" boolean ^volatile boolean ^transient String defaultValueLiteral EJavaObject defaultValue boolean ^unsettable boolean ^derived op int getFeatureID() op EJavaClass getContainerClass() container EClass eContainingClass opposite eStructuralFeatures}
class EReference extends EStructuralFeature { boolean containment boolean ^container boolean resolveProxies = "true" refers EReference eOpposite opposite eOpposite}
class EParameter extends ETypedElement { container EOperation eOperation opposite eParameters }
class EAttribute extends EStructuralFeature { boolean iD refers EDataType eAttributeType}
class EEnumLiteral extends ENamedElement { int value EEnumerator instance container EEnum eEnum opposite eLiterals}
class EEnum extends EDataType { op EEnumLiteral getEEnumLiteral(String name) op EEnumLiteral getEEnumLiteral(int value) contains EEnumLiteral[] eLiterals opposite eEnum}
class EObject {}type EJavaClass wraps Classtype EJavaObject wraps Objecttype EEnumerator wraps java.util.Enumeration
Freitag, 4. November 11
package ecore
abstract class EModelElement extends EObject { op EAnnotation getEAnnotation(String source) contains EAnnotation[] eAnnotation opposite eModelElement }
class EAnnotation extends EObject { container EModelElement eModelElement opposite eAnnotation}
abstract class ENamedElement extends EModelElement{ String name}
class EFactory extends EObject { op EObject ^create(EClass eClass) op EJavaObject createFromString(EDataType eDataType, String literalValue) op String createFromString(EDataType eDataType, EJavaObject instanceValue) refers EPackage ePackage opposite eFactoryInstance}
abstract class ETypedElement extends ENamedElement { boolean ordered = "true" boolean ^unique = "true" int lowerBound int upperBound = "1" boolean many refers EClassifier eType}
abstract class EClassifier extends ENamedElement { String instanceClassName EJavaClass instanceClass EJavaObject defaultValue op boolean isInstance(EJavaObject object) op int getClassifierID() container EPackage ePackage opposite eClassifiers}
class EPackage extends ENamedElement { String nsURI String nsPrefix op EClassifier getEClassifier(String name) refers EFactory eFactoryInstance opposite ePackage contains EPackage[] eSubPackages opposite eSuperPackage container EPackage eSuperPackage opposite eSubPackages contains EClassifier[] eClassifiers opposite ePackage}
class EOperation extends ETypedElement { contains EParameter[] eParameters opposite eOperation container EClass eContainingClass opposite eOperations refers EClassifier[] eExceptions}
class EClass extends EClassifier { boolean ^abstract boolean ^interface op boolean isSuperTypeOf(EClass someClass) op EStructuralFeature getEStructuralFeature(int featureID) op EStructuralFeature getEStructuralFeature(String featureName) contains EOperation[] eOperations opposite eContainingClass refers EOperation[] eAllOperations contains EStructuralFeature[] eStructuralFeatures opposite eContainingClass refers EStructuralFeature[] eAllStructuralFeatures refers EReference[] eAllContainments refers EReference[] eAllReferences refers EReference[] eReferences refers EAttribute[] eAllAtrributes refers EAttribute[] eAtrributes refers EAttribute eIDAtrributes refers EClass[] eAllSuperTypes refers EClass[] eSuperTypes}
class EDataType extends EClassifier { boolean serializable = "true"}
abstract class EStructuralFeature extends ETypedElement { boolean changeable = "true" boolean ^volatile boolean ^transient String defaultValueLiteral EJavaObject defaultValue boolean ^unsettable boolean ^derived op int getFeatureID() op EJavaClass getContainerClass() container EClass eContainingClass opposite eStructuralFeatures}
class EReference extends EStructuralFeature { boolean containment boolean ^container boolean resolveProxies = "true" refers EReference eOpposite opposite eOpposite}
class EParameter extends ETypedElement { container EOperation eOperation opposite eParameters }
class EAttribute extends EStructuralFeature { boolean iD refers EDataType eAttributeType}
class EEnumLiteral extends ENamedElement { int value EEnumerator instance container EEnum eEnum opposite eLiterals}
class EEnum extends EDataType { op EEnumLiteral getEEnumLiteral(String name) op EEnumLiteral getEEnumLiteral(int value) contains EEnumLiteral[] eLiterals opposite eEnum}
class EObject {}type EJavaClass wraps Classtype EJavaObject wraps Objecttype EEnumerator wraps java.util.Enumeration
368 Words
Freitag, 4. November 11
Freitag, 4. November 11
ENTIRE ECORE ~500 WORDS
Freitag, 4. November 11
A GOOD DIAGRAM
IS A PROJECTION
Freitag, 4. November 11
Semantic model Diagram
Mapping
Freitag, 4. November 11
Semantic model Diagram
Mapping
Freitag, 4. November 11
PackageClass
PropertyClassAssociation
Property
Foo Barbar
DiagramNode
NodeConnection
Label
STRUCTURAL MISMATCH
Freitag, 4. November 11
Foo Barbar
EDITING METAPHORS
Freitag, 4. November 11
Foo Barbar
EDITING METAPHORS
Delete from model
Freitag, 4. November 11
Foo Barbar
EDITING METAPHORS
Delete from model Delete from diagram
Freitag, 4. November 11
Foo Barbar
EDITING METAPHORS
Drag & Drop
Delete from model Delete from diagram
Freitag, 4. November 11
Foo Barbar
EDITING METAPHORS
Drag & Drop
Copy & Paste
Delete from model Delete from diagram
Freitag, 4. November 11
ChangesEMFT
TECHNOLOGY MISMATCH
EMF
CDOXtext
EMF
Java...
...
EMFT
Freitag, 4. November 11
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ Tool
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filter
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ design
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editor
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
viewuni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
viewDSLuni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
viewDSL
expressions
uni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
snapshot
DSLexpressions
uni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
snapshotstylesheet����������� ������������������ DSL
DSLexpressions
uni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
snapshotstylesheet����������� ������������������ DSL
DSLexpressions
live
uni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
snapshotstylesheet����������� ������������������ DSL
live DSLexpressions
live
uni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
snapshotstylesheet����������� ������������������ DSL
live DSLexpressions
live
uni
Freitag, 4. November 11
TODOs����������� ������������������ for����������� ������������������ a����������� ������������������ Graphical����������� ������������������ ToolDiagram����������� ������������������ editor����������� ������������������ Hard-wired����������� ������������������ bidirectional����������� ������������������ mapping
Element����������� ������������������ picker����������� ������������������ /����������� ������������������ filterBidirectional����������� ������������������ transaction����������� ������������������ mapper
Diagram����������� ������������������ designModel����������� ������������������ browser����������� ������������������ or����������� ������������������ full����������� ������������������ model����������� ������������������ editor
Detail����������� ������������������ editorModel����������� ������������������ navigation
Editor����������� ������������������ synchro
view
text
snapshotstylesheet����������� ������������������ DSL
live DSLexpressions
live
uni
Freitag, 4. November 11
base
Freitag, 4. November 11
baseModern Expression Language
Freitag, 4. November 11
baseModern Expression LanguageJava-Integration
Freitag, 4. November 11
baseModern Expression LanguageJava-IntegrationStatically Typed
Freitag, 4. November 11
baseModern Expression LanguageJava-IntegrationStatically TypedHighly Reusable
Freitag, 4. November 11
• Reads mapping and stylesheet
• Capture snapshots of any live model
• Render GEF diagram with shape library
• Selection / navigation adapter for
• EMF, Xtext, JDT
RUNTIME
Freitag, 4. November 11
• Xtext-based with Xbase expressions
• Uni-directional transformation
• Interpreted
MAPPING DSL
Freitag, 4. November 11
• Xtext-based with Xbase expressions
• Directly modifies Draw2d figures
• Interpreted
STYLING DSL
Freitag, 4. November 11
MyClass
SuperClass
Freitag, 4. November 11
MyClass
SuperClass
this
Freitag, 4. November 11
diagram EClassHierarchy type EClass {
MyClass
SuperClass
this
Freitag, 4. November 11
diagram EClassHierarchy type EClass {
MyClass
SuperClass
this
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this {
MyClass
SuperClass
this
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this {
MyClass
SuperClass
this
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this
MyClass
SuperClass
this
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this
MyClass
SuperClass
this MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() {
MyClass
SuperClass
this MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() {
MyClass
SuperClass this
MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() { => call EClassNode for this
MyClass
SuperClass this
MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() { => call EClassNode for this
MyClass
SuperClass this
MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() { => call EClassNode for this
MyClass
SuperClass this SuperClass
MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() { => call EClassNode for this
MyClass
SuperClass
this
SuperClass
MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() { => call EClassNode for this
MyClass
SuperClass
this
SuperClass
MyClass
Freitag, 4. November 11
diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this edge SuperType for each this.getESuperTypes() { => call EClassNode for this } }}
MyClass
SuperClass
this
SuperClass
MyClass
Freitag, 4. November 11
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
refs to mappings
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
Xbase body
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
this variable
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
color literals
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
extensions
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
semantic styling
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
https://github.com/JanKoehnlein/Generic-Graph-View
The code is at
But remember:
IT‘S A PROTOTYPE
Freitag, 4. November 11