@eclipse-glsp/client 0.9.0 → 0.10.0-next.06ee84f.156
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/base/action-dispatcher.d.ts +2 -2
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +9 -7
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +30 -4
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/views/compartments.js +1 -1
- package/lib/views/compartments.js.map +1 -1
- package/package.json +3 -3
- package/src/base/action-dispatcher.ts +9 -8
- package/src/features/tool-feedback/creation-tool-feedback.ts +33 -5
- package/src/views/compartments.tsx +1 -1
|
@@ -19,8 +19,8 @@ import { ActionDispatcher } from 'sprotty';
|
|
|
19
19
|
import { ModelInitializationConstraint } from './model-initialization-constraint';
|
|
20
20
|
export declare class GLSPActionDispatcher extends ActionDispatcher {
|
|
21
21
|
protected readonly timeouts: Map<string, NodeJS.Timeout>;
|
|
22
|
-
protected
|
|
23
|
-
protected
|
|
22
|
+
protected initializedConstraint: boolean;
|
|
23
|
+
protected initializationConstraint: ModelInitializationConstraint;
|
|
24
24
|
initialize(): Promise<void>;
|
|
25
25
|
startModelInitialization(): void;
|
|
26
26
|
onceModelInitialized(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../../src/base/action-dispatcher.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAoB,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF,qBAAa,oBAAqB,SAAQ,gBAAgB;IACtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAa;
|
|
1
|
+
{"version":3,"file":"action-dispatcher.d.ts","sourceRoot":"","sources":["../../src/base/action-dispatcher.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAoB,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF,qBAAa,oBAAqB,SAAQ,gBAAgB;IACtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAa;IACrE,SAAS,CAAC,qBAAqB,UAAS;IACD,SAAS,CAAC,wBAAwB,EAAE,6BAA6B,CAAC;IAEzG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,wBAAwB,IAAI,IAAI;IAQhC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrD;;;;;;;;;OASG;IACH,YAAY,CAAC,GAAG,SAAS,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,SAAS,SAAO,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA0BhI"}
|
|
@@ -33,22 +33,24 @@ class GLSPActionDispatcher extends sprotty_1.ActionDispatcher {
|
|
|
33
33
|
constructor() {
|
|
34
34
|
super(...arguments);
|
|
35
35
|
this.timeouts = new Map();
|
|
36
|
-
this.
|
|
36
|
+
this.initializedConstraint = false;
|
|
37
37
|
}
|
|
38
38
|
initialize() {
|
|
39
39
|
return super.initialize().then(() => this.startModelInitialization());
|
|
40
40
|
}
|
|
41
41
|
startModelInitialization() {
|
|
42
|
-
this.
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
if (!this.initializedConstraint) {
|
|
43
|
+
this.logger.log(this, 'Starting model initialization mode');
|
|
44
|
+
this.initializationConstraint.onInitialized().then(() => this.logger.log(this, 'Model initialization completed'));
|
|
45
|
+
this.initializedConstraint = true;
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
48
|
onceModelInitialized() {
|
|
47
|
-
return this.
|
|
49
|
+
return this.initializationConstraint.onInitialized();
|
|
48
50
|
}
|
|
49
51
|
dispatch(action) {
|
|
50
52
|
const result = super.dispatch(action);
|
|
51
|
-
this.
|
|
53
|
+
this.initializationConstraint.notifyDispatched(action);
|
|
52
54
|
return result;
|
|
53
55
|
}
|
|
54
56
|
handleAction(action) {
|
|
@@ -106,6 +108,6 @@ class GLSPActionDispatcher extends sprotty_1.ActionDispatcher {
|
|
|
106
108
|
__decorate([
|
|
107
109
|
inversify_1.inject(model_initialization_constraint_1.ModelInitializationConstraint),
|
|
108
110
|
__metadata("design:type", model_initialization_constraint_1.ModelInitializationConstraint)
|
|
109
|
-
], GLSPActionDispatcher.prototype, "
|
|
111
|
+
], GLSPActionDispatcher.prototype, "initializationConstraint", void 0);
|
|
110
112
|
exports.GLSPActionDispatcher = GLSPActionDispatcher;
|
|
111
113
|
//# sourceMappingURL=action-dispatcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../../src/base/action-dispatcher.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAAiG;AACjG,yCAAmC;AACnC,qCAA2C;AAC3C,uFAAkF;AAElF,MAAa,oBAAqB,SAAQ,0BAAgB;IAA1D;;QACuB,aAAQ,GAAgC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"action-dispatcher.js","sourceRoot":"","sources":["../../src/base/action-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ export declare class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
49
49
|
protected anchorRegistry: AnchorComputerRegistry;
|
|
50
50
|
constructor(anchorRegistry: AnchorComputerRegistry);
|
|
51
51
|
mouseMove(target: SModelElement, event: MouseEvent): Action[];
|
|
52
|
-
protected computeAbsoluteAnchor(element: SConnectableElement,
|
|
52
|
+
protected computeAbsoluteAnchor(element: SConnectableElement, absoluteReferencePoint: Point, offset?: number): Point;
|
|
53
53
|
}
|
|
54
54
|
export declare function feedbackEdgeId(root: SModelRoot): string;
|
|
55
55
|
export declare function feedbackEdgeEndId(root: SModelRoot): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creation-tool-feedback.d.ts","sourceRoot":"","sources":["../../../src/features/tool-feedback/creation-tool-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAEH,sBAAsB,EAEtB,uBAAuB,EACvB,aAAa,EAMb,aAAa,EAIb,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,gBAAgB,EAEnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,sBAAuB,YAAW,MAAM;aAE7B,aAAa,EAAE,MAAM;aACrB,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC;aACX,IAAI,EAAE,MAAM;gBAHZ,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,yBAAa,EACxB,IAAI,GAAE,MAAqC;CAElE;AAED,qBACa,uBAAwB,SAAQ,eAAe;IAGtB,SAAS,CAAC,MAAM,EAAE,sBAAsB;IAF1E,MAAM,CAAC,QAAQ,CAAC,IAAI,sBAAsB;gBAEE,MAAM,EAAE,sBAAsB;IAI1E,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAK3D;AAED,qBAAa,wBAAyB,YAAW,MAAM;aACvB,IAAI,EAAE,MAAM;gBAAZ,IAAI,GAAE,MAAuC;CAC5E;AAED,qBACa,yBAA0B,SAAQ,eAAe;IAC1D,MAAM,CAAC,QAAQ,CAAC,IAAI,+BAA+B;IAEnD,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAI3D;AAED,qBAAa,eAAgB,SAAQ,eAAe;IAG5C,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM;IACvB,YAAY,EAAE,gBAAgB,GAAG,SAAS;aACjC,IAAI,EAAE,MAAM;IALhC,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;gBAE9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACvB,YAAY,GAAE,gBAAgB,GAAG,SAAqB,EAC7C,IAAI,GAAE,MAA6B;CAI1D;AAED,qBAAa,kCAAmC,SAAQ,aAAa;IACrD,SAAS,CAAC,cAAc,EAAE,sBAAsB;gBAAtC,cAAc,EAAE,sBAAsB;IAI5D,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAyB7D,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"creation-tool-feedback.d.ts","sourceRoot":"","sources":["../../../src/features/tool-feedback/creation-tool-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAEH,sBAAsB,EAEtB,uBAAuB,EACvB,aAAa,EAMb,aAAa,EAIb,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,gBAAgB,EAEnB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,sBAAuB,YAAW,MAAM;aAE7B,aAAa,EAAE,MAAM;aACrB,QAAQ,EAAE,MAAM;aAChB,UAAU,CAAC;aACX,IAAI,EAAE,MAAM;gBAHZ,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,yBAAa,EACxB,IAAI,GAAE,MAAqC;CAElE;AAED,qBACa,uBAAwB,SAAQ,eAAe;IAGtB,SAAS,CAAC,MAAM,EAAE,sBAAsB;IAF1E,MAAM,CAAC,QAAQ,CAAC,IAAI,sBAAsB;gBAEE,MAAM,EAAE,sBAAsB;IAI1E,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAK3D;AAED,qBAAa,wBAAyB,YAAW,MAAM;aACvB,IAAI,EAAE,MAAM;gBAAZ,IAAI,GAAE,MAAuC;CAC5E;AAED,qBACa,yBAA0B,SAAQ,eAAe;IAC1D,MAAM,CAAC,QAAQ,CAAC,IAAI,+BAA+B;IAEnD,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAI3D;AAED,qBAAa,eAAgB,SAAQ,eAAe;IAG5C,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM;IACvB,YAAY,EAAE,gBAAgB,GAAG,SAAS;aACjC,IAAI,EAAE,MAAM;IALhC,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;gBAE9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACvB,YAAY,GAAE,gBAAgB,GAAG,SAAqB,EAC7C,IAAI,GAAE,MAA6B;CAI1D;AAED,qBAAa,kCAAmC,SAAQ,aAAa;IACrD,SAAS,CAAC,cAAc,EAAE,sBAAsB;gBAAtC,cAAc,EAAE,sBAAsB;IAI5D,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IAyB7D,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK;CAevH;AA6BD,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAEvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAE1D;AAED,eAAO,MAAM,yBAAyB,EAAE,WAGxB,CAAC;AAEjB,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,WAAW,GAChC,IAAI,CA2BN;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CASzD"}
|
|
@@ -86,9 +86,9 @@ class FeedbackEdgeEndMovingMouseListener extends sprotty_1.MouseListener {
|
|
|
86
86
|
}
|
|
87
87
|
const edge = edgeEnd.feedbackEdge;
|
|
88
88
|
const position = viewpoint_util_1.getAbsolutePosition(edgeEnd, event);
|
|
89
|
-
const endAtMousePosition = sprotty_1.findChildrenAtPosition(target.root, position).find(element => sprotty_1.isConnectable(element) && element.canConnect(edge, 'target'));
|
|
89
|
+
const endAtMousePosition = sprotty_1.findChildrenAtPosition(target.root, position).reverse().find(element => sprotty_1.isConnectable(element) && element.canConnect(edge, 'target'));
|
|
90
90
|
if (endAtMousePosition instanceof sprotty_1.SConnectableElement && edge.source && sprotty_1.isBoundsAware(edge.source)) {
|
|
91
|
-
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, sprotty_1.center(edge.source
|
|
91
|
+
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, sprotty_1.center(viewpoint_util_1.toAbsoluteBounds(edge.source)));
|
|
92
92
|
if (sprotty_1.euclideanDistance(anchor, edgeEnd.position) > 1) {
|
|
93
93
|
return [new sprotty_1.MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
|
|
94
94
|
}
|
|
@@ -98,9 +98,10 @@ class FeedbackEdgeEndMovingMouseListener extends sprotty_1.MouseListener {
|
|
|
98
98
|
}
|
|
99
99
|
return [];
|
|
100
100
|
}
|
|
101
|
-
computeAbsoluteAnchor(element,
|
|
101
|
+
computeAbsoluteAnchor(element, absoluteReferencePoint, offset) {
|
|
102
|
+
const referencePointInParent = absoluteToParent(element, absoluteReferencePoint);
|
|
102
103
|
const anchorComputer = this.anchorRegistry.get(sprotty_1.PolylineEdgeRouter.KIND, element.anchorKind);
|
|
103
|
-
let anchor = anchorComputer.getAnchor(element,
|
|
104
|
+
let anchor = anchorComputer.getAnchor(element, referencePointInParent, offset);
|
|
104
105
|
// The anchor is computed in the local coordinate system of the element.
|
|
105
106
|
// If the element is a nested child element we have to add the absolute position of its parent to the anchor.
|
|
106
107
|
if (element.parent !== element.root) {
|
|
@@ -114,6 +115,31 @@ class FeedbackEdgeEndMovingMouseListener extends sprotty_1.MouseListener {
|
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
exports.FeedbackEdgeEndMovingMouseListener = FeedbackEdgeEndMovingMouseListener;
|
|
118
|
+
/**
|
|
119
|
+
* Convert a point, specified in absolute coordinates, to a point relative
|
|
120
|
+
* to the parent of the specified child element.
|
|
121
|
+
* @param element the child element
|
|
122
|
+
* @param absolutePoint a point in absolute coordinates
|
|
123
|
+
* @returns the equivalent point, relative to the element's parent coordinates
|
|
124
|
+
*/
|
|
125
|
+
function absoluteToParent(element, absolutePoint) {
|
|
126
|
+
if (sprotty_1.isBoundsAware(element.parent)) {
|
|
127
|
+
return absoluteToLocal(element.parent, absolutePoint);
|
|
128
|
+
}
|
|
129
|
+
// If the parent is not bounds-aware, assume it's at 0; 0 and proceed
|
|
130
|
+
return absoluteToLocal(element, absolutePoint);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Convert a point, specified in absolute coordinates, to a point relative
|
|
134
|
+
* to the specified element.
|
|
135
|
+
* @param element the element
|
|
136
|
+
* @param absolutePoint a point in absolute coordinates
|
|
137
|
+
* @returns the equivalent point, relative to the element's coordinates
|
|
138
|
+
*/
|
|
139
|
+
function absoluteToLocal(element, absolutePoint) {
|
|
140
|
+
const absoluteElementBounds = viewpoint_util_1.toAbsoluteBounds(element);
|
|
141
|
+
return { x: absolutePoint.x - absoluteElementBounds.x, y: absolutePoint.y - absoluteElementBounds.y };
|
|
142
|
+
}
|
|
117
143
|
function feedbackEdgeId(root) {
|
|
118
144
|
return root.id + '_feedback_edge';
|
|
119
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creation-tool-feedback.js","sourceRoot":"","sources":["../../../src/features/tool-feedback/creation-tool-feedback.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgBA,yCAA+C;AAC/C,qCAsBiB;AACjB,
|
|
1
|
+
{"version":3,"file":"creation-tool-feedback.js","sourceRoot":"","sources":["../../../src/features/tool-feedback/creation-tool-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ let StructureCompartmentView = class StructureCompartmentView extends lib_1.Shap
|
|
|
32
32
|
return undefined;
|
|
33
33
|
}
|
|
34
34
|
return (JSX.createElement("g", null,
|
|
35
|
-
JSX.createElement("rect", { "class-sprotty-comp": true, "class-debug":
|
|
35
|
+
JSX.createElement("rect", { "class-sprotty-comp": true, "class-debug": false, x: '0', y: '0', width: model.size.width, height: model.size.height }),
|
|
36
36
|
context.renderChildren(model)));
|
|
37
37
|
}
|
|
38
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compartments.js","sourceRoot":"","sources":["../../src/views/compartments.tsx"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAAuC;AAEvC,qCAAyG;AAEzG,6DAA6D;AAC7D,MAAM,GAAG,GAAG,EAAE,aAAa,EAAE,SAAG,EAAE,CAAC;AAGnC,IAAa,wBAAwB,GAArC,MAAa,wBAAyB,SAAQ,eAAS;IACnD,MAAM,CAAC,KAA2D,EAAE,OAAyB;QACzF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YACjC,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,CACH;YACI,kDAA0B,IAAI,iBAAe,
|
|
1
|
+
{"version":3,"file":"compartments.js","sourceRoot":"","sources":["../../src/views/compartments.tsx"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAAuC;AAEvC,qCAAyG;AAEzG,6DAA6D;AAC7D,MAAM,GAAG,GAAG,EAAE,aAAa,EAAE,SAAG,EAAE,CAAC;AAGnC,IAAa,wBAAwB,GAArC,MAAa,wBAAyB,SAAQ,eAAS;IACnD,MAAM,CAAC,KAA2D,EAAE,OAAyB;QACzF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YACjC,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,CACH;YACI,kDAA0B,IAAI,iBAAe,KAAK,EAAE,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAS;YAC1H,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAC9B,CACP,CAAC;IACN,CAAC;CACJ,CAAA;AAbY,wBAAwB;IADpC,sBAAU,EAAE;GACA,wBAAwB,CAapC;AAbY,4DAAwB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0-next.06ee84f.156+06ee84f",
|
|
4
4
|
"description": "A sprotty-based client for GLSP",
|
|
5
5
|
"license": "(EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0)",
|
|
6
6
|
"keywords": [
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"css"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@eclipse-glsp/protocol": "0.
|
|
37
|
+
"@eclipse-glsp/protocol": "0.10.0-next.06ee84f.156+06ee84f",
|
|
38
38
|
"autocompleter": "5.1.0",
|
|
39
39
|
"sprotty": "0.10.0"
|
|
40
40
|
},
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
},
|
|
68
68
|
"main": "lib/index",
|
|
69
69
|
"types": "lib/index",
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "06ee84f267881797975e68ef02f95a03891c8235"
|
|
71
71
|
}
|
|
@@ -20,27 +20,28 @@ import { ModelInitializationConstraint } from './model-initialization-constraint
|
|
|
20
20
|
|
|
21
21
|
export class GLSPActionDispatcher extends ActionDispatcher {
|
|
22
22
|
protected readonly timeouts: Map<string, NodeJS.Timeout> = new Map();
|
|
23
|
-
|
|
24
|
-
@inject(ModelInitializationConstraint) protected
|
|
25
|
-
protected onModelInitialized: Promise<void> = Promise.resolve();
|
|
23
|
+
protected initializedConstraint = false;
|
|
24
|
+
@inject(ModelInitializationConstraint) protected initializationConstraint: ModelInitializationConstraint;
|
|
26
25
|
|
|
27
26
|
initialize(): Promise<void> {
|
|
28
27
|
return super.initialize().then(() => this.startModelInitialization());
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
startModelInitialization(): void {
|
|
32
|
-
this.
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
if (!this.initializedConstraint) {
|
|
32
|
+
this.logger.log(this, 'Starting model initialization mode');
|
|
33
|
+
this.initializationConstraint.onInitialized().then(() => this.logger.log(this, 'Model initialization completed'));
|
|
34
|
+
this.initializedConstraint = true;
|
|
35
|
+
}
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
onceModelInitialized(): Promise<void> {
|
|
38
|
-
return this.
|
|
39
|
+
return this.initializationConstraint.onInitialized();
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
dispatch(action: Action): Promise<void> {
|
|
42
43
|
const result = super.dispatch(action);
|
|
43
|
-
this.
|
|
44
|
+
this.initializationConstraint.notifyDispatched(action);
|
|
44
45
|
return result;
|
|
45
46
|
}
|
|
46
47
|
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
SRoutableElement,
|
|
39
39
|
TYPES
|
|
40
40
|
} from 'sprotty';
|
|
41
|
-
import { isRoutable } from '../../utils/smodel-util';
|
|
41
|
+
import { isRoutable, BoundsAwareModelElement } from '../../utils/smodel-util';
|
|
42
42
|
import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
|
|
43
43
|
import { FeedbackCommand } from './model';
|
|
44
44
|
|
|
@@ -106,12 +106,12 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
106
106
|
|
|
107
107
|
const edge = edgeEnd.feedbackEdge;
|
|
108
108
|
const position = getAbsolutePosition(edgeEnd, event);
|
|
109
|
-
const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
|
|
109
|
+
const endAtMousePosition = findChildrenAtPosition(target.root, position).reverse().find(
|
|
110
110
|
element => isConnectable(element) && element.canConnect(edge, 'target')
|
|
111
111
|
);
|
|
112
112
|
|
|
113
113
|
if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
|
|
114
|
-
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source
|
|
114
|
+
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(toAbsoluteBounds(edge.source)));
|
|
115
115
|
if (euclideanDistance(anchor, edgeEnd.position) > 1) {
|
|
116
116
|
return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
|
|
117
117
|
}
|
|
@@ -122,9 +122,10 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
122
122
|
return [];
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
protected computeAbsoluteAnchor(element: SConnectableElement,
|
|
125
|
+
protected computeAbsoluteAnchor(element: SConnectableElement, absoluteReferencePoint: Point, offset?: number): Point {
|
|
126
|
+
const referencePointInParent = absoluteToParent(element, absoluteReferencePoint);
|
|
126
127
|
const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
|
|
127
|
-
let anchor = anchorComputer.getAnchor(element,
|
|
128
|
+
let anchor = anchorComputer.getAnchor(element, referencePointInParent, offset);
|
|
128
129
|
// The anchor is computed in the local coordinate system of the element.
|
|
129
130
|
// If the element is a nested child element we have to add the absolute position of its parent to the anchor.
|
|
130
131
|
if (element.parent !== element.root) {
|
|
@@ -138,6 +139,33 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
138
139
|
}
|
|
139
140
|
}
|
|
140
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Convert a point, specified in absolute coordinates, to a point relative
|
|
144
|
+
* to the parent of the specified child element.
|
|
145
|
+
* @param element the child element
|
|
146
|
+
* @param absolutePoint a point in absolute coordinates
|
|
147
|
+
* @returns the equivalent point, relative to the element's parent coordinates
|
|
148
|
+
*/
|
|
149
|
+
function absoluteToParent(element: BoundsAwareModelElement & SChildElement, absolutePoint: Point): Point{
|
|
150
|
+
if (isBoundsAware(element.parent)){
|
|
151
|
+
return absoluteToLocal(element.parent, absolutePoint);
|
|
152
|
+
}
|
|
153
|
+
// If the parent is not bounds-aware, assume it's at 0; 0 and proceed
|
|
154
|
+
return absoluteToLocal(element, absolutePoint);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Convert a point, specified in absolute coordinates, to a point relative
|
|
159
|
+
* to the specified element.
|
|
160
|
+
* @param element the element
|
|
161
|
+
* @param absolutePoint a point in absolute coordinates
|
|
162
|
+
* @returns the equivalent point, relative to the element's coordinates
|
|
163
|
+
*/
|
|
164
|
+
function absoluteToLocal(element: BoundsAwareModelElement, absolutePoint: Point): Point {
|
|
165
|
+
const absoluteElementBounds = toAbsoluteBounds(element);
|
|
166
|
+
return {x: absolutePoint.x - absoluteElementBounds.x, y: absolutePoint.y - absoluteElementBounds.y};
|
|
167
|
+
}
|
|
168
|
+
|
|
141
169
|
export function feedbackEdgeId(root: SModelRoot): string {
|
|
142
170
|
return root.id + '_feedback_edge';
|
|
143
171
|
}
|
|
@@ -29,7 +29,7 @@ export class StructureCompartmentView extends ShapeView {
|
|
|
29
29
|
|
|
30
30
|
return (
|
|
31
31
|
<g>
|
|
32
|
-
<rect class-sprotty-comp={true} class-debug={
|
|
32
|
+
<rect class-sprotty-comp={true} class-debug={false} x='0' y='0' width={model.size.width} height={model.size.height}></rect>
|
|
33
33
|
{context.renderChildren(model)}
|
|
34
34
|
</g>
|
|
35
35
|
);
|