a fresh look at graphical editing

76
A FRESH LOOK AT GRAPHICAL EDITING Dr. Jan Köhnlein Freitag, 4. November 11

Upload: jan-koehnlein

Post on 18-Dec-2014

1.043 views

Category:

Technology


6 download

DESCRIPTION

 

TRANSCRIPT

Page 1: A fresh look at graphical editing

A FRESH LOOK AT

GRAPHICAL EDITING

Dr. Jan Köhnlein

Freitag, 4. November 11

Page 2: A fresh look at graphical editing

一畫勝千言

Freitag, 4. November 11

Page 3: A fresh look at graphical editing

A PICTURESAYS

MORE THANA THOUSAND

WORDS

一畫勝千言

Freitag, 4. November 11

Page 4: A fresh look at graphical editing

A PICTURESAYS

MORE THANA THOUSAND

WORDS

一畫勝千言

wrong

Freitag, 4. November 11

Page 5: A fresh look at graphical editing

Freitag, 4. November 11

Page 6: A fresh look at graphical editing

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

Page 7: A fresh look at graphical editing

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

Page 8: A fresh look at graphical editing

Freitag, 4. November 11

Page 9: A fresh look at graphical editing

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

Page 10: A fresh look at graphical editing

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

Page 11: A fresh look at graphical editing

Freitag, 4. November 11

Page 12: A fresh look at graphical editing

ENTIRE ECORE ~500 WORDS

Freitag, 4. November 11

Page 13: A fresh look at graphical editing

A GOOD DIAGRAM

IS A PROJECTION

Freitag, 4. November 11

Page 14: A fresh look at graphical editing

Semantic model Diagram

Mapping

Freitag, 4. November 11

Page 15: A fresh look at graphical editing

Semantic model Diagram

Mapping

Freitag, 4. November 11

Page 16: A fresh look at graphical editing

PackageClass

PropertyClassAssociation

Property

Foo Barbar

DiagramNode

NodeConnection

Label

STRUCTURAL MISMATCH

Freitag, 4. November 11

Page 17: A fresh look at graphical editing

Foo Barbar

EDITING METAPHORS

Freitag, 4. November 11

Page 18: A fresh look at graphical editing

Foo Barbar

EDITING METAPHORS

Delete from model

Freitag, 4. November 11

Page 19: A fresh look at graphical editing

Foo Barbar

EDITING METAPHORS

Delete from model Delete from diagram

Freitag, 4. November 11

Page 20: A fresh look at graphical editing

Foo Barbar

EDITING METAPHORS

Drag & Drop

Delete from model Delete from diagram

Freitag, 4. November 11

Page 21: A fresh look at graphical editing

Foo Barbar

EDITING METAPHORS

Drag & Drop

Copy & Paste

Delete from model Delete from diagram

Freitag, 4. November 11

Page 22: A fresh look at graphical editing

ChangesEMFT

TECHNOLOGY MISMATCH

EMF

CDOXtext

EMF

Java...

...

EMFT

Freitag, 4. November 11

Page 23: A fresh look at graphical editing

Freitag, 4. November 11

Page 24: A fresh look at graphical editing

TODOs����������� ������������������  for����������� ������������������  a����������� ������������������  Graphical����������� ������������������  Tool

Freitag, 4. November 11

Page 25: A fresh look at graphical editing

TODOs����������� ������������������  for����������� ������������������  a����������� ������������������  Graphical����������� ������������������  ToolDiagram����������� ������������������  editor����������� ������������������  

Freitag, 4. November 11

Page 26: A fresh look at graphical editing

TODOs����������� ������������������  for����������� ������������������  a����������� ������������������  Graphical����������� ������������������  ToolDiagram����������� ������������������  editor����������� ������������������  Hard-wired����������� ������������������  bidirectional����������� ������������������  mapping

Freitag, 4. November 11

Page 27: A fresh look at graphical editing

TODOs����������� ������������������  for����������� ������������������  a����������� ������������������  Graphical����������� ������������������  ToolDiagram����������� ������������������  editor����������� ������������������  Hard-wired����������� ������������������  bidirectional����������� ������������������  mapping

Element����������� ������������������  picker����������� ������������������  /����������� ������������������  filter

Freitag, 4. November 11

Page 28: A fresh look at graphical editing

TODOs����������� ������������������  for����������� ������������������  a����������� ������������������  Graphical����������� ������������������  ToolDiagram����������� ������������������  editor����������� ������������������  Hard-wired����������� ������������������  bidirectional����������� ������������������  mapping

