@eclipse-glsp/client 2.2.0-next.368 → 2.2.0-next.370

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,8 +15,9 @@
15
15
  ********************************************************************************/
16
16
  import { Action, AnyObject, Args, Disposable, DisposableCollection, EditorContext, Emitter, Event, GModelElement, GModelRoot, IActionHandler, LazyInjector, MaybePromise, MousePositionTracker, SetDirtyStateAction, SetEditModeAction, ValueChange } from '@eclipse-glsp/sprotty';
17
17
  import { GLSPActionDispatcher } from './action-dispatcher';
18
+ import { FocusChange, FocusTracker } from './focus/focus-tracker';
18
19
  import { IDiagramOptions, IDiagramStartup } from './model/diagram-loader';
19
- import { SelectionService } from './selection-service';
20
+ import { SelectionChange, SelectionService } from './selection-service';
20
21
  /**
21
22
  * A hook to listen for model root changes. Will be called after a server update
22
23
  * has been processed
@@ -54,15 +55,35 @@ export declare class EditorContextService implements IActionHandler, Disposable,
54
55
  protected lazyInjector: LazyInjector;
55
56
  protected diagramOptions: IDiagramOptions;
56
57
  protected actionDispatcher: GLSPActionDispatcher;
58
+ protected focusTracker: FocusTracker;
57
59
  protected _editMode: string;
58
60
  protected onEditModeChangedEmitter: Emitter<ValueChange<string>>;
61
+ /**
62
+ * Event that is fired when the edit mode of the diagram changes i.e. after a {@link SetEditModeAction} has been handled.
63
+ */
59
64
  get onEditModeChanged(): Event<ValueChange<string>>;
60
65
  protected _isDirty: boolean;
61
66
  protected onDirtyStateChangedEmitter: Emitter<DirtyStateChange>;
67
+ /**
68
+ * Event that is fired when the dirty state of the diagram changes i.e. after a {@link SetDirtyStateAction} has been handled.
69
+ */
62
70
  get onDirtyStateChanged(): Event<DirtyStateChange>;
63
71
  protected _modelRoot?: Readonly<GModelRoot>;
72
+ /**
73
+ * Event that is fired when the model root of the diagram changes i.e. after the `CommandStack` has processed a model update.
74
+ */
64
75
  protected onModelRootChangedEmitter: Emitter<Readonly<GModelRoot>>;
65
76
  get onModelRootChanged(): Event<Readonly<GModelRoot>>;
77
+ /**
78
+ * Event that is fired when the focus state of the diagram changes i.e. after a {@link FocusStateChangedAction} has been handled
79
+ * by the {@link FocusTracker}.
80
+ */
81
+ get onFocusChanged(): Event<FocusChange>;
82
+ /**
83
+ * Event that is fired when the selection of the diagram changes i.e. a selection change has been handled
84
+ * by the {@link SelectionService}.
85
+ */
86
+ get onSelectionChanged(): Event<SelectionChange>;
66
87
  protected toDispose: DisposableCollection;
67
88
  protected initialize(): void;
