All Projects → eclipse-glsp → Glsp

eclipse-glsp / Glsp

Licence: epl-2.0
Graphical language server platform for building web-based diagram editors

Projects that are alternatives of or similar to Glsp

glsp-examples
Example diagram editors built with Eclipse GLSP
Stars: ✭ 28 (-47.17%)
Mutual labels:  diagram, lsp
glsp-server
Java-based server framework of the graphical language server platform
Stars: ✭ 25 (-52.83%)
Mutual labels:  diagram, lsp
Swift Diagram Playgrounds
Drawing diagrams in Swift using a recursive enum data structure
Stars: ✭ 264 (+398.11%)
Mutual labels:  protocol, diagram
Misp Rfc
Specifications used in the MISP project including MISP core format
Stars: ✭ 31 (-41.51%)
Mutual labels:  protocol
Ron Cxx
RON2.1 C++ implementation
Stars: ✭ 33 (-37.74%)
Mutual labels:  protocol
Libpgen
Header only packet analysis library written in C++11
Stars: ✭ 40 (-24.53%)
Mutual labels:  protocol
Gatsby Embedder Excalidraw
🤴 Custom transformer to embed Excalidraw diagrams
Stars: ✭ 45 (-15.09%)
Mutual labels:  diagram
Pay Protocol
fixing the transition to a cashless world
Stars: ✭ 29 (-45.28%)
Mutual labels:  protocol
Lsp
Client implementation of the Language Server Protocol for Sublime Text
Stars: ✭ 1,018 (+1820.75%)
Mutual labels:  lsp
Uml Diagram For Python Design Pattern Examples
UML diagram list of GoF design pattern examples written in Python.
Stars: ✭ 40 (-24.53%)
Mutual labels:  diagram
Grav Plugin Diagrams
Diagrams is a Grav plugin that adds simple and powerful diagrams functionality
Stars: ✭ 37 (-30.19%)
Mutual labels:  diagram
Network Programming
Small Projects on Socket Programming, Website Scanning, Wireless & Network Security
Stars: ✭ 33 (-37.74%)
Mutual labels:  protocol
Ned2k
Nodejs library for ed2k protocol
Stars: ✭ 41 (-22.64%)
Mutual labels:  protocol
Bjdraggable
A simple Swift protocol utilising the powerful UIKitDynamics API, which makes ANY UIView draggable within a boundary view that acts as collision body, with a single method call. Works for any UIView.
Stars: ✭ 32 (-39.62%)
Mutual labels:  protocol
Protocol Buffers Language Server
[WIP] Protocol Buffers Language Server
Stars: ✭ 44 (-16.98%)
Mutual labels:  lsp
Whatpulse
WhatPulse reverse engineered
Stars: ✭ 30 (-43.4%)
Mutual labels:  protocol
Pylstar
An implementation of the LSTAR Grammatical Inference Algorithm
Stars: ✭ 41 (-22.64%)
Mutual labels:  protocol
Anette
Simple haxe network library
Stars: ✭ 35 (-33.96%)
Mutual labels:  protocol
Flowchart.js
Draws simple SVG flow chart diagrams from textual representation of the diagram
Stars: ✭ 7,711 (+14449.06%)
Mutual labels:  diagram
Specs
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 40 (-24.53%)
Mutual labels:  protocol

Eclipse GLSP build-status-server build-status-client build-status-theia build-status-examples

The Graphical Language Server Platform provides extensible components for the development of diagram editors including edit functionality in (distributed) web-applications via a client-server protocol.

It follows the architectural pattern of the Language Server Protocol, but applies it to graphical modeling and diagram editors for browser/cloud-based deployments. Parts of the protocol and the web-based client implementation is based on Sprotty but extends it with editing functionality and GLSP-specific communication with the server.

For more information, please have a look at the protocol or visit the Eclipse GLSP Website. If you have questions, contact us on our spectrum chat and have a look at our communication and support options.

alt

Features

Below is a list of features that are supported by the different base technologies that can be used with GLSP.

Feature Standalone Theia Integration Eclipse Integration VS Code Integration
Model Saving
Model Dirty State
Model SVG Export
Model Layout
Model Edit Modes
- Edit
- Read-only


 




 


 
Client View Port
- Center
- Fit to Screen








Client Status Notification
Client Message Notification
Element Selection
Element Hover
Element Validation
Element Navigation
Element Type Hints
Element Creation and Deletion
Node Change Bounds
- Move
- Resize








