GRAPHICAL VIEWS @sponemann FOR WEB-BASED MODELING TOOLS WITH THEIA - - PowerPoint PPT Presentation

graphical views
SMART_READER_LITE
LIVE PREVIEW

GRAPHICAL VIEWS @sponemann FOR WEB-BASED MODELING TOOLS WITH THEIA - - PowerPoint PPT Presentation

JAN KHNLEIN, MIRO SPNEMANN @jankoehnlein GRAPHICAL VIEWS @sponemann FOR WEB-BASED MODELING TOOLS WITH THEIA AND SPROTTY ECLIPSE THEIA CREATE WEB-BASED TOOLS IDE framework Using LSP Next-gen Eclipse RCP Extend with custom


slide-1
SLIDE 1

GRAPHICAL VIEWS FOR WEB-BASED MODELING TOOLS WITH THEIA AND SPROTTY

JAN KÖHNLEIN, MIRO SPÖNEMANN

@jankoehnlein @sponemann

slide-2
SLIDE 2

ECLIPSE THEIA

CREATE WEB-BASED TOOLS

▸ IDE framework ▸ Using LSP ▸ Next-gen Eclipse RCP ▸ Extend with custom editors

and views (called widgets)

▸ For desktop and web

slide-3
SLIDE 3

ECLIPSE SPROTTY

CREATE GRAPHICAL VIEWS

▸ Diagram framework ▸ Standalone or embedded in

Theia, Eclipse IDE or VS Code

▸ Client and server ▸ Integrated with EMF / Xtext ▸ Base for Eclipse GLSP

Sprotuy

slide-4
SLIDE 4

ECLIPSE SPROTTY

CLIENT ARCHITECTURE

Action Dispatcher Command Stack Viewer

Command Action SModel

Model Source Action

slide-5
SLIDE 5

OUTLINE

▸ Semantic model vs. view model ▸ How do you determine the content of a diagram? ▸ How do you edit a model using a diagram?

slide-6
SLIDE 6

DEMO

slide-7
SLIDE 7

MODELING TOOLS

SEPARATION OF MODEL AND VIEWS

Model View

slide-8
SLIDE 8

MODELING TOOLS

SEPARATION OF MODEL AND VIEWS

Model Subset View

  • verview / filter / manual composition
slide-9
SLIDE 9

MODELING TOOLS

SEPARATION OF MODEL AND VIEWS

Model Multiple Views

aspects / projections / viewpoints / perspectives

slide-10
SLIDE 10

MODELING TOOLS

SEPARATION OF MODEL AND VIEWS

Semantic Model View Model

Transformation (M2M)

  • verview / filter / manual composition
slide-11
SLIDE 11

MODELING TOOLS

SEPARATION OF MODEL AND VIEWS

Semantic Model Sprotty

client

Action Dispatcher Command Stack Viewer Model Source

server

SModel

slide-12
SLIDE 12

THE SPROTTY VIEW MODEL

ELEMENTS OF AN SMODEL

Package Module

name: string description: string version: string

🦒

SNode SLabel

dependency

SEdge SCompartment SPort

slide-13
SLIDE 13

