-
Notifications
You must be signed in to change notification settings - Fork 8
Architectural Overview
The generic Theia GLSP client is composed of three modules:
- glsp-sprotty
- theia-glsp
- glsp-theia-extension
This module contains the implementation of the diagram framework which is used by a GLSP Theia client. The module is based on the sprotty-framework (https://github.com/theia-ide/sprotty). Additional features needed for GLSP compatibility are implemented using the extension approach provided by sprotty itself.
This module contains the gluecode for using glsp-sprotty diagrams in Theia. This module is forked from the gluecode for using standard sprotty diagrams in Theia (https://github.com/theia-ide/theia-sprotty) and adds the necessary adaptions for glsp-sprotty and GLSP.
This module contains the frontend contributions needed to make a Theia application a full-fledged GLSP client. In addition, it provides a backend contribution for connecting the Theia GLSP client to a GLSP server. To minimize costs the implementation reuses parts of the LSP Theia module (https://www.npmjs.com/package/@theia/languages) where applicable. Extensions for a concrete graphical language will inject their custom implementations into this module
The generic java-based GLSP server is composed of two modules:
- glsp-api
- glsp-server
This module implements the GLSP protocl-specific components like Actions, ActionMessages etc. In addition, it defines the interface for a generic modular GLSP-server component. The implemented protocol proposal can be found here: https://github.com/planger/GraphicalServerProtocol/blob/proposal-for-roadmap/specification.md
This module contributes the default implementation for the server interfaces provided by the glsp-api module. The implementation uses a module DI approach (similar to Xtext). Due to this approach a server implementation for a concrete graphical language can reuse the default implementation and change the behavior by injecting customized modules.