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
EditLabelUIExtension
where the diagram becomes dirty without an actual change. #766 - [diagram] Extend
ComputedBoundsAction
definition with routing information. This enables proper forwarding of client-side computed routes to the server #201 - [DI] The
createClientContainer
function is now deprecated. Please useinitializeDiagramContainer
instead. This new function can also be used withModuleConfigurations
which 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
Disposable
type #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
deselectAll
flag forSelectAction
s #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
registerListener
method on GLSP mouse and key tool to return a disposable for de-registration - Adapt
registerFeedback
method from feedback dispatcher to return a disposable for de-registration - Introduce dedicated
BaseGLSPCreationTool
for tools based on trigger actions - Introduce
toDisposeOnDisable
collection inBaseGLSPTool
to register disable handling during enablement
- Introduce
- [DI] Introduce and consistently use
FeatureModule
s instead of plain inversifyContainerModule
s #267 - [diagram] Introduce
statusModule
that 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
DiagramLoader
component + life cycle management #274 #282- Integration projects no longer need to manually implement the initial diagram loading. Instead a set of configurations
IDiagramOptions
and then the diagram loader
is invoked and initializes the diagram. - Add a
onServerInitialized
event to theGLSPClientAPI
. - Introduce
IDiagramStartup
service. 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
IButtonHandler
constructor 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
UndoOperation
andRedoOperation
toUndoAction
andRedoAction
to 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
elementIds
property ofLayoutOperation
is now optional. Ifundefined
the entire model will be layouted #232 - [API] Refactored base API #259
- Removed the
TYPES.SelectionService
service identifier. Please directly use theSelectionService
class as service identifier instead - The
SelectionService
binding is now part of thedefaultGLSPModule
. This means theSelectionService
remains available even if theselectModule
is not configured RootModelChangeListener
s are no longer tied to theFeedbackawareUpdateModelCommand
instead they are managed by theGLSPCommandStack
IMouseTool
andTYPES.IMouseTool
are no longer available. Directly inject and useMouseTool
instead- 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
&EditorContextService
to 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
I
prefix
- Reworked
- [API] Re-work tool and feedback structure #264
- Remove generic
toolsModule
andtoolFeedbackModule
in favor of individual tool modules - Rename
dispatchFeedback
inBaseGLSPTool
toregisterFeedback
to align with feedback dispatcher - Switch arguments in
deregisterFeedback
inBaseGLSPTool
for 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
glsp
prefix from all modules (e.g.glspSelectModule
->selectModule
) - In addition, the following modules have been renamed
defaultGLSPModule
->baseModule
modelHintsModule
->typeHintsModule
enableDefaultToolsOnFocusLossModule
->toolFocusLossModule
glspEditLabelModule
->labelEditModule
- Removed
- [websocket] Introduce a reusable
GLSPWebSocketProvider
class that supports reconnect on connection loss #269 - [API] Introduce
GLSPModelSource
as default implementation for sprotty'sModelSource
API #272 #287GLSPDiagramServer
has been deprecated and is no longer availableSelectionServiceAwareContextMenuMouseListener
renamed toGLSPContextMenuMouseListener
SourceURIAware
interface has been removed. No longe required since we only have oneGLSPModelSource
binding now.
- [protocol] Revise TypeHints API and introduce possibility to dynamically query the server for complex connection conditions #285
EdgeTypeHint
sourceElementTypeIds
andtargetElementTypeIds
are now optional. If not provided all connection targets are allowed- Introduce
dynamic
flag. If a hint has this flag enabled connection tools know that the have to query there server in addition
to checking the defaultConnectable.canConnect
method.
- Introduce
RequestCheckEdgeAction
&CheckEdgeResultAction
used 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
InitializeClientSessionParams
with aclientActions
property. 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
GModel
naming 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
SModel
classes haven been renamed by adding an Impl suffix (SModelElement
->SModelElementImpl
). We took this opportunity and aliased all sprotty model elements to consistently useGModel
SModelElement
->GModelElement
SNode
->GNode
SShapeElement
->GShapeElement
etc.
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