2.0.0 Release
Changes
- [layout] Improve Layouter to support more dynamic layouts and complex parent/children node structures #187 - Contributed on behalf of STMicroelectronics
- [diagram] Fix SVG export for nested root elements e.g.
GLSPProjectionView#196 - [diagram] Scope the styles to not break existing application layout #209
- [routing] Ensure that routes are properly re-calculated when moving a routing point #198
- [diagram] Fix a bug in the
EditLabelUIExtensionwhere the diagram becomes dirty without an actual change. #766 - [diagram] Extend
ComputedBoundsActiondefinition with routing information. This enables proper forwarding of client-side computed routes to the server #201 - [DI] The
createClientContainerfunction is now deprecated. Please useinitializeDiagramContainerinstead. This new function can also be used withModuleConfigurationswhich allow a more fine granular configuration by adding new modules and/or removing default modules. #218 #231 #236 - [diagram] Fix incorrect calculation of decorator popup positions for edges. #221
- [protocol] Introduce a reusable
Disposabletype #222 - [protocol] Introduce reusable utility functions for DI configuration #236#237
- [diagram] Augment diagram SVG with additional model metadata to enable easier integration tests and accessibility #239
- [validation] Add and track reason for validation markers (e.g. batch and live validation) #243
- [protocol] Introduce optional
deselectAllflag forSelectActions #257 - [protocol] Provide the common interfaces and type definitions for TS-based GLSP servers #245 - Contributed on behalf of STMicroelectronics
- [diagram] Introduce a new set of accessability features for disability-aware conceptual modeling and keyboard-only diagram interactions. (experimental) #240 #241 #242 #254 #276 #279
- [API] Re-work tool and feedback structure #264 #274
- Introduce
registerListenermethod on GLSP mouse and key tool to return a disposable for de-registration - Adapt
registerFeedbackmethod from feedback dispatcher to return a disposable for de-registration - Introduce dedicated
BaseGLSPCreationToolfor tools based on trigger actions - Introduce
toDisposeOnDisablecollection inBaseGLSPToolto register disable handling during enablement
- Introduce
- [DI] Introduce and consistently use
FeatureModules instead of plain inversifyContainerModules #267 - [diagram] Introduce
statusModulethat binds UI extension to handle & renderGLSPStatusMessages. #272 - [diagram] Provide generic dirty state handling in
EditorContextService#272 - [diagram] Fix bug that broke edge edit (routing) in certain cases #273
- [API] Introduce
DiagramLoadercomponent + life cycle management #274 #282- Integration projects no longer need to manually implement the initial diagram loading. Instead a set of configurations
IDiagramOptionsand then the diagram loader
is invoked and initializes the diagram. - Add a
onServerInitializedevent to theGLSPClientAPI. - Introduce
IDiagramStartupservice. Adopters can multi bind this service to hook into the diagram loading lifecycle and provide additional logic. i.e. dispatching of initial actions.
- Integration projects no longer need to manually implement the initial diagram loading. Instead a set of configurations
- [diagram] Fix a bug that broke edge intersection detection when using the
GLSPProjectionView#275 - [diagram] Fix a bug regarding focus handling when integrated in an application frame like Theia #278
Breaking Changes
- [DI] Injecting an
IButtonHandlerconstructor is now deprecated. Please useconfigureButtonHandler()instead. #195 - Contributed on behalf of STMicroelectronics - [node] Update minimum requirements for Node to >=16.11.0 #210
- [protocol] Renamed
UndoOperationandRedoOperationtoUndoActionandRedoActionto match operation specification #216 - [protocol] Remove dependency to
vscode-ws-jsonrpc. The protocol package now directly offers functions to create a websocket rpc connections #215 - [protocol] The
elementIdsproperty ofLayoutOperationis now optional. Ifundefinedthe entire model will be layouted #232 - [API] Refactored base API #259
- Removed the
TYPES.SelectionServiceservice identifier. Please directly use theSelectionServiceclass as service identifier instead - The
SelectionServicebinding is now part of thedefaultGLSPModule. This means theSelectionServiceremains available even if theselectModuleis not configured RootModelChangeListeners are no longer tied to theFeedbackawareUpdateModelCommandinstead they are managed by theGLSPCommandStackIMouseToolandTYPES.IMouseToolare no longer available. Directly inject and useMouseToolinstead- Refactored rank utility functions
isRanked()->Ranked.is()getRank()->Ranked.getRank()DEFAULT_RANK->Ranked.DEFAULT_RANK
- Removed the
- [API] Introduce Event API to replace the old listener/notifier pattern #261
- Reworked
SelectionService,GlspCommandStack&EditorContextServiceto make use of this new API - Removed explicit (de)registration methods for listeners. Use the corresponding event property (e.g.
SelectionService.onSelectionChanged) instead - Aligned naming of injectable interfaces & service identifiers to consistently use the
Iprefix
- Reworked
- [API] Re-work tool and feedback structure #264
- Remove generic
toolsModuleandtoolFeedbackModulein favor of individual tool modules - Rename
dispatchFeedbackinBaseGLSPTooltoregisterFeedbackto align with feedback dispatcher - Switch arguments in
deregisterFeedbackinBaseGLSPToolfor easier de-registration and clean up actions
- Remove generic
- [protocol] Add messages for server-side progress reporting and remove timeout in
ServerMessageAction#265 - [DI] Renamed and aligned prefixes of DI modules. #266
- Removed
glspprefix from all modules (e.g.glspSelectModule->selectModule) - In addition, the following modules have been renamed
defaultGLSPModule->baseModulemodelHintsModule->typeHintsModuleenableDefaultToolsOnFocusLossModule->toolFocusLossModuleglspEditLabelModule->labelEditModule
- Removed
- [websocket] Introduce a reusable
GLSPWebSocketProviderclass that supports reconnect on connection loss #269 - [API] Introduce
GLSPModelSourceas default implementation for sprotty'sModelSourceAPI #272 #287GLSPDiagramServerhas been deprecated and is no longer availableSelectionServiceAwareContextMenuMouseListenerrenamed toGLSPContextMenuMouseListenerSourceURIAwareinterface has been removed. No longe required since we only have oneGLSPModelSourcebinding now.
- [protocol] Revise TypeHints API and introduce possibility to dynamically query the server for complex connection conditions #285
EdgeTypeHintsourceElementTypeIdsandtargetElementTypeIdsare now optional. If not provided all connection targets are allowed- Introduce
dynamicflag. If a hint has this flag enabled connection tools know that the have to query there server in addition
to checking the defaultConnectable.canConnectmethod.
- Introduce
RequestCheckEdgeAction&CheckEdgeResultActionused to query the server wether the provide edge information is valid.
Used in combination with dynamic type hints.
- [protocol] Refactor base protocol & actions #287
- Rename
ServerStatusAction->StatusAction - Rename
ServerMessageAction->MessageAction - Extend
InitializeClientSessionParamswith aclientActionsproperty. This is used by the server to now which action kinds are (also) handled by the client.
- Rename
- [API] Update to sprotty 1.0.0 and consistently use
GModelnaming scheme on client side [#291(https://github.com//pull/291)] - Move augmented GLSP reexport of sprotty into dedicated package
@eclipse-glsp/sprotty - With sprotty 1.0.0 the
SModelclasses haven been renamed by adding an Impl suffix (SModelElement->SModelElementImpl). We took this opportunity and aliased all sprotty model elements to consistently useGModelSModelElement->GModelElementSNode->GNodeSShapeElement->GShapeElementetc.
New Contributors
- @xai made their first contribution in #199
- @jmfrancois made their first contribution in #209
- @haydar-metin made their first contribution in #239
Full Changelog: v1.0.0...v2.0.0