{ "mindsKind": "Class", "isAbstract": false, "layout": "vbox", "selected": false, "position": { "x": 2136.560450164477, "y": 12 }, "size": { "width": 62.5625, "height": 47.375 }, "layoutOptions": { "paddingTop": 0, "paddingBottom": 0 }, "type": "node:Class", "id": "Class-Eclipse:Entity", "children": [ { "layout": "vbox", "position": { "x": 8, "y": 0 }, "size": { "width": 46.5625, "height": 47.375

slide-14
SLIDE 14

DIAGRAM AUTHORING: PERSISTENCE, LAYOUT, RECONCILING

slide-15
SLIDE 15

DIAGRAM CONTENT

WHAT'S SHOWING IN THE DIAGRAM?

Filtered submodel

▸ GUI for filter rules ▸ persistence of rules

Fully Manual

▸ GUI for composition ▸ model browser ▸ persistence ▸ reconciliation

Full model

▸ mapping ▸ lifecycle hooks

complexity

slide-16
SLIDE 16

DIAGRAM CONTENT

WHAT'S SHOWING IN THE DIAGRAM?

Graphical Editing

▸ GUI for editing ▸ sync back to model

Fully Manual

▸ GUI for composition ▸ model browser ▸ persistence ▸ reconciliation

complexity

slide-17
SLIDE 17

DIAGRAM CONTENT

FULL MODEL DIAGRAM

SEMANTIC MODEL SMODEL TRAFO USER CHANGE

slide-18
SLIDE 18

DIAGRAM CONTENT

FULL MODEL DIAGRAM

SEMANTIC MODEL SMODEL TRAFO

slide-19
SLIDE 19

DIAGRAM CONTENT

FULL MODEL DIAGRAM

SEMANTIC MODEL SMODEL TRAFO USER CHANGE

slide-20
SLIDE 20

DIAGRAM CONTENT

MANUAL CONTENT DIAGRAM

DIAGRAM CONFIG USER CHANGE SEMANTIC MODEL SMODEL TRAFO

slide-21
SLIDE 21

DIAGRAM CONTENT

MANUAL DIAGRAM - EXTERNAL FILE

DIAGRAM CONFIG SEMANTIC MODEL SMODEL TRAFO

slide-22
SLIDE 22

DIAGRAM CONTENT

MANUAL DIAGRAM - IN MODEL

SMODEL TRAFO DIAGRAM CONFIG SEMANTIC MODEL

slide-23
SLIDE 23

DIAGRAM CONTENT

DIAGRAM PERSISTENCE

▸ Don't store the SModel ▸ reduce to things the user really wants to change ▸ text-based formats to allow versioning, merging etc. ▸ Consider putting small information in the semantic model ▸ Fully-automated views don't need to be persisted

slide-24
SLIDE 24

DIAGRAM CONTENT

DIAGRAM LAYOUT

▸ Macro-layout to arrange nodes and route edges ▸ Sprotty uses Eclipse Layout Kernel (ELK) ▸ Modes ▸ fully automatic ▸ manual/on-demand ▸ ELK interactive

slide-25
SLIDE 25

DIAGRAM CONTENT

RECONCILING

▸ Decide when (not) to reconcile ▸ Provide „stable“ IDs/traces ▸ Fully-automated views don't need any reconciling

slide-26
SLIDE 26

GRAPHICAL
 EDITING

slide-27
SLIDE 27

GRAPHICAL EDITING

BI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO INVERSE MAPPING
 TRAFO USER CHANGE

slide-28
SLIDE 28

GRAPHICAL EDITING

BI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO INVERSE MAPPING
 TRAFO

slide-29
SLIDE 29

GRAPHICAL EDITING

BI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO INVERSE MAPPING
 TRAFO

slide-30
SLIDE 30

GRAPHICAL EDITING

BI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO INVERSE MAPPING
 TRAFO

slide-31
SLIDE 31

GRAPHICAL EDITING

BI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO INVERSE MAPPING
 TRAFO

slide-32
SLIDE 32

GRAPHICAL EDITING

BI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL

AVOID BI-DIRECTIONAL SYNC

slide-33
SLIDE 33

GRAPHICAL EDITING

UNI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO USER CHANGE

slide-34
SLIDE 34

GRAPHICAL EDITING

UNI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO USER CHANGE

slide-35
SLIDE 35

GRAPHICAL EDITING

UNI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO SEMANTIC CHANGE

slide-36
SLIDE 36

GRAPHICAL EDITING

UNI-DIRECTIONAL MAPPING

SEMANTIC MODEL SMODEL MAPPING
 TRAFO

slide-37
SLIDE 37

DEMO

slide-38
SLIDE 38

GRAPHICAL EDITING

CONSIDERATIONS

▸ Avoid bi-directional mapping ▸ Map user changes to semantic model changes ▸ e.g. LSP code actions, content assist, rename ▸ Maybe diagram content editing is enough

slide-39
SLIDE 39

RECOMMENDATIONS

KEEP IT SIMPLE!

▸ Ask yourself (or your team / customers): ▸ What problems do we want to solve with diagrams? ▸ What user interaction patterns are most suitable in our scenario?

slide-40
SLIDE 40
slide-41
SLIDE 41

REFERENCES

▸ https://theia-ide.org/ ▸ https://github.com/eclipse/sprotty ▸ https://github.com/TypeFox/npm-dependency-graph ▸ https://github.com/TypeFox/theia-xtext-sprotty-example ▸ https://www.youtube.com/watch?v=hrGc30iIdiA ▸ https://www.youtube.com/watch?v=IrFQKdjzvXU