Element����������� ������������������  picker����������� ������������������  /����������� ������������������  filterBidirectional����������� ������������������  transaction����������� ������������������  mapper

Freitag, 4. November 11

Page 29: A fresh look at graphical editing

TODOs����������� ������������������  for����������� ������������������  a����������� ������������������  Graphical����������� ������������������  ToolDiagram����������� ������������������  editor����������� ������������������  Hard-wired����������� ������������������  bidirectional����������� ������������������  mapping

Element����������� ������������������  picker����������� ������������������  /����������� ������������������  filterBidirectional����������� ������������������  transaction����������� ������������������  mapper

Diagram����������� ������������������  design

Freitag, 4. November 11

Page 30: A fresh look at graphical editing

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

Page 31: A fresh look at graphical editing

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

Page 32: A fresh look at graphical editing

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

Page 33: A fresh look at graphical editing

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

Page 34: A fresh look at graphical editing

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

Page 35: A fresh look at graphical editing

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

Page 36: A fresh look at graphical editing

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

Page 37: A fresh look at graphical editing

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

Page 38: A fresh look at graphical editing

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

Page 39: A fresh look at graphical editing

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

Page 40: A fresh look at graphical editing

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

Page 41: A fresh look at graphical editing

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

Page 42: A fresh look at graphical editing

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

Page 43: A fresh look at graphical editing

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

Page 44: A fresh look at graphical editing

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

Page 45: A fresh look at graphical editing

base

Freitag, 4. November 11

Page 46: A fresh look at graphical editing

baseModern Expression Language

Freitag, 4. November 11

Page 47: A fresh look at graphical editing

baseModern Expression LanguageJava-Integration

Freitag, 4. November 11

Page 48: A fresh look at graphical editing

baseModern Expression LanguageJava-IntegrationStatically Typed

Freitag, 4. November 11

Page 49: A fresh look at graphical editing

baseModern Expression LanguageJava-IntegrationStatically TypedHighly Reusable

Freitag, 4. November 11

Page 50: A fresh look at graphical editing

• 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

Page 51: A fresh look at graphical editing

• Xtext-based with Xbase expressions

• Uni-directional transformation

• Interpreted

MAPPING DSL

Freitag, 4. November 11

Page 52: A fresh look at graphical editing

• Xtext-based with Xbase expressions

• Directly modifies Draw2d figures

• Interpreted

STYLING DSL

Freitag, 4. November 11

Page 53: A fresh look at graphical editing

MyClass

SuperClass

Freitag, 4. November 11

Page 54: A fresh look at graphical editing

MyClass

SuperClass

this

Freitag, 4. November 11

Page 55: A fresh look at graphical editing

diagram EClassHierarchy type EClass {

MyClass

SuperClass

this

Freitag, 4. November 11

Page 56: A fresh look at graphical editing

diagram EClassHierarchy type EClass {

MyClass

SuperClass

this

Freitag, 4. November 11

Page 57: A fresh look at graphical editing

diagram EClassHierarchy type EClass { node EClassNode for this {

MyClass

SuperClass

this

Freitag, 4. November 11

Page 58: A fresh look at graphical editing

diagram EClassHierarchy type EClass { node EClassNode for this {

MyClass

SuperClass

this

Freitag, 4. November 11

Page 59: A fresh look at graphical editing

diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this

MyClass

SuperClass

this

Freitag, 4. November 11

Page 60: A fresh look at graphical editing

diagram EClassHierarchy type EClass { node EClassNode for this { label Name for this

MyClass

SuperClass

this MyClass

Freitag, 4. November 11

Page 61: A fresh look at graphical editing

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

Page 62: A fresh look at graphical editing

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

Page 63: A fresh look at graphical editing

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

Page 64: A fresh look at graphical editing

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

Page 65: A fresh look at graphical editing

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

Page 66: A fresh look at graphical editing

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

Page 67: A fresh look at graphical editing

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

Page 68: A fresh look at graphical editing

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

Page 69: A fresh look at graphical editing

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

Page 70: A fresh look at graphical editing

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

Page 71: A fresh look at graphical editing

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

Page 72: A fresh look at graphical editing

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

Page 73: A fresh look at graphical editing

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

Page 74: A fresh look at graphical editing

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

Page 75: A fresh look at graphical editing

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

Page 76: A fresh look at graphical editing

https://github.com/JanKoehnlein/Generic-Graph-View

The code is at

But remember:

IT‘S A PROTOTYPE

Freitag, 4. November 11