68
89
  preLoadDiagram(): MaybePromise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"editor-context-service.d.ts","sourceRoot":"","sources":["../../src/base/editor-context-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor-context-service.d.ts","sourceRoot":"","sources":["../../src/base/editor-context-service.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ exports.EditorContextService = void 0;
28
28
  const sprotty_1 = require("@eclipse-glsp/sprotty");
29
29
  const inversify_1 = require("inversify");
30
30
  const action_dispatcher_1 = require("./action-dispatcher");
31
+ const focus_tracker_1 = require("./focus/focus-tracker");
31
32
  const selection_service_1 = require("./selection-service");
32
33
  /**
33
34
  * The `EditorContextService` is a central injectable component that gives read-only access to
@@ -45,18 +46,41 @@ let EditorContextService = class EditorContextService {
45
46
  constructor() {
46
47
  this.onEditModeChangedEmitter = new sprotty_1.Emitter();
47
48
  this.onDirtyStateChangedEmitter = new sprotty_1.Emitter();
49
+ /**
50
+ * Event that is fired when the model root of the diagram changes i.e. after the `CommandStack` has processed a model update.
51
+ */
48
52
  this.onModelRootChangedEmitter = new sprotty_1.Emitter();
49
53
  this.toDispose = new sprotty_1.DisposableCollection();
50
54
  }
55
+ /**
56
+ * Event that is fired when the edit mode of the diagram changes i.e. after a {@link SetEditModeAction} has been handled.
57
+ */
51
58
  get onEditModeChanged() {
52
59
  return this.onEditModeChangedEmitter.event;
53
60
  }
61
+ /**
62
+ * Event that is fired when the dirty state of the diagram changes i.e. after a {@link SetDirtyStateAction} has been handled.
63
+ */
54
64
  get onDirtyStateChanged() {
55
65
  return this.onDirtyStateChangedEmitter.event;
56
66
  }
57
67
  get onModelRootChanged() {
58
68
  return this.onModelRootChangedEmitter.event;
59
69
  }
70
+ /**
71
+ * Event that is fired when the focus state of the diagram changes i.e. after a {@link FocusStateChangedAction} has been handled
72
+ * by the {@link FocusTracker}.
73
+ */
74
+ get onFocusChanged() {
75
+ return this.focusTracker.onFocusChanged;
76
+ }
77
+ /**
78
+ * Event that is fired when the selection of the diagram changes i.e. a selection change has been handled
79
+ * by the {@link SelectionService}.
80
+ */
81
+ get onSelectionChanged() {
82
+ return this.selectionService.onSelectionChanged;
83
+ }
60
84
  initialize() {
61
85
  var _a;
62
86
  this._editMode = (_a = this.diagramOptions.editMode) !== null && _a !== void 0 ? _a : sprotty_1.EditMode.EDITABLE;
@@ -169,6 +193,10 @@ __decorate([
169
193
  (0, inversify_1.inject)(action_dispatcher_1.GLSPActionDispatcher),
170
194
  __metadata("design:type", action_dispatcher_1.GLSPActionDispatcher)
171
195
  ], EditorContextService.prototype, "actionDispatcher", void 0);
196
+ __decorate([
197
+ (0, inversify_1.inject)(focus_tracker_1.FocusTracker),
198
+ __metadata("design:type", focus_tracker_1.FocusTracker)
199
+ ], EditorContextService.prototype, "focusTracker", void 0);
172
200
  __decorate([
173
201
  (0, inversify_1.postConstruct)(),
174
202
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"editor-context-service.js","sourceRoot":"","sources":["../../src/base/editor-context-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,mDAqB+B;AAC/B,yCAA0E;AAC1E,2DAA2D;AAE3D,2DAAuD;AAwBvD;;;;;;;;;;;GAWG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QAiBO,6BAAwB,GAAG,IAAI,iBAAO,EAAuB,CAAC;QAM9D,+BAA0B,GAAG,IAAI,iBAAO,EAAoB,CAAC;QAM7D,8BAAyB,GAAG,IAAI,iBAAO,EAAwB,CAAC;QAKhE,cAAS,GAAG,IAAI,8BAAoB,EAAE,CAAC;IA4GrD,CAAC;IA5HG,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAC/C,CAAC;IAID,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;IACjD,CAAC;IAID,IAAI,kBAAkB;QAClB,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;IAChD,CAAC;IAKS,UAAU;;QAChB,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,mCAAI,kBAAQ,CAAC,QAAQ,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACxF,CAAC;IAED,cAAc;QACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAsB,eAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACxF,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAoB,eAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACpF,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,IAAW;QACX,OAAO;YACH,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;YAC7E,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB;YAClE,IAAI;SACP,CAAC;IACN,CAAC;IAED,gBAAgB,CAAC,kBAA4B,EAAE,IAAW;QACtD,OAAO;YACH,kBAAkB;YAClB,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB;YAClE,IAAI;SACP,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CAAC,IAA0B,EAAE,QAAmB;QAClE,IAAI,CAAC,CAAC,QAAQ,YAAY,sBAAY,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,2BAAiB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,6BAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAES,uBAAuB,CAAC,MAAyB;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAES,yBAAyB,CAAC,MAA2B;QAC3D,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;IACxC,CAAC;IAED,IAAI,SAAS;QACT,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,QAAQ,KAAK,kBAAQ,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ,CAAA;AA9IY,oDAAoB;AAEnB;IADT,IAAA,kBAAM,EAAC,oCAAgB,CAAC;8BACG,oCAAgB;8DAAC;AAGnC;IADT,IAAA,kBAAM,EAAC,8BAAoB,CAAC;8BACG,8BAAoB;kEAAC;AAG3C;IADT,IAAA,kBAAM,EAAC,sBAAY,CAAC;;0DACgB;AAG3B;IADT,IAAA,kBAAM,EAAC,eAAK,CAAC,eAAe,CAAC;;4DACY;AAGhC;IADT,IAAA,kBAAM,EAAC,wCAAoB,CAAC;8BACD,wCAAoB;8DAAC;AAuBvC;IADT,IAAA,yBAAa,GAAE;;;;sDAIf;AAYD;IADC,IAAA,sBAAU,GAAE;;;;mDAGZ;+BAtDQ,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CA8IhC"}
1
+ {"version":3,"file":"editor-context-service.js","sourceRoot":"","sources":["../../src/base/editor-context-service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,40 @@
1
- import { Action, IActionHandler, ICommand, ViewerOptions } from '@eclipse-glsp/sprotty';
1
+ /********************************************************************************
2
+ * Copyright (c) 2021-2023 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { Action, Emitter, Event, IActionHandler, ICommand, ViewerOptions } from '@eclipse-glsp/sprotty';
17
+ export interface FocusChange {
18
+ hasFocus: boolean;
19
+ focusElement: HTMLOrSVGElement | null;
20
+ diagramElement: HTMLElement | null;
21
+ }
22
+ /**
23
+ * Tracks the focus state of the diagram by handling {@link FocusStateChangedAction}s.
24
+ * Emits a {@link FocusChange} event when the focus state changes.
25
+ * Allows querying of the current focus state and the focused root diagram element and the currently focused element within the diagram.
26
+ */
2
27
  export declare class FocusTracker implements IActionHandler {
3
28
  protected inActiveCssClass: string;
4
29
  protected _hasFocus: boolean;
5
30
  protected _focusElement: HTMLOrSVGElement | null;
6
31
  protected _diagramElement: HTMLElement | null;
7
32
  protected options: ViewerOptions;
33
+ protected onFocusChangedEmitter: Emitter<FocusChange>;
34
+ /**
35
+ * Event that is fired when the focus state of the diagram changes i.e. after a {@link FocusStateChangedAction} has been handled.
36
+ */
37
+ get onFocusChanged(): Event<FocusChange>;
8
38
  get hasFocus(): boolean;
9
39
  get focusElement(): HTMLOrSVGElement | null;
10
40
  get diagramElement(): HTMLElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"focus-tracker.d.ts","sourceRoot":"","sources":["../../../src/base/focus/focus-tracker.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAS,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG/F,qBACa,YAAa,YAAW,cAAc;IAC/C,SAAS,CAAC,gBAAgB,SAAc;IACxC,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjD,SAAS,CAAC,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IAE9D,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAE1C;IAED,IAAI,cAAc,IAAI,WAAW,GAAG,IAAI,CAEvC;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ;CAiBnD"}
1
+ {"version":3,"file":"focus-tracker.d.ts","sourceRoot":"","sources":["../../../src/base/focus/focus-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAS,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI/G,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,cAAc,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC;AAED;;;;GAIG;AACH,qBACa,YAAa,YAAW,cAAc;IAC/C,SAAS,CAAC,gBAAgB,SAAc;IACxC,SAAS,CAAC,SAAS,UAAQ;IAC3B,SAAS,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACjD,SAAS,CAAC,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IAE9D,SAAS,CAAC,qBAAqB,uBAA8B;IAC7D;;OAEG;IACH,IAAI,cAAc,IAAI,KAAK,CAAC,WAAW,CAAC,CAEvC;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAE1C;IAED,IAAI,cAAc,IAAI,WAAW,GAAG,IAAI,CAEvC;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ;CAoBnD"}
@@ -25,13 +25,25 @@ exports.FocusTracker = void 0;
25
25
  *
26
26
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
27
27
  ********************************************************************************/
28
- const inversify_1 = require("inversify");
29
28
  const sprotty_1 = require("@eclipse-glsp/sprotty");
29
+ const inversify_1 = require("inversify");
30
30
  const focus_state_change_action_1 = require("./focus-state-change-action");
31
+ /**
32
+ * Tracks the focus state of the diagram by handling {@link FocusStateChangedAction}s.
33
+ * Emits a {@link FocusChange} event when the focus state changes.
34
+ * Allows querying of the current focus state and the focused root diagram element and the currently focused element within the diagram.
35
+ */
31
36
  let FocusTracker = class FocusTracker {
32
37
  constructor() {
33
38
  this.inActiveCssClass = 'inactive';
34
39
  this._hasFocus = true;
40
+ this.onFocusChangedEmitter = new sprotty_1.Emitter();
41
+ }
42
+ /**
43
+ * Event that is fired when the focus state of the diagram changes i.e. after a {@link FocusStateChangedAction} has been handled.
44
+ */
45
+ get onFocusChanged() {
46
+ return this.onFocusChangedEmitter.event;
35
47
  }
36
48
  get hasFocus() {
37
49
  return this._hasFocus;
@@ -43,22 +55,24 @@ let FocusTracker = class FocusTracker {
43
55
  return this._diagramElement;
44
56
  }
45
57
  handle(action) {
46
- if (focus_state_change_action_1.FocusStateChangedAction.is(action)) {
47
- this._hasFocus = action.hasFocus;
48
- this._focusElement = document.activeElement;
49
- this._diagramElement = document.getElementById(this.options.baseDiv);
50
- if (!this._diagramElement) {
51
- return;
52
- }
53
- if (this.hasFocus) {
54
- if (this._diagramElement.classList.contains(this.inActiveCssClass)) {
55
- this._diagramElement.classList.remove(this.inActiveCssClass);
56
- }
57
- }
58
- else {
59
- this._diagramElement.classList.add(this.inActiveCssClass);
58
+ if (!focus_state_change_action_1.FocusStateChangedAction.is(action)) {
59
+ return;
60
+ }
61
+ this._hasFocus = action.hasFocus;
62
+ this._focusElement = document.activeElement;
63
+ this._diagramElement = document.getElementById(this.options.baseDiv);
64
+ if (!this._diagramElement) {
65
+ return;
66
+ }
67
+ if (this.hasFocus) {
68
+ if (this._diagramElement.classList.contains(this.inActiveCssClass)) {
69
+ this._diagramElement.classList.remove(this.inActiveCssClass);
60
70
  }
61
71
  }
72
+ else {
73
+ this._diagramElement.classList.add(this.inActiveCssClass);
74
+ }
75
+ this.onFocusChangedEmitter.fire({ hasFocus: this.hasFocus, focusElement: this.focusElement, diagramElement: this.diagramElement });
62
76
  }
63
77
  };
64
78
  exports.FocusTracker = FocusTracker;
@@ -1 +1 @@
1
- {"version":3,"file":"focus-tracker.js","sourceRoot":"","sources":["../../../src/base/focus/focus-tracker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAA+C;AAC/C,mDAA+F;AAC/F,2EAAsE;AAG/D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACO,qBAAgB,GAAG,UAAU,CAAC;QAC9B,cAAS,GAAG,IAAI,CAAC;IAmC/B,CAAC;IA7BG,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,mDAAuB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAwC,CAAC;YACvE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC;IACL,CAAC;CACJ,CAAA;AArCY,oCAAY;AAMkB;IAAtC,IAAA,kBAAM,EAAC,eAAK,CAAC,aAAa,CAAC;;6CAAkC;uBANrD,YAAY;IADxB,IAAA,sBAAU,GAAE;GACA,YAAY,CAqCxB"}
1
+ {"version":3,"file":"focus-tracker.js","sourceRoot":"","sources":["../../../src/base/focus/focus-tracker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,mDAA+G;AAC/G,yCAA+C;AAC/C,2EAAsE;AAQtE;;;;GAIG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACO,qBAAgB,GAAG,UAAU,CAAC;QAC9B,cAAS,GAAG,IAAI,CAAC;QAMjB,0BAAqB,GAAG,IAAI,iBAAO,EAAe,CAAC;IAwCjE,CAAC;IAvCG;;OAEG;IACH,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,mDAAuB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAwC,CAAC;QACvE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACvI,CAAC;CACJ,CAAA;AAhDY,oCAAY;AAMkB;IAAtC,IAAA,kBAAM,EAAC,eAAK,CAAC,aAAa,CAAC;;6CAAkC;uBANrD,YAAY;IADxB,IAAA,sBAAU,GAAE;GACA,YAAY,CAgDxB"}
@@ -15,14 +15,16 @@
15
15
  ********************************************************************************/
16
16
  import { Action, GModelElement, KeyListener, KeyTool } from '@eclipse-glsp/sprotty';
17
17
  import { Tool } from '../../../base/tool-manager/tool';
18
+ import { IToolManager } from '../../../base/tool-manager/tool-manager';
18
19
  /**
19
- * Deselects the element if there is no interaction possible with element.
20
+ * Deselects currently selected elements on Escape if the default tools are currently active.
20
21
  */
21
22
  export declare class DeselectKeyTool implements Tool {
22
23
  static ID: string;
23
24
  isEditTool: boolean;
24
25
  protected readonly deselectKeyListener: DeselectKeyListener;
25
26
  protected readonly keytool: KeyTool;
27
+ protected toolManager: IToolManager;
26
28
  get id(): string;
27
29
  enable(): void;
28
30
  disable(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"deselect-key-tool.d.ts","sourceRoot":"","sources":["../../../../src/features/accessibility/view-key-tools/deselect-key-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EACH,MAAM,EACN,aAAa,EAEb,WAAW,EACX,OAAO,EAIV,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAGvD;;GAEG;AACH,qBACa,eAAgB,YAAW,IAAI;IACxC,MAAM,CAAC,EAAE,SAA4B;IAErC,UAAU,UAAQ;IAElB,SAAS,CAAC,QAAQ,CAAC,mBAAmB,sBAA6B;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAErD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;CAGlB;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IACvC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE;IAyBvE,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;CAGpE"}
1
+ {"version":3,"file":"deselect-key-tool.d.ts","sourceRoot":"","sources":["../../../../src/features/accessibility/view-key-tools/deselect-key-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAoB,WAAW,EAAE,OAAO,EAAqC,MAAM,uBAAuB,CAAC;AAIzI,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGvE;;GAEG;AACH,qBACa,eAAgB,YAAW,IAAI;IACxC,MAAM,CAAC,EAAE,SAA4B;IAErC,UAAU,UAAQ;IAElB,SAAS,CAAC,QAAQ,CAAC,mBAAmB,sBAA6B;IAElD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC;IAEhE,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;CAGlB;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IACvC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE;IAmBvE,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;CAGpE"}
@@ -30,9 +30,9 @@ const sprotty_1 = require("@eclipse-glsp/sprotty");
30
30
  const inversify_1 = require("inversify");
31
31
  const iterable_1 = require("sprotty/lib/utils/iterable");
32
32
  const keyboard_1 = require("sprotty/lib/utils/keyboard");
33
- const model_1 = require("../../change-bounds/model");
33
+ const edge_edit_tool_feedback_1 = require("../../tools/edge-edit/edge-edit-tool-feedback");
34
34
  /**
35
- * Deselects the element if there is no interaction possible with element.
35
+ * Deselects currently selected elements on Escape if the default tools are currently active.
36
36
  */
37
37
  let DeselectKeyTool = DeselectKeyTool_1 = class DeselectKeyTool {
38
38
  constructor() {
@@ -55,16 +55,16 @@ __decorate([
55
55
  (0, inversify_1.inject)(sprotty_1.KeyTool),
56
56
  __metadata("design:type", sprotty_1.KeyTool)
57
57
  ], DeselectKeyTool.prototype, "keytool", void 0);
58
+ __decorate([
59
+ (0, inversify_1.inject)(sprotty_1.TYPES.IToolManager),
60
+ __metadata("design:type", Object)
61
+ ], DeselectKeyTool.prototype, "toolManager", void 0);
58
62
  exports.DeselectKeyTool = DeselectKeyTool = DeselectKeyTool_1 = __decorate([
59
63
  (0, inversify_1.injectable)()
60
64
  ], DeselectKeyTool);
61
65
  class DeselectKeyListener extends sprotty_1.KeyListener {
62
66
  keyDown(target, event) {
63
67
  if (this.matchesDeselectKeystroke(event)) {
64
- const isResizeHandleActive = (0, iterable_1.toArray)(target.root.index.all().filter(el => el instanceof model_1.GResizeHandle)).length > 0;
65
- if (isResizeHandleActive) {
66
- return [];
67
- }
68
68
  const deselect = (0, iterable_1.toArray)(target.root.index.all().filter(element => (0, sprotty_1.isSelectable)(element) && element.selected));
69
69
  const actions = [];
70
70
  if (deselect.length > 0) {
@@ -72,7 +72,7 @@ class DeselectKeyListener extends sprotty_1.KeyListener {
72
72
  }
73
73
  const routableDeselect = deselect.filter(e => e instanceof sprotty_1.GRoutableElement).map(e => e.id);
74
74
  if (routableDeselect.length > 0) {
75
- actions.push(sprotty_1.SwitchEditModeAction.create({ elementsToDeactivate: routableDeselect }));
75
+ actions.push(edge_edit_tool_feedback_1.SwitchRoutingModeAction.create({ elementsToDeactivate: routableDeselect }));
76
76
  }
77
77
  return actions;
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deselect-key-tool.js","sourceRoot":"","sources":["../../../../src/features/accessibility/view-key-tools/deselect-key-tool.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;;AAElF,mDAS+B;AAC/B,yCAA+C;AAC/C,yDAAqD;AACrD,yDAA8D;AAE9D,qDAA0D;AAE1D;;GAEG;AAEI,IAAM,eAAe,uBAArB,MAAM,eAAe;IAArB;QAGH,eAAU,GAAG,IAAI,CAAC;QAEC,wBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAevE,CAAC;IAXG,IAAI,EAAE;QACF,OAAO,iBAAe,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC;;AAnBQ,0CAAe;AACjB,kBAAE,GAAG,wBAAwB,AAA3B,CAA4B;AAMD;IAAnC,IAAA,kBAAM,EAAC,iBAAO,CAAC;8BAA6B,iBAAO;gDAAC;0BAP5C,eAAe;IAD3B,IAAA,sBAAU,GAAE;GACA,eAAe,CAoB3B;AAED,MAAa,mBAAoB,SAAQ,qBAAW;IACvC,OAAO,CAAC,MAAqB,EAAE,KAAoB;QACxD,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,oBAAoB,GAAG,IAAA,kBAAO,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,qBAAa,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnH,IAAI,oBAAoB,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,IAAA,kBAAO,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,sBAAY,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/G,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,sBAAY,CAAC,MAAM,CAAC,EAAE,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,0BAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5F,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,8BAAoB,CAAC,MAAM,CAAC,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC1F,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,wBAAwB,CAAC,KAAoB;QACnD,OAAO,IAAA,2BAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACJ;AA7BD,kDA6BC"}
1
+ {"version":3,"file":"deselect-key-tool.js","sourceRoot":"","sources":["../../../../src/features/accessibility/view-key-tools/deselect-key-tool.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;;;;;;;;;;;AAElF,mDAAyI;AACzI,yCAA+C;AAC/C,yDAAqD;AACrD,yDAA8D;AAG9D,2FAAwF;AAExF;;GAEG;AAEI,IAAM,eAAe,uBAArB,MAAM,eAAe;IAArB;QAGH,eAAU,GAAG,IAAI,CAAC;QAEC,wBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAgBvE,CAAC;IAXG,IAAI,EAAE;QACF,OAAO,iBAAe,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM;QACF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC;;AApBQ,0CAAe;AACjB,kBAAE,GAAG,wBAAwB,AAA3B,CAA4B;AAMD;IAAnC,IAAA,kBAAM,EAAC,iBAAO,CAAC;8BAA6B,iBAAO;gDAAC;AACf;IAArC,IAAA,kBAAM,EAAC,eAAK,CAAC,YAAY,CAAC;;oDAAqC;0BARvD,eAAe;IAD3B,IAAA,sBAAU,GAAE;GACA,eAAe,CAqB3B;AAED,MAAa,mBAAoB,SAAQ,qBAAW;IACvC,OAAO,CAAC,MAAqB,EAAE,KAAoB;QACxD,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAA,kBAAO,EAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,sBAAY,EAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/G,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,sBAAY,CAAC,MAAM,CAAC,EAAE,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,0BAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5F,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,iDAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAES,wBAAwB,CAAC,KAAoB;QACnD,OAAO,IAAA,2BAAgB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACJ;AAvBD,kDAuBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-glsp/client",
3
- "version": "2.2.0-next.368+43105c0",
3
+ "version": "2.2.0-next.370+89dfe80",
4
4
  "description": "A sprotty-based client for GLSP",
5
5
  "keywords": [
6
6
  "eclipse",
@@ -46,7 +46,7 @@
46
46
  "watch": "tsc -w"
47
47
  },
48
48
  "dependencies": {
49
- "@eclipse-glsp/sprotty": "2.2.0-next.368+43105c0",
49
+ "@eclipse-glsp/sprotty": "2.2.0-next.370+89dfe80",
50
50
  "autocompleter": "^9.1.2",
51
51
  "file-saver": "^2.0.5",
52
52
  "lodash": "4.17.21",
@@ -63,5 +63,5 @@
63
63
  "publishConfig": {
64
64
  "access": "public"
65
65
  },
66
- "gitHead": "43105c020a91c0a580e425111ca4ca5fc2225f18"
66
+ "gitHead": "89dfe80a3b3b36756a1c8bffdf251f62107d0375"
67
67
  }
@@ -37,8 +37,9 @@ import {
37
37
  } from '@eclipse-glsp/sprotty';
38
38
  import { inject, injectable, postConstruct, preDestroy } from 'inversify';
39
39
  import { GLSPActionDispatcher } from './action-dispatcher';
40
+ import { FocusChange, FocusTracker } from './focus/focus-tracker';
40
41
  import { IDiagramOptions, IDiagramStartup } from './model/diagram-loader';
41
- import { SelectionService } from './selection-service';
42
+ import { SelectionChange, SelectionService } from './selection-service';
42
43
 
43
44
  /**
44
45
  * A hook to listen for model root changes. Will be called after a server update
@@ -91,24 +92,52 @@ export class EditorContextService implements IActionHandler, Disposable, IDiagra
91
92
  @inject(GLSPActionDispatcher)
92
93
  protected actionDispatcher: GLSPActionDispatcher;
93
94
 
95
+ @inject(FocusTracker)
96
+ protected focusTracker: FocusTracker;
97
+
94
98
  protected _editMode: string;
95
99
  protected onEditModeChangedEmitter = new Emitter<ValueChange<string>>();
100
+ /**
101
+ * Event that is fired when the edit mode of the diagram changes i.e. after a {@link SetEditModeAction} has been handled.
102
+ */
96
103
  get onEditModeChanged(): Event<ValueChange<string>> {
97
104
  return this.onEditModeChangedEmitter.event;
98
105
  }
99
106
 
100
107
  protected _isDirty: boolean;
101
108
  protected onDirtyStateChangedEmitter = new Emitter<DirtyStateChange>();
109
+ /**
110
+ * Event that is fired when the dirty state of the diagram changes i.e. after a {@link SetDirtyStateAction} has been handled.
111
+ */
102
112
  get onDirtyStateChanged(): Event<DirtyStateChange> {
103
113
  return this.onDirtyStateChangedEmitter.event;
104
114
  }
105
115
 
106
116
  protected _modelRoot?: Readonly<GModelRoot>;
117
+ /**
118
+ * Event that is fired when the model root of the diagram changes i.e. after the `CommandStack` has processed a model update.
119
+ */
107
120
  protected onModelRootChangedEmitter = new Emitter<Readonly<GModelRoot>>();
108
121
  get onModelRootChanged(): Event<Readonly<GModelRoot>> {
109
122
  return this.onModelRootChangedEmitter.event;
110
123
  }
111
124
 
125
+ /**
126
+ * Event that is fired when the focus state of the diagram changes i.e. after a {@link FocusStateChangedAction} has been handled
127
+ * by the {@link FocusTracker}.
128
+ */
129
+ get onFocusChanged(): Event<FocusChange> {
130
+ return this.focusTracker.onFocusChanged;
131
+ }
132
+
133
+ /**
134
+ * Event that is fired when the selection of the diagram changes i.e. a selection change has been handled
135
+ * by the {@link SelectionService}.
136
+ */
137
+ get onSelectionChanged(): Event<SelectionChange> {
138
+ return this.selectionService.onSelectionChanged;
139
+ }
140
+
112
141
  protected toDispose = new DisposableCollection();
113
142
 
114
143
  @postConstruct()
@@ -13,10 +13,21 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, Emitter, Event, IActionHandler, ICommand, TYPES, ViewerOptions } from '@eclipse-glsp/sprotty';
16
17
  import { inject, injectable } from 'inversify';
17
- import { Action, IActionHandler, ICommand, TYPES, ViewerOptions } from '@eclipse-glsp/sprotty';
18
18
  import { FocusStateChangedAction } from './focus-state-change-action';
19
19
 
20
+ export interface FocusChange {
21
+ hasFocus: boolean;
22
+ focusElement: HTMLOrSVGElement | null;
23
+ diagramElement: HTMLElement | null;
24
+ }
25
+
26
+ /**
27
+ * Tracks the focus state of the diagram by handling {@link FocusStateChangedAction}s.
28
+ * Emits a {@link FocusChange} event when the focus state changes.
29
+ * Allows querying of the current focus state and the focused root diagram element and the currently focused element within the diagram.
30
+ */
20
31
  @injectable()
21
32
  export class FocusTracker implements IActionHandler {
22
33
  protected inActiveCssClass = 'inactive';
@@ -26,6 +37,14 @@ export class FocusTracker implements IActionHandler {
26
37
 
27
38
  @inject(TYPES.ViewerOptions) protected options: ViewerOptions;
28
39
 
40
+ protected onFocusChangedEmitter = new Emitter<FocusChange>();
41
+ /**
42
+ * Event that is fired when the focus state of the diagram changes i.e. after a {@link FocusStateChangedAction} has been handled.
43
+ */
44
+ get onFocusChanged(): Event<FocusChange> {
45
+ return this.onFocusChangedEmitter.event;
46
+ }
47
+
29
48
  get hasFocus(): boolean {
30
49
  return this._hasFocus;
31
50
  }
@@ -39,20 +58,23 @@ export class FocusTracker implements IActionHandler {
39
58
  }
40
59
 
41
60
  handle(action: Action): void | Action | ICommand {
42
- if (FocusStateChangedAction.is(action)) {
43
- this._hasFocus = action.hasFocus;
44
- this._focusElement = document.activeElement as HTMLOrSVGElement | null;
45
- this._diagramElement = document.getElementById(this.options.baseDiv);
46
- if (!this._diagramElement) {
47
- return;
48
- }
49
- if (this.hasFocus) {
50
- if (this._diagramElement.classList.contains(this.inActiveCssClass)) {
51
- this._diagramElement.classList.remove(this.inActiveCssClass);
52
- }
53
- } else {
54
- this._diagramElement.classList.add(this.inActiveCssClass);
61
+ if (!FocusStateChangedAction.is(action)) {
62
+ return;
63
+ }
64
+
65
+ this._hasFocus = action.hasFocus;
66
+ this._focusElement = document.activeElement as HTMLOrSVGElement | null;
67
+ this._diagramElement = document.getElementById(this.options.baseDiv);
68
+ if (!this._diagramElement) {
69
+ return;
70
+ }
71
+ if (this.hasFocus) {
72
+ if (this._diagramElement.classList.contains(this.inActiveCssClass)) {
73
+ this._diagramElement.classList.remove(this.inActiveCssClass);
55
74
  }
75
+ } else {
76
+ this._diagramElement.classList.add(this.inActiveCssClass);
56
77
  }
78
+ this.onFocusChangedEmitter.fire({ hasFocus: this.hasFocus, focusElement: this.focusElement, diagramElement: this.diagramElement });
57
79
  }
58
80
  }
@@ -14,24 +14,16 @@
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
16
 
17
- import {
18
- Action,
19
- GModelElement,
20
- GRoutableElement,
21
- KeyListener,
22
- KeyTool,
23
- SelectAction,
24
- SwitchEditModeAction,
25
- isSelectable
26
- } from '@eclipse-glsp/sprotty';
17
+ import { Action, GModelElement, GRoutableElement, KeyListener, KeyTool, SelectAction, TYPES, isSelectable } from '@eclipse-glsp/sprotty';
27
18
  import { inject, injectable } from 'inversify';
28
19
  import { toArray } from 'sprotty/lib/utils/iterable';
29
20
  import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
30
21
  import { Tool } from '../../../base/tool-manager/tool';
31
- import { GResizeHandle } from '../../change-bounds/model';
22
+ import { IToolManager } from '../../../base/tool-manager/tool-manager';
23
+ import { SwitchRoutingModeAction } from '../../tools/edge-edit/edge-edit-tool-feedback';
32
24
 
33
25
  /**
34
- * Deselects the element if there is no interaction possible with element.
26
+ * Deselects currently selected elements on Escape if the default tools are currently active.
35
27
  */
36
28
  @injectable()
37
29
  export class DeselectKeyTool implements Tool {
@@ -42,6 +34,7 @@ export class DeselectKeyTool implements Tool {
42
34
  protected readonly deselectKeyListener = new DeselectKeyListener();
43
35
 
44
36
  @inject(KeyTool) protected readonly keytool: KeyTool;
37
+ @inject(TYPES.IToolManager) protected toolManager: IToolManager;
45
38
 
46
39
  get id(): string {
47
40
  return DeselectKeyTool.ID;
@@ -59,12 +52,6 @@ export class DeselectKeyTool implements Tool {
59
52
  export class DeselectKeyListener extends KeyListener {
60
53
  override keyDown(target: GModelElement, event: KeyboardEvent): Action[] {
61
54
  if (this.matchesDeselectKeystroke(event)) {
62
- const isResizeHandleActive = toArray(target.root.index.all().filter(el => el instanceof GResizeHandle)).length > 0;
63
-
64
- if (isResizeHandleActive) {
65
- return [];
66
- }
67
-
68
55
  const deselect = toArray(target.root.index.all().filter(element => isSelectable(element) && element.selected));
69
56
  const actions: Action[] = [];
70
57
 
@@ -74,7 +61,7 @@ export class DeselectKeyListener extends KeyListener {
74
61
 
75
62
  const routableDeselect = deselect.filter(e => e instanceof GRoutableElement).map(e => e.id);
76
63
  if (routableDeselect.length > 0) {
77
- actions.push(SwitchEditModeAction.create({ elementsToDeactivate: routableDeselect }));
64
+ actions.push(SwitchRoutingModeAction.create({ elementsToDeactivate: routableDeselect }));
78
65
  }
79
66
 
80
67
  return actions;