@eclipse-glsp/client 2.2.0-next.358 → 2.2.0-next.360
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.
- package/lib/features/element-template/mouse-tracking-element-position-listener.d.ts +6 -2
- package/lib/features/element-template/mouse-tracking-element-position-listener.d.ts.map +1 -1
- package/lib/features/element-template/mouse-tracking-element-position-listener.js +13 -2
- package/lib/features/element-template/mouse-tracking-element-position-listener.js.map +1 -1
- package/lib/features/tools/edge-creation/edge-creation-tool.d.ts +13 -2
- package/lib/features/tools/edge-creation/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation/edge-creation-tool.js +25 -8
- package/lib/features/tools/edge-creation/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/node-creation/node-creation-tool.d.ts +16 -2
- package/lib/features/tools/node-creation/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation/node-creation-tool.js +24 -10
- package/lib/features/tools/node-creation/node-creation-tool.js.map +1 -1
- package/package.json +3 -3
- package/src/features/element-template/mouse-tracking-element-position-listener.ts +26 -3
- package/src/features/tools/edge-creation/edge-creation-tool.ts +29 -10
- package/src/features/tools/node-creation/node-creation-tool.ts +33 -13
|
@@ -13,8 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Action, GModelElement, Point } from '@eclipse-glsp/sprotty';
|
|
16
|
+
import { Action, DisposableCollection, GModelElement, GModelRoot, Point } from '@eclipse-glsp/sprotty';
|
|
17
17
|
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
18
|
+
import { EditorContextService } from '../../base/editor-context-service';
|
|
18
19
|
import { FeedbackEmitter } from '../../base/feedback/feedback-emitter';
|
|
19
20
|
import { MoveableElement } from '../../utils/gmodel-util';
|
|
20
21
|
import { FeedbackAwareTool } from '../tools/base-tools';
|
|
@@ -27,14 +28,17 @@ export declare class MouseTrackingElementPositionListener extends DragAwareMouse
|
|
|
27
28
|
protected elementId: string;
|
|
28
29
|
protected tool: PositioningTool;
|
|
29
30
|
protected cursorPosition: 'top-left' | 'middle';
|
|
31
|
+
protected editorContext?: EditorContextService | undefined;
|
|
30
32
|
protected moveGhostFeedback: FeedbackEmitter;
|
|
31
33
|
protected tracker: ChangeBoundsTracker;
|
|
32
|
-
|
|
34
|
+
protected toDispose: DisposableCollection;
|
|
35
|
+
constructor(elementId: string, tool: PositioningTool, cursorPosition?: 'top-left' | 'middle', editorContext?: EditorContextService | undefined);
|
|
33
36
|
protected getTrackedElement(target: GModelElement, event: MouseEvent): MoveableElement | undefined;
|
|
34
37
|
mouseMove(ctx: GModelElement, event: MouseEvent): Action[];
|
|
35
38
|
protected initialize(element: MoveableElement, target: GModelElement, event: MouseEvent): void;
|
|
36
39
|
protected initializeElementPosition(element: MoveableElement, target: GModelElement, event: MouseEvent): Point;
|
|
37
40
|
protected addMoveFeedback(move: TrackedMove, ctx: GModelElement, event: MouseEvent): void;
|
|
41
|
+
protected modelRootChanged(root: Readonly<GModelRoot>): void;
|
|
38
42
|
dispose(): void;
|
|
39
43
|
}
|
|
40
44
|
//# sourceMappingURL=mouse-tracking-element-position-listener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mouse-tracking-element-position-listener.d.ts","sourceRoot":"","sources":["../../../src/features/element-template/mouse-tracking-element-position-listener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,
|
|
1
|
+
{"version":3,"file":"mouse-tracking-element-position-listener.d.ts","sourceRoot":"","sources":["../../../src/features/element-template/mouse-tracking-element-position-listener.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EACH,MAAM,EAEN,oBAAoB,EACpB,aAAa,EACb,UAAU,EAEV,KAAK,EAGR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAEhG,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;CACrD;AAED,qBAAa,oCAAqC,SAAQ,sBAAsB;IAMxE,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,IAAI,EAAE,eAAe;IAC/B,SAAS,CAAC,cAAc,EAAE,UAAU,GAAG,QAAQ;IAC/C,SAAS,CAAC,aAAa,CAAC;IAR5B,SAAS,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAC7C,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACvC,SAAS,CAAC,SAAS,uBAA8B;gBAGnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,eAAe,EACrB,cAAc,GAAE,UAAU,GAAG,QAAqB,EAClD,aAAa,CAAC,kCAAsB;IAYlD,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,eAAe,GAAG,SAAS;IAKzF,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IA2BnE,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAK9F,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK;IAO9G,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAKzF,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;IAKnD,OAAO,IAAI,IAAI;CAI3B"}
|
|
@@ -22,13 +22,20 @@ const css_feedback_1 = require("../../base/feedback/css-feedback");
|
|
|
22
22
|
const viewpoint_util_1 = require("../../utils/viewpoint-util");
|
|
23
23
|
const change_bounds_tool_feedback_1 = require("../tools/change-bounds/change-bounds-tool-feedback");
|
|
24
24
|
class MouseTrackingElementPositionListener extends drag_aware_mouse_listener_1.DragAwareMouseListener {
|
|
25
|
-
constructor(elementId, tool, cursorPosition = 'top-left') {
|
|
25
|
+
constructor(elementId, tool, cursorPosition = 'top-left', editorContext) {
|
|
26
26
|
super();
|
|
27
27
|
this.elementId = elementId;
|
|
28
28
|
this.tool = tool;
|
|
29
29
|
this.cursorPosition = cursorPosition;
|
|
30
|
+
this.editorContext = editorContext;
|
|
31
|
+
this.toDispose = new sprotty_1.DisposableCollection();
|
|
30
32
|
this.tracker = this.tool.changeBoundsManager.createTracker();
|
|
31
33
|
this.moveGhostFeedback = this.tool.createFeedbackEmitter();
|
|
34
|
+
this.toDispose.push(this.moveGhostFeedback);
|
|
35
|
+
const modelRootChangedListener = editorContext === null || editorContext === void 0 ? void 0 : editorContext.onModelRootChanged(newRoot => this.modelRootChanged(newRoot));
|
|
36
|
+
if (modelRootChangedListener) {
|
|
37
|
+
this.toDispose.push(modelRootChangedListener);
|
|
38
|
+
}
|
|
32
39
|
}
|
|
33
40
|
getTrackedElement(target, event) {
|
|
34
41
|
const element = target.root.index.getById(this.elementId);
|
|
@@ -71,8 +78,12 @@ class MouseTrackingElementPositionListener extends drag_aware_mouse_listener_1.D
|
|
|
71
78
|
this.moveGhostFeedback.add(css_feedback_1.ModifyCSSFeedbackAction.create({ elements: [this.elementId], remove: [css_feedback_1.CSS_HIDDEN] }));
|
|
72
79
|
this.tool.changeBoundsManager.addMoveFeedback(this.moveGhostFeedback, move, ctx, event);
|
|
73
80
|
}
|
|
81
|
+
modelRootChanged(root) {
|
|
82
|
+
// stop the tracking once we receive a new model root and ensure proper alignment with next next mouse move
|
|
83
|
+
this.tracker.stopTracking();
|
|
84
|
+
}
|
|
74
85
|
dispose() {
|
|
75
|
-
this.
|
|
86
|
+
this.toDispose.dispose();
|
|
76
87
|
super.dispose();
|
|
77
88
|
}
|
|
78
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mouse-tracking-element-position-listener.js","sourceRoot":"","sources":["../../../src/features/element-template/mouse-tracking-element-position-listener.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,
|
|
1
|
+
{"version":3,"file":"mouse-tracking-element-position-listener.js","sourceRoot":"","sources":["../../../src/features/element-template/mouse-tracking-element-position-listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Action, AnchorComputerRegistry, GModelElement, TriggerEdgeCreationAction } from '@eclipse-glsp/sprotty';
|
|
16
|
+
import { Action, AnchorComputerRegistry, Args, GModelElement, TriggerEdgeCreationAction } from '@eclipse-glsp/sprotty';
|
|
17
17
|
import { GLSPActionDispatcher } from '../../../base/action-dispatcher';
|
|
18
18
|
import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
|
|
19
19
|
import { FeedbackEmitter } from '../../../base/feedback/feedback-emitter';
|
|
@@ -51,7 +51,18 @@ export declare class EdgeCreationToolMouseListener extends DragAwareMouseListene
|
|
|
51
51
|
protected cursorFeedback: FeedbackEmitter;
|
|
52
52
|
protected feedbackEdgeFeedback: FeedbackEmitter;
|
|
53
53
|
constructor(triggerAction: TriggerEdgeCreationAction, actionDispatcher: GLSPActionDispatcher, typeHintProvider: ITypeHintProvider, tool: EdgeCreationTool, dragSensitivity?: number | undefined);
|
|
54
|
-
nonDraggingMouseUp(
|
|
54
|
+
nonDraggingMouseUp(element: GModelElement, event: MouseEvent): Action[];
|
|
55
|
+
/**
|
|
56
|
+
* Determines wether the tool should run in continuous mode (also called stamp mode) or not.
|
|
57
|
+
* If continuous mode is enabled, the tool will stay after a successful creation.
|
|
58
|
+
* The user can then create more elements of the same type without having to re-trigger the tool.
|
|
59
|
+
* By default, continuous mode is enabled if the user holds the CTRL key.
|
|
60
|
+
* @param element the current model element
|
|
61
|
+
* @param event
|
|
62
|
+
*/
|
|
63
|
+
protected isContinuousMode(element: GModelElement, event: MouseEvent): boolean;
|
|
64
|
+
protected getCreateOperation(element: GModelElement, event: MouseEvent, sourceElementId: string, targetElementId: string): Action;
|
|
65
|
+
protected getCreateEdgeOperationArgs(ctx: GModelElement, event: MouseEvent): Args | undefined;
|
|
55
66
|
protected isSourceSelected(): boolean;
|
|
56
67
|
protected isTargetSelected(): boolean;
|
|
57
68
|
mouseOver(target: GModelElement, event: MouseEvent): Action[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-creation-tool.d.ts","sourceRoot":"","sources":["../../../../src/features/tools/edge-creation/edge-creation-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EACH,MAAM,EACN,sBAAsB,
|
|
1
|
+
{"version":3,"file":"edge-creation-tool.d.ts","sourceRoot":"","sources":["../../../../src/features/tools/edge-creation/edge-creation-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,7 +99,7 @@ class EdgeCreationToolMouseListener extends drag_aware_mouse_listener_1.DragAwar
|
|
|
99
99
|
this.cursorFeedback = tool.createFeedbackEmitter();
|
|
100
100
|
this.feedbackEdgeFeedback = tool.createFeedbackEmitter();
|
|
101
101
|
}
|
|
102
|
-
nonDraggingMouseUp(
|
|
102
|
+
nonDraggingMouseUp(element, event) {
|
|
103
103
|
const result = [];
|
|
104
104
|
if (event.button === 0) {
|
|
105
105
|
if (!this.isSourceSelected()) {
|
|
@@ -114,13 +114,8 @@ class EdgeCreationToolMouseListener extends drag_aware_mouse_listener_1.DragAwar
|
|
|
114
114
|
this.target = this.currentTarget.id;
|
|
115
115
|
}
|
|
116
116
|
if (this.source && this.target) {
|
|
117
|
-
result.push(
|
|
118
|
-
|
|
119
|
-
sourceElementId: this.source,
|
|
120
|
-
targetElementId: this.target,
|
|
121
|
-
args: this.triggerAction.args
|
|
122
|
-
}));
|
|
123
|
-
if (!(0, sprotty_1.isCtrlOrCmd)(event)) {
|
|
117
|
+
result.push(this.getCreateOperation(element, event, this.source, this.target));
|
|
118
|
+
if (!this.isContinuousMode(element, event)) {
|
|
124
119
|
result.push(tool_1.EnableDefaultToolsAction.create());
|
|
125
120
|
}
|
|
126
121
|
else {
|
|
@@ -134,6 +129,28 @@ class EdgeCreationToolMouseListener extends drag_aware_mouse_listener_1.DragAwar
|
|
|
134
129
|
}
|
|
135
130
|
return result;
|
|
136
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Determines wether the tool should run in continuous mode (also called stamp mode) or not.
|
|
134
|
+
* If continuous mode is enabled, the tool will stay after a successful creation.
|
|
135
|
+
* The user can then create more elements of the same type without having to re-trigger the tool.
|
|
136
|
+
* By default, continuous mode is enabled if the user holds the CTRL key.
|
|
137
|
+
* @param element the current model element
|
|
138
|
+
* @param event
|
|
139
|
+
*/
|
|
140
|
+
isContinuousMode(element, event) {
|
|
141
|
+
return (0, sprotty_1.isCtrlOrCmd)(event);
|
|
142
|
+
}
|
|
143
|
+
getCreateOperation(element, event, sourceElementId, targetElementId) {
|
|
144
|
+
return sprotty_1.CreateEdgeOperation.create({
|
|
145
|
+
elementTypeId: this.triggerAction.elementTypeId,
|
|
146
|
+
sourceElementId,
|
|
147
|
+
targetElementId,
|
|
148
|
+
args: this.getCreateEdgeOperationArgs(element, event)
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
getCreateEdgeOperationArgs(ctx, event) {
|
|
152
|
+
return Object.assign({}, this.triggerAction.args);
|
|
153
|
+
}
|
|
137
154
|
isSourceSelected() {
|
|
138
155
|
return this.source !== undefined;
|
|
139
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-creation-tool.js","sourceRoot":"","sources":["../../../../src/features/tools/edge-creation/edge-creation-tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,
|
|
1
|
+
{"version":3,"file":"edge-creation-tool.js","sourceRoot":"","sources":["../../../../src/features/tools/edge-creation/edge-creation-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { Action, Args, Disposable, GModelElement, GhostElement, IModelFactory, TriggerNodeCreationAction } from '@eclipse-glsp/sprotty';
|
|
17
17
|
import '../../../../css/ghost-element.css';
|
|
18
18
|
import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
|
|
19
|
+
import { EditorContextService } from '../../../base/editor-context-service';
|
|
19
20
|
import { FeedbackEmitter } from '../../../base/feedback/feedback-emitter';
|
|
20
21
|
import { MoveableElement } from '../../../utils/gmodel-util';
|
|
21
22
|
import { MouseTrackingElementPositionListener, PositioningTool } from '../../element-template/mouse-tracking-element-position-listener';
|
|
@@ -36,10 +37,13 @@ export declare class NodeCreationTool extends BaseCreationTool<TriggerNodeCreati
|
|
|
36
37
|
protected createNodeCreationListener(ghostElement: GhostElement): Disposable;
|
|
37
38
|
protected createNodeCreationCursorFeedback(): FeedbackEmitter;
|
|
38
39
|
}
|
|
40
|
+
export interface ContainerPositioningTool extends PositioningTool {
|
|
41
|
+
readonly containerManager: ContainerManager;
|
|
42
|
+
}
|
|
39
43
|
export declare class NodeInsertTrackingListener extends MouseTrackingElementPositionListener {
|
|
40
44
|
protected elementTypeId: string;
|
|
41
|
-
protected tool:
|
|
42
|
-
constructor(elementId: string, elementTypeId: string, tool:
|
|
45
|
+
protected tool: ContainerPositioningTool;
|
|
46
|
+
constructor(elementId: string, elementTypeId: string, tool: ContainerPositioningTool, cursorPosition?: 'top-left' | 'middle', editorContext?: EditorContextService);
|
|
43
47
|
protected addMoveFeedback(move: TrackedMove, ctx: GModelElement, event: MouseEvent): void;
|
|
44
48
|
}
|
|
45
49
|
export declare class NodeCreationToolMouseListener extends DragAwareMouseListener {
|
|
@@ -52,6 +56,16 @@ export declare class NodeCreationToolMouseListener extends DragAwareMouseListene
|
|
|
52
56
|
constructor(triggerAction: TriggerNodeCreationAction, tool: NodeCreationTool, ghostElement: GhostElement);
|
|
53
57
|
get elementTypeId(): string;
|
|
54
58
|
nonDraggingMouseUp(ctx: GModelElement, event: MouseEvent): Action[];
|
|
59
|
+
/**
|
|
60
|
+
* Determines wether the tool should run in continuous mode (also called stamp mode) or not.
|
|
61
|
+
* If continuous mode is enabled, the tool will stay after a successful creation.
|
|
62
|
+
* The user can then create more elements of the same type without having to re-trigger the tool.
|
|
63
|
+
* By default, continuous mode is enabled if the user holds the CTRL key.
|
|
64
|
+
* @param ctx the current model context
|
|
65
|
+
* @param event
|
|
66
|
+
*/
|
|
67
|
+
protected isContinuousMode(ctx: GModelElement, event: MouseEvent): boolean;
|
|
68
|
+
protected getCreateOperation(ctx: GModelElement, event: MouseEvent, insert: TrackedInsert): Action;
|
|
55
69
|
protected getCreateNodeOperationArgs(insert: TrackedInsert, ctx: GModelElement, event: MouseEvent): Args | undefined;
|
|
56
70
|
protected createGhostElement(ghostElement: GhostElement): string;
|
|
57
71
|
protected getGhostElement(ctx: GModelElement, event: MouseEvent): MoveableElement | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-creation-tool.d.ts","sourceRoot":"","sources":["../../../../src/features/tools/node-creation/node-creation-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EACH,MAAM,EACN,IAAI,EAIJ,UAAU,EAEV,aAAa,EACb,YAAY,EACZ,aAAa,EAGb,yBAAyB,EAI5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,mCAAmC,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"node-creation-tool.d.ts","sourceRoot":"","sources":["../../../../src/features/tools/node-creation/node-creation-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ let NodeCreationTool = NodeCreationTool_1 = class NodeCreationTool extends base_
|
|
|
58
58
|
return new insert_indicator_1.InsertIndicator();
|
|
59
59
|
}
|
|
60
60
|
createGhostElementTracker(ghostElement, position) {
|
|
61
|
-
const trackingListener = new NodeInsertTrackingListener((0, add_template_element_1.getTemplateElementId)(ghostElement.template), this.triggerAction.elementTypeId, this, position);
|
|
61
|
+
const trackingListener = new NodeInsertTrackingListener((0, add_template_element_1.getTemplateElementId)(ghostElement.template), this.triggerAction.elementTypeId, this, position, this.editorContext);
|
|
62
62
|
return new sprotty_1.DisposableCollection(trackingListener, this.mouseTool.registerListener(trackingListener));
|
|
63
63
|
}
|
|
64
64
|
createNodeCreationListener(ghostElement) {
|
|
@@ -87,8 +87,8 @@ exports.NodeCreationTool = NodeCreationTool = NodeCreationTool_1 = __decorate([
|
|
|
87
87
|
(0, inversify_1.injectable)()
|
|
88
88
|
], NodeCreationTool);
|
|
89
89
|
class NodeInsertTrackingListener extends mouse_tracking_element_position_listener_1.MouseTrackingElementPositionListener {
|
|
90
|
-
constructor(elementId, elementTypeId, tool, cursorPosition = 'top-left') {
|
|
91
|
-
super(elementId, tool, cursorPosition);
|
|
90
|
+
constructor(elementId, elementTypeId, tool, cursorPosition = 'top-left', editorContext) {
|
|
91
|
+
super(elementId, tool, cursorPosition, editorContext);
|
|
92
92
|
this.elementTypeId = elementTypeId;
|
|
93
93
|
this.tool = tool;
|
|
94
94
|
}
|
|
@@ -116,17 +116,12 @@ class NodeCreationToolMouseListener extends drag_aware_mouse_listener_1.DragAwar
|
|
|
116
116
|
return this.triggerAction.elementTypeId;
|
|
117
117
|
}
|
|
118
118
|
nonDraggingMouseUp(ctx, event) {
|
|
119
|
-
var _a;
|
|
120
119
|
const result = [];
|
|
121
120
|
const insert = this.getTrackedInsert(ctx, event);
|
|
122
121
|
if (insert.valid) {
|
|
123
|
-
result.push(
|
|
124
|
-
location: insert.location,
|
|
125
|
-
containerId: (_a = insert.container) === null || _a === void 0 ? void 0 : _a.id,
|
|
126
|
-
args: this.getCreateNodeOperationArgs(insert, ctx, event)
|
|
127
|
-
}));
|
|
122
|
+
result.push(this.getCreateOperation(ctx, event, insert));
|
|
128
123
|
}
|
|
129
|
-
if ((
|
|
124
|
+
if (this.isContinuousMode(ctx, event)) {
|
|
130
125
|
// we continue in stamp mode so we keep the ghost but dispose everything else
|
|
131
126
|
this.disposeAllButGhostElement();
|
|
132
127
|
return result;
|
|
@@ -141,6 +136,25 @@ class NodeCreationToolMouseListener extends drag_aware_mouse_listener_1.DragAwar
|
|
|
141
136
|
result.push(tool_1.EnableDefaultToolsAction.create());
|
|
142
137
|
return result;
|
|
143
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Determines wether the tool should run in continuous mode (also called stamp mode) or not.
|
|
141
|
+
* If continuous mode is enabled, the tool will stay after a successful creation.
|
|
142
|
+
* The user can then create more elements of the same type without having to re-trigger the tool.
|
|
143
|
+
* By default, continuous mode is enabled if the user holds the CTRL key.
|
|
144
|
+
* @param ctx the current model context
|
|
145
|
+
* @param event
|
|
146
|
+
*/
|
|
147
|
+
isContinuousMode(ctx, event) {
|
|
148
|
+
return (0, sprotty_1.isCtrlOrCmd)(event);
|
|
149
|
+
}
|
|
150
|
+
getCreateOperation(ctx, event, insert) {
|
|
151
|
+
var _a;
|
|
152
|
+
return sprotty_1.CreateNodeOperation.create(this.elementTypeId, {
|
|
153
|
+
location: insert.location,
|
|
154
|
+
containerId: (_a = insert.container) === null || _a === void 0 ? void 0 : _a.id,
|
|
155
|
+
args: this.getCreateNodeOperationArgs(insert, ctx, event)
|
|
156
|
+
});
|
|
157
|
+
}
|
|
144
158
|
getCreateNodeOperationArgs(insert, ctx, event) {
|
|
145
159
|
let args = Object.assign({}, this.triggerAction.args);
|
|
146
160
|
const ghostElement = this.getGhostElement(ctx, event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-creation-tool.js","sourceRoot":"","sources":["../../../../src/features/tools/node-creation/node-creation-tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,mDAiB+B;AAC/B,yCAA+C;AAC/C,6CAA2C;AAC3C,uFAAiF;
|
|
1
|
+
{"version":3,"file":"node-creation-tool.js","sourceRoot":"","sources":["../../../../src/features/tools/node-creation/node-creation-tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/client",
|
|
3
|
-
"version": "2.2.0-next.
|
|
3
|
+
"version": "2.2.0-next.360+0c1c838",
|
|
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.
|
|
49
|
+
"@eclipse-glsp/sprotty": "2.2.0-next.360+0c1c838",
|
|
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": "
|
|
66
|
+
"gitHead": "0c1c838eb8a0ffb9a647a7f617bdf9602086d0af"
|
|
67
67
|
}
|
|
@@ -14,8 +14,19 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
Action,
|
|
19
|
+
Dimension,
|
|
20
|
+
DisposableCollection,
|
|
21
|
+
GModelElement,
|
|
22
|
+
GModelRoot,
|
|
23
|
+
MoveAction,
|
|
24
|
+
Point,
|
|
25
|
+
isBoundsAware,
|
|
26
|
+
isMoveable
|
|
27
|
+
} from '@eclipse-glsp/sprotty';
|
|
18
28
|
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
29
|
+
import { EditorContextService } from '../../base/editor-context-service';
|
|
19
30
|
import { CSS_HIDDEN, ModifyCSSFeedbackAction } from '../../base/feedback/css-feedback';
|
|
20
31
|
import { FeedbackEmitter } from '../../base/feedback/feedback-emitter';
|
|
21
32
|
import { MoveableElement } from '../../utils/gmodel-util';
|
|
@@ -32,15 +43,22 @@ export interface PositioningTool extends FeedbackAwareTool {
|
|
|
32
43
|
export class MouseTrackingElementPositionListener extends DragAwareMouseListener {
|
|
33
44
|
protected moveGhostFeedback: FeedbackEmitter;
|
|
34
45
|
protected tracker: ChangeBoundsTracker;
|
|
46
|
+
protected toDispose = new DisposableCollection();
|
|
35
47
|
|
|
36
48
|
constructor(
|
|
37
49
|
protected elementId: string,
|
|
38
50
|
protected tool: PositioningTool,
|
|
39
|
-
protected cursorPosition: 'top-left' | 'middle' = 'top-left'
|
|
51
|
+
protected cursorPosition: 'top-left' | 'middle' = 'top-left',
|
|
52
|
+
protected editorContext?: EditorContextService
|
|
40
53
|
) {
|
|
41
54
|
super();
|
|
42
55
|
this.tracker = this.tool.changeBoundsManager.createTracker();
|
|
43
56
|
this.moveGhostFeedback = this.tool.createFeedbackEmitter();
|
|
57
|
+
this.toDispose.push(this.moveGhostFeedback);
|
|
58
|
+
const modelRootChangedListener = editorContext?.onModelRootChanged(newRoot => this.modelRootChanged(newRoot));
|
|
59
|
+
if (modelRootChangedListener) {
|
|
60
|
+
this.toDispose.push(modelRootChangedListener);
|
|
61
|
+
}
|
|
44
62
|
}
|
|
45
63
|
|
|
46
64
|
protected getTrackedElement(target: GModelElement, event: MouseEvent): MoveableElement | undefined {
|
|
@@ -92,8 +110,13 @@ export class MouseTrackingElementPositionListener extends DragAwareMouseListener
|
|
|
92
110
|
this.tool.changeBoundsManager.addMoveFeedback(this.moveGhostFeedback, move, ctx, event);
|
|
93
111
|
}
|
|
94
112
|
|
|
113
|
+
protected modelRootChanged(root: Readonly<GModelRoot>): void {
|
|
114
|
+
// stop the tracking once we receive a new model root and ensure proper alignment with next next mouse move
|
|
115
|
+
this.tracker.stopTracking();
|
|
116
|
+
}
|
|
117
|
+
|
|
95
118
|
override dispose(): void {
|
|
96
|
-
this.
|
|
119
|
+
this.toDispose.dispose();
|
|
97
120
|
super.dispose();
|
|
98
121
|
}
|
|
99
122
|
}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import {
|
|
17
17
|
Action,
|
|
18
18
|
AnchorComputerRegistry,
|
|
19
|
+
Args,
|
|
19
20
|
CreateEdgeOperation,
|
|
20
21
|
GModelElement,
|
|
21
22
|
RequestCheckEdgeAction,
|
|
@@ -109,7 +110,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
109
110
|
this.feedbackEdgeFeedback = tool.createFeedbackEmitter();
|
|
110
111
|
}
|
|
111
112
|
|
|
112
|
-
override nonDraggingMouseUp(
|
|
113
|
+
override nonDraggingMouseUp(element: GModelElement, event: MouseEvent): Action[] {
|
|
113
114
|
const result: Action[] = [];
|
|
114
115
|
if (event.button === 0) {
|
|
115
116
|
if (!this.isSourceSelected()) {
|
|
@@ -126,15 +127,8 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
126
127
|
this.target = this.currentTarget.id;
|
|
127
128
|
}
|
|
128
129
|
if (this.source && this.target) {
|
|
129
|
-
result.push(
|
|
130
|
-
|
|
131
|
-
elementTypeId: this.triggerAction.elementTypeId,
|
|
132
|
-
sourceElementId: this.source,
|
|
133
|
-
targetElementId: this.target,
|
|
134
|
-
args: this.triggerAction.args
|
|
135
|
-
})
|
|
136
|
-
);
|
|
137
|
-
if (!isCtrlOrCmd(event)) {
|
|
130
|
+
result.push(this.getCreateOperation(element, event, this.source, this.target));
|
|
131
|
+
if (!this.isContinuousMode(element, event)) {
|
|
138
132
|
result.push(EnableDefaultToolsAction.create());
|
|
139
133
|
} else {
|
|
140
134
|
this.dispose();
|
|
@@ -147,6 +141,31 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
147
141
|
return result;
|
|
148
142
|
}
|
|
149
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Determines wether the tool should run in continuous mode (also called stamp mode) or not.
|
|
146
|
+
* If continuous mode is enabled, the tool will stay after a successful creation.
|
|
147
|
+
* The user can then create more elements of the same type without having to re-trigger the tool.
|
|
148
|
+
* By default, continuous mode is enabled if the user holds the CTRL key.
|
|
149
|
+
* @param element the current model element
|
|
150
|
+
* @param event
|
|
151
|
+
*/
|
|
152
|
+
protected isContinuousMode(element: GModelElement, event: MouseEvent): boolean {
|
|
153
|
+
return isCtrlOrCmd(event);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
protected getCreateOperation(element: GModelElement, event: MouseEvent, sourceElementId: string, targetElementId: string): Action {
|
|
157
|
+
return CreateEdgeOperation.create({
|
|
158
|
+
elementTypeId: this.triggerAction.elementTypeId,
|
|
159
|
+
sourceElementId,
|
|
160
|
+
targetElementId,
|
|
161
|
+
args: this.getCreateEdgeOperationArgs(element, event)
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
protected getCreateEdgeOperationArgs(ctx: GModelElement, event: MouseEvent): Args | undefined {
|
|
166
|
+
return { ...this.triggerAction.args };
|
|
167
|
+
}
|
|
168
|
+
|
|
150
169
|
protected isSourceSelected(): boolean {
|
|
151
170
|
return this.source !== undefined;
|
|
152
171
|
}
|
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
import { inject, injectable } from 'inversify';
|
|
35
35
|
import '../../../../css/ghost-element.css';
|
|
36
36
|
import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
|
|
37
|
+
import { EditorContextService } from '../../../base/editor-context-service';
|
|
37
38
|
import { CSS_GHOST_ELEMENT, CSS_HIDDEN, CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
|
|
38
39
|
import { FeedbackEmitter } from '../../../base/feedback/feedback-emitter';
|
|
39
40
|
import { EnableDefaultToolsAction } from '../../../base/tool-manager/tool';
|
|
@@ -77,7 +78,8 @@ export class NodeCreationTool extends BaseCreationTool<TriggerNodeCreationAction
|
|
|
77
78
|
getTemplateElementId(ghostElement.template),
|
|
78
79
|
this.triggerAction.elementTypeId,
|
|
79
80
|
this,
|
|
80
|
-
position
|
|
81
|
+
position,
|
|
82
|
+
this.editorContext
|
|
81
83
|
);
|
|
82
84
|
return new DisposableCollection(trackingListener, this.mouseTool.registerListener(trackingListener));
|
|
83
85
|
}
|
|
@@ -92,19 +94,23 @@ export class NodeCreationTool extends BaseCreationTool<TriggerNodeCreationAction
|
|
|
92
94
|
}
|
|
93
95
|
}
|
|
94
96
|
|
|
97
|
+
export interface ContainerPositioningTool extends PositioningTool {
|
|
98
|
+
readonly containerManager: ContainerManager;
|
|
99
|
+
}
|
|
100
|
+
|
|
95
101
|
export class NodeInsertTrackingListener extends MouseTrackingElementPositionListener {
|
|
96
102
|
constructor(
|
|
97
103
|
elementId: string,
|
|
98
104
|
protected elementTypeId: string,
|
|
99
|
-
protected override tool:
|
|
100
|
-
cursorPosition: 'top-left' | 'middle' = 'top-left'
|
|
105
|
+
protected override tool: ContainerPositioningTool,
|
|
106
|
+
cursorPosition: 'top-left' | 'middle' = 'top-left',
|
|
107
|
+
editorContext?: EditorContextService
|
|
101
108
|
) {
|
|
102
|
-
super(elementId, tool, cursorPosition);
|
|
109
|
+
super(elementId, tool, cursorPosition, editorContext);
|
|
103
110
|
}
|
|
104
111
|
|
|
105
112
|
protected override addMoveFeedback(move: TrackedMove, ctx: GModelElement, event: MouseEvent): void {
|
|
106
113
|
super.addMoveFeedback(move, ctx, event);
|
|
107
|
-
|
|
108
114
|
const element = move.elementMoves[0].element;
|
|
109
115
|
const location = move.elementMoves[0].toPosition;
|
|
110
116
|
const insert = this.tool.containerManager.insert(element, location, this.elementTypeId, { evt: event });
|
|
@@ -138,15 +144,9 @@ export class NodeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
138
144
|
|
|
139
145
|
const insert = this.getTrackedInsert(ctx, event);
|
|
140
146
|
if (insert.valid) {
|
|
141
|
-
result.push(
|
|
142
|
-
CreateNodeOperation.create(this.elementTypeId, {
|
|
143
|
-
location: insert.location,
|
|
144
|
-
containerId: insert.container?.id,
|
|
145
|
-
args: this.getCreateNodeOperationArgs(insert, ctx, event)
|
|
146
|
-
})
|
|
147
|
-
);
|
|
147
|
+
result.push(this.getCreateOperation(ctx, event, insert));
|
|
148
148
|
}
|
|
149
|
-
if (
|
|
149
|
+
if (this.isContinuousMode(ctx, event)) {
|
|
150
150
|
// we continue in stamp mode so we keep the ghost but dispose everything else
|
|
151
151
|
this.disposeAllButGhostElement();
|
|
152
152
|
return result;
|
|
@@ -162,6 +162,26 @@ export class NodeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
162
162
|
return result;
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Determines wether the tool should run in continuous mode (also called stamp mode) or not.
|
|
167
|
+
* If continuous mode is enabled, the tool will stay after a successful creation.
|
|
168
|
+
* The user can then create more elements of the same type without having to re-trigger the tool.
|
|
169
|
+
* By default, continuous mode is enabled if the user holds the CTRL key.
|
|
170
|
+
* @param ctx the current model context
|
|
171
|
+
* @param event
|
|
172
|
+
*/
|
|
173
|
+
protected isContinuousMode(ctx: GModelElement, event: MouseEvent): boolean {
|
|
174
|
+
return isCtrlOrCmd(event);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
protected getCreateOperation(ctx: GModelElement, event: MouseEvent, insert: TrackedInsert): Action {
|
|
178
|
+
return CreateNodeOperation.create(this.elementTypeId, {
|
|
179
|
+
location: insert.location,
|
|
180
|
+
containerId: insert.container?.id,
|
|
181
|
+
args: this.getCreateNodeOperationArgs(insert, ctx, event)
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
165
185
|
protected getCreateNodeOperationArgs(insert: TrackedInsert, ctx: GModelElement, event: MouseEvent): Args | undefined {
|
|
166
186
|
let args = { ...this.triggerAction.args };
|
|
167
187
|
const ghostElement = this.getGhostElement(ctx, event);
|