- [diagram] Ensure that
GLSPMousePositionTracker
correctly calculates the current position in diagram local coordinates #391 - [di] Align Interface usage across *Manager classes #388
- Change DI bindings for:
GridManger
toTYPES.IGridManager
,ChangeBoundsManager
toTYPES.IChangeBoundsManager
andDebugManager
toTYPES.IDebugManager
.
- Change DI bindings for:
- [diagram] Fix a bug that prevented proper rendering of templates/ghost elements during node creation in Firefox #324 - Contributed on behalf of Axon Ivy AG
- [routing] Improve anchor point calculation for edge routing #325
- [validation] Fix a bug that could cause duplicate validation markers after a model update #329
- [di] Introduce a reusable
LazyInjector
that can be used for deferred retrial of services from the container. #330- Introduce
preLoadDiagram
hook forIDiagramStartup
s. This hook is invoked right before theDiagramLoader
starts the model loading process
- Introduce
- [launch] Introduce
GLSPWebWorkerProvider
to simply setting up a worker connection to a in-browser GLSP-server #322 - [diagram] Improve base abstract
UIExtension
to allow more fine-grained definition of container and parent #333 - Contributed on behalf of Axon Ivy AG - [protocol] Improve Geometry API. Add utility functions to
Bound
,Dimension
andPoint
. IntroduceVector
andMovement
types #341 - Contributed on behalf of Axon Ivy AG - [features] Introduce optional
gridModule
for managing and rendering grids anddebugModule
that allows do display additional graphical debug information during development #343 #359 - [diagram] Improve error handling of startup hooks #346
- [feature] Improve style handling in svg exporter #354
- [di] Improve
ContainerConfiguration
API and add additional checks to ensure that all ids ofFeatureModules
are unique #355 - [diagram] Update to sprotty 1.2.0. Non-breaking as all potential API breaks have been mitigated via the glsp-sprotty rexport layer #357
- [diagram] Fix a bug with the
AutocompleteWidget
that prevented proper application of valid suggestions #362 - [api] Improved behavior of default
ToolManager
to avoid unnecessary deactivation and reactivation of default tools #367 - [diagram] Add
onFocusChanged
event toFocusTracker
andEditorContextService
#380
- [API] Centralize most marquee selection behavior in the
MarqueeUtil
class which is now a singleton, injectable and needs theDOMHelper
. This will cause a break if you manually created the class without injecting it. To construct it manually, you need to provide theDomHelper
as a second argument #373. - [protocol] Avoid indirect dependency to
chai
introduce by accidentally exporting testing modules #321@eclipse-glsp/protocol
no longer exportstest-util.ts
via main index. If needed the module can still be imported via the full path@eclipse-glsp/protocol/lib/utils/test-util.ts
- [API] Apply feedback commands already on
SetModelCommand
and unifyrank
andpriority
property #323.- Method
FeedbackAwareUpdateModelCommand.getFeedbackCommands
moved toIFeedbackEmitter
for re-use, resulting in two new methods:getFeedbackCommands
andapplyFeedbackCommands
. - Method
FeedbackAwareUpdateModelCommand.getPriority
is replaced by a genericrank
property and theRanked
namespace. - The
priority
property (higher priority equals earlier execution) inFeedbackCommand
is superseeded by arank
property (lower rank equals earlier execution).
- Method
- [DI] Introduce deferred injection for multi-injected services (listeners, action handlers etc.). Highly reduces the likelihood of circular dependency issues during container creation #330.
No API breaks in the core API, but it introduces some minor breaks in protected methods/fields of default implementations:GLSPCommandStack
- Handling of
IGModelRootListeners
has moved to theEditorContextService
. onModelRootChanged
is no deprecated. UseEditorContextService.onModelRootChanged
instead
- Handling of
EditorContextService
: ThepostRequestModel
method has been removed. It was previously unused and effectively a no-op.SelectionService
: InjectedcommandStack
property has been removed.
- [diagram] Introduce a reusable
FeedbackEmitter
base implementation that is stable across model updates and allows composing feedback before dispatching it #342
Refactored tool implementations and related services to make use of the newFeedbackEmitter
API. This can cause potential breaks for adopters that have customized the default tool implementations. Affected tools and services:MouseTrackingElementPositionListener
,HelperLineManager
,FeedbackMoveMouseListener
,NodeCreationToolMouseListener
,EdgeEditListener
, - [diagram] Refactor and improve
ChangeBounds
API by introducing a centralizedChangeBoundsManage
andChangeBoundsTracker
#344 #348 #352 - Contributed on behalf of Axon Ivy AG This can cause potential breaks for adopters that have customized the default tool implementations
Affected tools and services:MouseTrackingElementPositionListener
,FeedbackMoveMouseListener
,ChangeBoundsTool
,ChangeBoundsListener
,FeedbackEdgeRouteMovingMouseListener
,NodeCreationTool
,
- [diagram] Fix a bug that prevented correct rendering of projection bars when using
GLSPProjectionView
#298 - [a11y] Improved responsibility and feedback when resizing or moving diagram elements with keyboard-only commands #295
- [diagram] Extends
configureDiagramOptions
function to also allow partial configuration ofViewerOptions
#296 - [diagram] Remove unused handleSetContextActions from ToolPalette #301
- [diagram] Deprecate
ISModelRootListener
API in favor ofIGModelRootListener
#303 - [diagram] Ensure that the suggestion container position of the
AutoCompleteWidget
is rendered correctly #304 - [feature] Extend
ToolPalette
/CreateOperation
API to support rendering of preview/ghost elements when creating new nodes #301 - [protocol] Fix a bug in
BaseJsonRpcClient
to ensure that it can handle multiple open diagram sessions #307 - [diagram] Restructure some tools to have a more common infrastructure and support helper lines #306
- [diagram] Fix a bug in
SelectionService
that caused issues with inversify when injecting certain services (e.g.ActionDispatcher
) inSelectionChangeListener
implementations #305 - [diagram] Ensure that the
SelectionService
does not trigger a change event if the selection did not change on model update #313
- [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
- [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(#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.
- [diagram] Fix a bug where the edge creation tool would select the wrong child when used inside of a nested node #158
- [example] Improved and modernized styling of the GLSP workflow example #160
- [contextMenu] Ensured that closing the context menu correctly restores the diagram focus. #469
- [build] Updated Typescript to version 4.5.5 and enforced
noImplicitOverride
#167 - [diagram] Added support for snapping edges (routing points) similar to how its done for moving/resizing elements. #170
- [layout] Implemented a custom layouter for HBox that supports nested compartments. #174
- [diagram] Disable tool execution on focus loss and reactive the default tools. #175
- [routing] Routing handles are now properly snapped if an
ISnapper
implementation is bound. #177 - [routing] Fix a bug that caused short animation flickering whenever a routing point was moved. #182
- [context] Properly integrated the browser context menu listeners -> Context menus now also work on Mac OS #183
- [protocol] Updated to sprotty >=0.11.0. With the new sprotty version the action declaration approach has been reworked from ES6 classes to plain interfaces + namespaces. To keep action declaration and creation consistent all action definitions of the protocol and client package have been updated as well. The old class based definitions are no longer available. This mainly affects construction calls
which have to be changed from
new SomeAction()
to using the create function of the corresponding namespaceSomeAction.create()
. In addition, typeguard functions have been included in the action namespaces as well and can now be used withSomeAction.is()
instead of using a dedicatedisSomeAction()
function.
#472 - Contributed on behalf of STMicroelectronics - [DI] Unified the sprotty
TYPE
andGLSP_TYPE
service identifier constants. They are reexported from the client main index asTYPE
. The oldGLSP_TYPE
constant definition has been deprecated will potentially be removed in the future. #472 - [protocol] Rename
ModelSourceChangedAction
toSourceModelChangedAction
including handlers etc #655 - [diagram] Cleanup/refactor various commands and action handlers. #176
- Rename
layoutCommandsModule
tolayoutModule
- Change handling of
ResizeElement
andAlignElement
actions to pure action handlers instead of commands. - Change handling of
NavigateToMarkersAction
to a pure action handler instead of commands - Refactor handler for
SetMarkersAction
to a standalone action handler instead of an command
- Rename
- [feature] Improve external navigation support through dedicated action. #95
- [build] Added a download script to download the latest workflow-glsp-server JAR from maven artifactory #99
- [diagram] Fix a bug that kept the hover feedback visible after the diagram widget becomes inactive #102
- [diagram] Extended the
ModifyCssFeedbackAction
to support bothstring[]
andSModelElement[]
as input #103 - [diagram] Improved extensibility of
AutoCompleteWidget
by enabling changing of settings without having to re-instantiate the entire widget #104 - [model] Added
SArgumentable
interface for denotingSModelElement
s that contain an arbitrary arguments map #106 - [diagram] Implemented a marquee selection tool to select multiple elements at once by drawing a rectangle. #108 #120
- [protocol] Added
fileUri
property toSaveModelAction
. This can be used to implement save-as functionality #109 - [protocol] Implemented missing typeguard functions for all protocol operations #110
- [diagram] Implemented a reusable utility function (
configureDefaultModelElements
) that handles configuration of default model elements and views. Introduce reusable view for rounded corner nodes and and improved edge view that supports custom padding for easer mouse handling. Adapted the workflow example to make use of these new views #113 - [example] Cleaned up and reworked the workflow example. Additional css classes are now applied directly to the
SModelElement
instead of using custom views. Removed now obsolete classesTaskNodeView
andWeightedEdgeView
#116 - [diagram] Fix a bug in the connection tool regarding the feedback edge snapping computation for nested elements. #123
- [diagram] Fix a bug in the copy& paste behavior. #124
- [protocol] Fix the definition of
ChangeContainerOperation
. #115 - [protocol] Remove the
name
property fromGLSPClient
. #130 - [diagram] Fix a bug in Firefox that required elements to be selected before they can be moved. #134
- [build] Upgrade to Snabbdom3 and ES2017 #137
- [protocol] Extract action message protocol and action definitions from
@eclipse-glsp/client
and move to@eclipse-glsp/protocol
#141 - Contributed on behalf of STMicroelectronics - [diagram] Fix a bug that occurred when moving nested elements. #135
- [example] Added support for structured nodes (categories) in workflow-example. #136
- [diagram] Fix a bug related to the mouse cursor position on resize. #144
- [model] Add a convenience method to create a container with default modules. #145
- [diagram] Introduce
glspViewportModule
. This module contains a customScrollMouseListener
that gets disabled if theMarqueeTool
is active. This module should be used instead of theviewportModule
provided by sprotty #108 - [protocol] Fix the definition of
ChangeContainerOperation
. The type of thelocation
property has been changed fromstring
toPoint
. #115 - [protocol] Remove the
name
property fromGLSPClient
. #130 - [build] Upgrade to Snabbdom3 and ES2017. Depended packages should upgrade to ES2017 as well. #137
This is the first release of Eclipse GLSP since it is hosted at the Eclipse Foundation. The 0.8.0 release includes new protocol message types and respective framework support for several new features, such as copy-paste, diagram navigation, etc. It also contains several clean-ups of the protocol and refactorings to simplify and streamline the API. The Eclipse Theia integration of GLSP features many improvements, such as problem marker integration, native context menu items and keybindings. Finally, several bug fixes and minor are part of this release as well.