Crystal-Modeling / tasklist-theia-glsp

Primitive demo project aiming to use tasklist-lang (Langium LS) as a SourceModel server for GLSP Server
6 stars 1 forks source link

Eclipse GLSP - Project Template:
๐Ÿ–ฅ๏ธ Node โ— ๐Ÿ—‚๏ธ Custom JSON โ— ๐Ÿ–ผ๏ธ Theia

This folder contains a simple project template to get you started quickly for your diagram editor implementation based on GLSP. It provides the initial setup of the package architecture and environment for a GLSP diagram editor that uses ...

To explore alternative project templates or learn more about developing GLSP-based diagram editors, please refer to the Getting Started guide.

Project structure

This project is structured as follows:

The most important entry points are:

Prerequisites

The following libraries/frameworks need to be installed on your system:

The examples are heavily interweaved with Eclipse Theia, so please also check the prerequisites of Theia.

Theia Version compatibility

This project template is compatible with Theia >=1.37.2.

VS Code workspace

To work with the source code and debug the example in VS Code a dedicated VS Code Workspace is provided. The workspace includes both the glsp-client and glsp-server sources and offers dedicated launch configurations to run and debug the example application.

To open the workspace start a VS Code instance and use the Open Workspace from File.. entry from the File menu. Then navigate to the directory containing the workspace file and open the node-json-theia.code-workspace file.

For a smooth development experience we recommend a set of useful VS Code extensions. When the workspace is first opened VS Code will ask you wether you want to install those recommended extensions. Alternatively, you can also open the Extension View (Ctrl + Shift + X) and type @recommended into the search field to see the list of Workspace Recommendations.

Building the example

The server component and the client component have to be built using yarn. A convenience script to build both is provided. To build all components execute the following in the directory containing this README:

yarn build

In addition, it is also possible to build each component individually:

# Build only the glsp-client
yarn build:client

# Build only glsp-server
yarn build:server

Building packaged VSCode extensions (tasklist-lang)

To have tasklist-lang prepackaged into Theia build, it has to be built using the following command (from vsc-extensions/tasklist-lang) directory:

npm run rebuild && npm run vscode:prepublish

โ— You don't have to package it into VSIX file (though you could, with npx vsce package command).

Running the example

To start the Theia browser application with the integrated tasklist example, navigate to the client directory

cd glsp-client

and then execute:

yarn start

This will launch the example in the browser with an embedded GLSP server on localhost:3000.

โ— You should only run Theia from Chrome browser! Firefox fails to render some features, apparently.

Debugging the project

To debug the involved components, the VS Code workspace offers launch configs, available in the Run and Debug view (Ctrl + Shift + D). They are listed in the next section.

In order to develop GLSP server component, the following running procedure has been identified as the best:

  1. Run glsp-server compilation in watch mode (yarn watch from glsp-server directory)
  2. Run both Theia backend and GLSP server using "Launch TaskList Theia backed with external GLSP Server" launch config
  3. Open localhost:3000 in Chrome browser
  4. Whenever you want to see new changes propagated to the running instance:
    1. Close GLSP client (a tab with GLSP diagrams in Theia running application)
    2. Reload GLSP server process from Call Stack panel in VSCode ๐Ÿ”ƒ icon
    3. Reload Theia client by reloading the browser tab

Launch configuration

Here you can choose between four different launch configurations:

Next steps

Once you are up and running with this project template, we recommend to refer to the Getting Started to learn how to

More information

For more information, please visit the Eclipse GLSP Umbrella repository and the Eclipse GLSP Website. If you have questions, please raise them in the discussions and have a look at our communication and support options.