Node Change Container
Edge Reconnect
Edge Routing Points
Element Text Editing
Clipboard (Cut, Copy, Paste)
Undo / Redo
Contexts
- Context Menu
- Command Palette
- Tool Palette












Repositories

The GLSP source code consists of the following repositories:

Build artifacts

The client packages are available via npmjs, such as the glsp-client and the theia integration. The examples are available on npmjs too.

The server packages are available as maven as well as p2 dependency from the following maven repository or p2 update site.

Maven Repositories

P2 Update Sites

All changes on the master branch are deployed automatically to the corresponding snapshot repositories.

Prerequisites for building

Client packages

You’ll need node in version 12:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash
nvm install 12

and Yarn

npm install -g yarn

and Lerna

npm install -g lerna

Server packages

You'll need Java 11 and maven.

Building

To build the client packages, just invoke yarn in glsp-client, glsp-theia-integration. If you want to build the example too, run yarn in glsp-examples/client.

The server components are built with mvn clean install in glsp-server. If you want to build the example server, run mvn clean install in glsp-examples/server.

Building and starting the Workflow Diagram example

The Workflow Diagram is a consistent example provided by all GLSP components. The example implements a simple flow chart diagram editor with different types of nodes and edges (see screenshot below). The example can be used to try out different GLSP features, as well as several available integrations with IDE platforms (Theia, VSCode, Eclipse, Standalone). As the example is fully open source, you can also use it as a blueprint for a custom implementation of a GLSP diagram editor. The workflow example consists of the following components: the Workflow Diagram Server, the client, and optionally an IDE integration of the Workflow Diagram Editor. Please follow the steps below to build and run each of those components.

Building and running the Workflow Diagram Server

cd glsp-server
mvn clean install -Pfatjar

In the folder glsp-server/examples/org.eclipse.glsp.example.workflow/target, you should have a jar file org.eclipse.glsp.example.workflow-X.X.X-SNAPSHOT-glsp.jar whereas X.X.X is the current version. You can now start the server by executing the following commands:

cd examples/org.eclipse.glsp.example.workflow/target
java -jar org.eclipse.glsp.example.workflow-X.X.X-SNAPSHOT-glsp.jar org.eclipse.glsp.example.workflow.launch.ExampleServerLauncher

To start the example server from within your IDE, run the main method of the class ExampleServerLauncher.java in the module glsp-server/examples/org.eclipse.glsp.example.workflow.

Building and running the Workflow Diagram Editor in a Theia application

Note that it is not necessary to build the other components of GLSP just for running the workflow example, as the workflow example build will pull all dependencies (including those from GLSP) from npmjs and sonar.

Switch to the folder glsp-theia-integration in your clone of the glsp-theia-integration repository and build.

cd glsp-theia-integration
yarn

This will not only build the GLSP Theia integration modules, but also the workflow diagram editor example. Once the build is finished, you can start the Theia application:

cd glsp-theia-integration/examples/browser-app
yarn start

Now open a browser and point it to http://localhost:3000. If you open this the first time and you don't have selected a workspace yet, point it to glsp-theia-integration/examples/workspace of your repository clone. This will already include an up to date workflow file example1.wf that you can open by double-clicking it in the navigator.

In order to start the workflow diagram editor example with VSCode, Eclipse, or standalone, please see the documentation of the respective integration modules:

Setting up your development environment

If you want to explore or extend the GLSP source code in any of the available components, we recommend cloning the repositories alongside this repository, so that you have the following folder layout:

For the client-side code (Typescript), we recommend using VSCode. Therefore, this repository provides a VSCode workspace file, which you can open in VSCode and it will import all client-side folders for you -- given that you kept the repository structure specified above.

The GLSP workspace file provides build & watch tasks, so that you can build all packages with the task Build all or start watching all client packages with Watch all.

For the server components, you can use any IDE you like. We recommend an IDE that supports maven, though, to import the maven modules from the glsp-server and optionally also those from the glsp-examples.

Linking and watching

When you are planning to change more than one client package at a time, or if you want to test your changes with the workflow example, we recommend to yarn link your local sources. Therefore, we provide the yarn-link script that automatically links all the relevant packages. Currently, this script is only available for Linux and Mac (shell script). The GLSP VSCode workspace also includes a dedicated VSCode task called Yarn link all packages and Yarn unlink all packages.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].