a fresh look at graphical editing

Post on 18-Dec-2014

1.043 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

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

top related