textual and graphical modeling: xtext editors within sirius … · 2018. 10. 31. · xtext editor...

50
Textual AND graphical modeling: Xtext editors within Sirius Diagrams Niko Stotz, [email protected] EclipseCon Europe, 2018-10-24

Upload: others

Post on 31-Jan-2021

9 views

Category:

Documents


1 download

TRANSCRIPT

  • Textual AND graphical modeling: Xtext editors within Sirius Diagrams

    Niko Stotz, [email protected]

    EclipseCon Europe, 2018-10-24

  • Goals

  • Xtext within Sirius Diagram

  • Xtext within Properties View

  • Configured in regular Odesign Model

  • Without Changes to Xtext

  • Demo

  • Config

  • Xtext Language Injectorpublic class ClassesLanguageInjector implementsIXtextLanguageInjector {

    @Override

    public Injector getInjector() {

    return ClassesActivator.getInstance()

    .getInjector(

    ClassesActivator.COM_EXAMPLE_CLASSES

    );

    }

    }

  • Language Injector Extension Point

  • Odesign Tool / Widget

  • Odesign Details

  • Features

  • Example Model as Textconstant MAX_ROOMS = 23

    constant MAX_PEOPLE = 42

    class House {

    + inhabitants: string[1..MAX_PEOPLE]

    }

    [[[

    rooms are important

    ]]]

    association rooms House --> Room [1..MAX_ROOMS]

    [[[

    A Room is not available!

    Please try at another place.

    ]]]

    class Room {

    [[[

    size doesn't really matter

    ]]]

    # size: integer[2..2]

    }

  • Example Model as Tree

  • Xtext Editing Model String Property

  • Text from Model Property

    A Room is not available!

    Please try at another place.

  • Document Completed from Config

    dummy

  • Show Only Relevant Part to User

    dummy

    A Room is not available!

    Please try at another place.

  • Xtext Editing Model Itself

  • Pre-selecting Feature Text

  • Editing Only Subset of Features

  • Editing Only Subset of Features

  • Editing Only Subset of Features

  • Editing Only Subset of Features

  • Editing Only Subset of Features

  • Editing Only Subset of Features

  • Editing Only Subset of Features

  • Different Grammar to Cut Middle Features

    association rooms House --> Room [1..MAX_ROOMS]

  • Gotchas

    •Editing identifying property

    •Working with erroneous models

    •Heuristics to find terminals adjacent to features

    •Size of Xtext edit box

  • Extensive Documentation

    • https://altran-mde.github.io/xtext-sirius-

    integration.io/userguide/index.html

    https://altran-mde.github.io/xtext-sirius-integration.io/userguide/index.html

  • Source Code & Samples on GitHub

    • https://github.com/altran-

    mde/xtext-sirius-integration

    https://github.com/altran-mde/xtext-sirius-integration

  • Future: Contribute to Sirius?

  • Lifecycle of Ecore Model

    File on

    Disk

    Text including

    Whitespaces,

    Comments

    Ecore ModelSirius

    DiagramLoad Parse

    render

    update

  • Lifecycle of Ecore Model

    File on

    Disk

    Text including

    Whitespaces,

    Comments

    Ecore ModelSirius

    Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed

    File on

    Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

  • Lifecycle of Textual User Edit

    File on DiskText including

    Whitespaces,

    Comments

    Ecore Model Sirius Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed File

    on Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

    Clone

  • Lifecycle of Textual User Edit

    File on DiskText including

    Whitespaces,

    Comments

    Ecore Model Sirius Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed File

    on Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

    Textual

    User Edit

    Dirty Ecore

    Model

    Clone

    Clone

  • Lifecycle of Textual User Edit

    File on DiskText including

    Whitespaces,

    Comments

    Ecore Model Sirius Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed File

    on Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

    Textual

    User Edit

    Dirty TextXtext editor with

    Text PartDisplay Part

    to User

    Dirty Ecore

    Model

    Clone

    Serial

    ize

    Clone

  • Lifecycle of Textual User Edit

    File on DiskText including

    Whitespaces,

    Comments

    Ecore Model Sirius Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed File

    on Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

    Textual

    User Edit

    Dirty TextXtext editor with

    Text PartDisplay Part

    to User

    User Edits

    Text

    Xtext editor with

    changed Text Part

    Get complete

    Text Changed Text

    Dirty Ecore

    Model

    Clone

    Serial

    ize

    Clone

  • Lifecycle of Textual User Edit

    File on DiskText including

    Whitespaces,

    Comments

    Ecore Model Sirius Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed File

    on Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

    Textual

    User Edit

    Dirty TextXtext editor with

    Text PartDisplay Part

    to User

    User Edits

    Text

    Xtext editor with

    changed Text Part

    Get complete

    Text Changed TextParse

    Changed

    Ecore Model

    Clone

    Changed

    EObjects

    Extract

    Dirty Ecore

    Model

    Clone

    Serial

    ize

    Clone

  • Lifecycle of Textual User Edit

    File on DiskText including

    Whitespaces,

    Comments

    Ecore Model Sirius Diagram

    Dirty

    Ecore Model

    Dirty Sirius

    Diagram

    Changed Text

    including

    Whitespaces,

    Comments

    Changed File

    on Disk

    Load Parse

    render

    update

    Graphical User Edit

    render

    updateSerializeSave

    Textual

    User Edit

    Dirty TextXtext editor with

    Text PartDisplay Part

    to User

    User Edits

    Text

    Xtext editor with

    changed Text Part

    Get complete

    Text Changed TextParse

    Changed

    Ecore Model

    Clone

    Changed

    EObjects

    Extract

    Dirty Ecore

    Model

    Clone

    Serial

    ize

    Clone Replace

    Original

    EObjects

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Changed EObjects

    User Edits

    Text

    events

    event1 [e .. pi]constants

    e 271

    pi 314

    Changed Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Changed EObjects

    User Edits

    Text

    events

    event1 [e .. pi]constants

    e 271

    pi 314

    Changed Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Changed EObjects

    User Edits

    Text

    events

    event1 [e .. pi]constants

    e 271

    pi 314

    Changed Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Changed EObjects

    User Edits

    Text

    Proxify

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Proxified

    events

    event1 [e .. pi]constants

    e 271

    pi 314

    Changed Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Changed EObjects

    User Edits

    Text

    Proxify

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Proxified

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Updated ModelReplace

    Original &

    Resolve

    Proxies

    events

    event1 [e .. pi]constants

    e 271

    pi 314

    Changed Model

  • References from Edited Model Part

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Cloned Model

    Textual

    User Edit

    events

    event1 [10 .. pi]

    constants

    e 271

    pi 314

    Original Model

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Changed EObjects

    User Edits

    Text

    Proxify

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Proxified

    events

    event1 [e .. pi]

    constants

    e 271

    pi 314

    Updated ModelReplace

    Original &

    Resolve

    Proxies

    identical

    events

    event1 [e .. pi]constants

    e 271

    pi 314

    Changed Model