textual and graphical modeling: xtext editors within sirius … · 2018. 10. 31. · xtext editor...
Post on 31-Jan-2021
11 Views
Preview:
TRANSCRIPT
-
Textual AND graphical modeling: Xtext editors within Sirius Diagrams
Niko Stotz, niko.stotz@altran.com
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
top related