@eclipse-glsp/client 1.1.0-next.26c3266.182 → 1.1.0-next.282a632.186
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/hover/hover.d.ts +1 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +2 -15
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +2 -0
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/hbox-layout.d.ts +1 -1
- package/lib/features/layout/hbox-layout.d.ts.map +1 -1
- package/lib/features/layout/hbox-layout.js +19 -7
- package/lib/features/layout/hbox-layout.js.map +1 -1
- package/lib/features/layout/layouter.d.ts +37 -0
- package/lib/features/layout/layouter.d.ts.map +1 -0
- package/lib/features/layout/layouter.js +131 -0
- package/lib/features/layout/layouter.js.map +1 -0
- package/lib/features/layout/vbox-layout.d.ts +1 -1
- package/lib/features/layout/vbox-layout.d.ts.map +1 -1
- package/lib/features/layout/vbox-layout.js +17 -5
- package/lib/features/layout/vbox-layout.js.map +1 -1
- package/lib/features/validation/issue-marker.d.ts +2 -1
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +15 -3
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +2 -3
- package/lib/features/validation/validate.js.map +1 -1
- package/package.json +3 -3
- package/src/features/hover/hover.ts +2 -24
- package/src/features/layout/di.config.ts +3 -1
- package/src/features/layout/hbox-layout.ts +24 -7
- package/src/features/layout/layouter.ts +137 -0
- package/src/features/layout/vbox-layout.ts +22 -5
- package/src/features/validation/issue-marker.ts +14 -2
- package/src/features/validation/validate.ts +1 -2
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { Action, Bounds, SModelElementSchema, SModelRootSchema } from '@eclipse-glsp/protocol';
|
|
17
|
-
import { HoverMouseListener, IActionHandler, ICommand,
|
|
17
|
+
import { HoverMouseListener, IActionHandler, ICommand, SModelElement } from 'sprotty';
|
|
18
18
|
import { GIssueMarker } from '../validation/issue-marker';
|
|
19
19
|
export declare class GlspHoverMouseListener extends HoverMouseListener implements IActionHandler {
|
|
20
20
|
protected enableHover: boolean;
|
|
@@ -35,5 +35,4 @@ export declare class GlspHoverMouseListener extends HoverMouseListener implement
|
|
|
35
35
|
protected createIssueMessage(marker: GIssueMarker): string;
|
|
36
36
|
protected modifyBounds(bounds: Bounds): Bounds;
|
|
37
37
|
}
|
|
38
|
-
export declare function getSeverity(marker: SIssueMarker): SIssueSeverity;
|
|
39
38
|
//# sourceMappingURL=hover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../../src/features/hover/hover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EACH,MAAM,EACN,MAAM,EAIN,mBAAmB,EACnB,gBAAgB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,
|
|
1
|
+
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../../../src/features/hover/hover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EACH,MAAM,EACN,MAAM,EAIN,mBAAmB,EACnB,gBAAgB,EACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAmC,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIvH,OAAO,EAAe,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACvE,qBACa,sBAAuB,SAAQ,kBAAmB,YAAW,cAAc;IACpF,SAAS,CAAC,WAAW,UAAQ;IAC7B;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ;IAevC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;cAOvE,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBjG,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAYlF,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,mBAAmB;IAS3E,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAI1D,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGjD"}
|
|
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.GlspHoverMouseListener = void 0;
|
|
10
10
|
/********************************************************************************
|
|
11
11
|
* Copyright (c) 2020-2022 EclipseSource and others.
|
|
12
12
|
*
|
|
@@ -97,7 +97,7 @@ let GlspHoverMouseListener = class GlspHoverMouseListener extends sprotty_1.Hove
|
|
|
97
97
|
return {
|
|
98
98
|
type: 'pre-rendered',
|
|
99
99
|
id: 'popup-title',
|
|
100
|
-
code: `<div class="${getSeverity(marker)}"><div class="sprotty-popup-title">${message}</div></div>`
|
|
100
|
+
code: `<div class="${(0, issue_marker_1.getSeverity)(marker)}"><div class="sprotty-popup-title">${message}</div></div>`
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
103
|
createIssueMessage(marker) {
|
|
@@ -111,17 +111,4 @@ GlspHoverMouseListener = __decorate([
|
|
|
111
111
|
(0, inversify_1.injectable)()
|
|
112
112
|
], GlspHoverMouseListener);
|
|
113
113
|
exports.GlspHoverMouseListener = GlspHoverMouseListener;
|
|
114
|
-
function getSeverity(marker) {
|
|
115
|
-
let currentSeverity = 'info';
|
|
116
|
-
for (const severity of marker.issues.map(s => s.severity)) {
|
|
117
|
-
if (severity === 'error') {
|
|
118
|
-
return severity;
|
|
119
|
-
}
|
|
120
|
-
if (severity === 'warning' && currentSeverity === 'info') {
|
|
121
|
-
currentSeverity = severity;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return currentSeverity;
|
|
125
|
-
}
|
|
126
|
-
exports.getSeverity = getSeverity;
|
|
127
114
|
//# sourceMappingURL=hover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../../src/features/hover/hover.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAQgC;AAChC,yCAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../../src/features/hover/hover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.config.d.ts","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"di.config.d.ts","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAa5C,QAAA,MAAM,YAAY,iBAShB,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
|
@@ -20,6 +20,7 @@ const sprotty_1 = require("sprotty");
|
|
|
20
20
|
const freeform_layout_1 = require("./freeform-layout");
|
|
21
21
|
const hbox_layout_1 = require("./hbox-layout");
|
|
22
22
|
const layout_elements_action_1 = require("./layout-elements-action");
|
|
23
|
+
const layouter_1 = require("./layouter");
|
|
23
24
|
const vbox_layout_1 = require("./vbox-layout");
|
|
24
25
|
const layoutModule = new inversify_1.ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
25
26
|
const context = { bind, isBound };
|
|
@@ -27,6 +28,7 @@ const layoutModule = new inversify_1.ContainerModule((bind, _unbind, isBound, re
|
|
|
27
28
|
(0, sprotty_1.configureActionHandler)(context, layout_elements_action_1.AlignElementsAction.KIND, layout_elements_action_1.AlignElementsActionHandler);
|
|
28
29
|
rebind(sprotty_1.VBoxLayouter).to(vbox_layout_1.VBoxLayouterExt);
|
|
29
30
|
rebind(sprotty_1.HBoxLayouter).to(hbox_layout_1.HBoxLayouterExt);
|
|
31
|
+
rebind(sprotty_1.TYPES.Layouter).to(layouter_1.LayouterExt);
|
|
30
32
|
(0, sprotty_1.configureLayout)({ bind, isBound }, freeform_layout_1.FreeFormLayouter.KIND, freeform_layout_1.FreeFormLayouter);
|
|
31
33
|
});
|
|
32
34
|
exports.default = layoutModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.config.js","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"di.config.js","sourceRoot":"","sources":["../../../src/features/layout/di.config.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,yCAA4C;AAC5C,qCAAqG;AACrG,uDAAqD;AACrD,+CAAgD;AAChD,qEAKkC;AAClC,yCAAyC;AACzC,+CAAgD;AAEhD,MAAM,YAAY,GAAG,IAAI,2BAAe,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACxE,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAClC,IAAA,gCAAsB,EAAC,OAAO,EAAE,6CAAoB,CAAC,IAAI,EAAE,oDAA2B,CAAC,CAAC;IACxF,IAAA,gCAAsB,EAAC,OAAO,EAAE,4CAAmB,CAAC,IAAI,EAAE,mDAA0B,CAAC,CAAC;IAEtF,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,MAAM,CAAC,sBAAY,CAAC,CAAC,EAAE,CAAC,6BAAe,CAAC,CAAC;IACzC,MAAM,CAAC,eAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,sBAAW,CAAC,CAAC;IACvC,IAAA,yBAAe,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kCAAgB,CAAC,IAAI,EAAE,kCAAgB,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,kBAAe,YAAY,CAAC"}
|
|
@@ -36,6 +36,6 @@ export declare class HBoxLayouterExt extends HBoxLayouter {
|
|
|
36
36
|
protected getElementLayoutOptions(element: SModelElement): HBoxLayoutOptionsExt | undefined;
|
|
37
37
|
protected getFinalContainerBounds(container: SParentElement & LayoutContainer, lastOffset: Point, options: HBoxLayoutOptionsExt, maxWidth: number, maxHeight: number): Bounds;
|
|
38
38
|
protected getDefaultLayoutOptions(): HBoxLayoutOptionsExt;
|
|
39
|
-
protected
|
|
39
|
+
protected filterContainerOptions(containerOptions: HBoxLayoutOptionsExt): HBoxLayoutOptionsExt;
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=hbox-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hbox-layout.d.ts","sourceRoot":"","sources":["../../../src/features/layout/hbox-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EACH,UAAU,EAGV,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,qBACa,eAAgB,SAAQ,YAAY;IAC7C,OAAgB,IAAI,SAAqB;IAEhC,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"hbox-layout.d.ts","sourceRoot":"","sources":["../../../src/features/layout/hbox-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EACH,UAAU,EAGV,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,qBACa,eAAgB,SAAQ,YAAY;IAC7C,OAAgB,IAAI,SAAqB;IAEhC,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;cAwC3E,eAAe,CAC9B,SAAS,EAAE,cAAc,GAAG,eAAe,EAC3C,gBAAgB,EAAE,oBAAoB,EACtC,QAAQ,EAAE,gBAAgB,GAC3B,SAAS;cAyBO,cAAc,CAC7B,SAAS,EAAE,cAAc,GAAG,eAAe,EAC3C,QAAQ,EAAE,gBAAgB,EAC1B,gBAAgB,EAAE,oBAAoB,EACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,KAAK;cA8BW,WAAW,CAC1B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,EAClC,gBAAgB,EAAE,oBAAoB,EACtC,aAAa,EAAE,KAAK,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,KAAK;cAgCW,uBAAuB,CACtC,SAAS,EAAE,aAAa,EACxB,aAAa,EAAE,oBAAoB,EACnC,QAAQ,EAAE,gBAAgB,GAC3B,MAAM;cAaU,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,GAAG,oBAAoB;cAIzG,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,oBAAoB;IAIjF,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,oBAAoB,GAAG,SAAS;cAIxE,uBAAuB,CACtC,SAAS,EAAE,cAAc,GAAG,eAAe,EAC3C,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAClB,MAAM;cAeU,uBAAuB,IAAI,oBAAoB;IAqBlE,SAAS,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,oBAAoB;CAOjG"}
|
|
@@ -30,10 +30,13 @@ const sprotty_1 = require("sprotty");
|
|
|
30
30
|
*/
|
|
31
31
|
let HBoxLayouterExt = class HBoxLayouterExt extends sprotty_1.HBoxLayouter {
|
|
32
32
|
layout(container, layouter) {
|
|
33
|
+
var _a, _b;
|
|
33
34
|
const boundsData = layouter.getBoundsData(container);
|
|
34
35
|
const options = this.getLayoutOptions(container);
|
|
35
36
|
const childrenSize = this.getChildrenSize(container, options, layouter);
|
|
36
37
|
const fixedSize = this.getFixedContainerBounds(container, options, layouter);
|
|
38
|
+
const currentWidth = boundsData.bounds ? ((_a = boundsData.bounds) === null || _a === void 0 ? void 0 : _a.width) - options.paddingLeft - options.paddingRight : 0;
|
|
39
|
+
const currentHeight = boundsData.bounds ? ((_b = boundsData.bounds) === null || _b === void 0 ? void 0 : _b.height) - options.paddingTop - options.paddingBottom : 0;
|
|
37
40
|
const maxWidth = options.paddingFactor *
|
|
38
41
|
(options.resizeContainer
|
|
39
42
|
? Math.max(fixedSize.width - options.paddingLeft - options.paddingRight, childrenSize.width)
|
|
@@ -42,16 +45,18 @@ let HBoxLayouterExt = class HBoxLayouterExt extends sprotty_1.HBoxLayouter {
|
|
|
42
45
|
(options.resizeContainer
|
|
43
46
|
? Math.max(fixedSize.height - options.paddingTop - options.paddingBottom, childrenSize.height)
|
|
44
47
|
: Math.max(0, fixedSize.height - options.paddingTop - options.paddingBottom));
|
|
48
|
+
const width = Math.max(currentWidth, maxWidth);
|
|
49
|
+
const height = Math.max(currentHeight, maxHeight);
|
|
45
50
|
// Remaining size that can be grabbed by children with the hGrab option
|
|
46
|
-
const grabWidth =
|
|
51
|
+
const grabWidth = width - childrenSize.width;
|
|
47
52
|
// Number of children that request hGrab
|
|
48
53
|
// FIXME: This approach works fine when only 1 child uses HGrab, but may cause rounding issues
|
|
49
54
|
// when the grabHeight can't be equally shared by all children.
|
|
50
55
|
const grabbingChildren = container.children
|
|
51
56
|
.map(child => this.getChildLayoutOptions(child, options))
|
|
52
57
|
.filter(opt => opt.hGrab).length;
|
|
53
|
-
if (
|
|
54
|
-
const offset = this.layoutChildren(container, layouter, options,
|
|
58
|
+
if (width > 0 && height > 0) {
|
|
59
|
+
const offset = this.layoutChildren(container, layouter, options, width, height, grabWidth, grabbingChildren);
|
|
55
60
|
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
|
|
56
61
|
boundsData.boundsChanged = true;
|
|
57
62
|
}
|
|
@@ -99,8 +104,11 @@ let HBoxLayouterExt = class HBoxLayouterExt extends sprotty_1.HBoxLayouter {
|
|
|
99
104
|
return currentOffset;
|
|
100
105
|
}
|
|
101
106
|
layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight, grabWidth, grabbingChildren) {
|
|
107
|
+
const vAlign = childOptions.vGrab ? 'top' : childOptions.vAlign;
|
|
108
|
+
const dy = this.getDy(vAlign, bounds, maxHeight);
|
|
102
109
|
let offset = super.layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight);
|
|
103
|
-
|
|
110
|
+
boundsData.bounds = Object.assign(Object.assign({}, boundsData.bounds), { x: currentOffset.x, y: currentOffset.y + dy });
|
|
111
|
+
if (childOptions.vGrab) {
|
|
104
112
|
boundsData.bounds = {
|
|
105
113
|
x: boundsData.bounds.x,
|
|
106
114
|
y: boundsData.bounds.y,
|
|
@@ -136,7 +144,7 @@ let HBoxLayouterExt = class HBoxLayouterExt extends sprotty_1.HBoxLayouter {
|
|
|
136
144
|
return protocol_1.Bounds.EMPTY;
|
|
137
145
|
}
|
|
138
146
|
getChildLayoutOptions(child, containerOptions) {
|
|
139
|
-
return super.getChildLayoutOptions(child, containerOptions);
|
|
147
|
+
return super.getChildLayoutOptions(child, this.filterContainerOptions(containerOptions));
|
|
140
148
|
}
|
|
141
149
|
getLayoutOptions(element) {
|
|
142
150
|
return super.getLayoutOptions(element);
|
|
@@ -177,8 +185,12 @@ let HBoxLayouterExt = class HBoxLayouterExt extends sprotty_1.HBoxLayouter {
|
|
|
177
185
|
prefWidth: null
|
|
178
186
|
};
|
|
179
187
|
}
|
|
180
|
-
|
|
181
|
-
|
|
188
|
+
filterContainerOptions(containerOptions) {
|
|
189
|
+
// Reset object-specific layout options to default before merging,
|
|
190
|
+
// to make sure they won't be inherited (grab, prefSize)
|
|
191
|
+
// eslint-disable-next-line no-null/no-null
|
|
192
|
+
const localOptions = { vGrab: false, hGrab: false, prefHeight: null, prefWidth: null };
|
|
193
|
+
return Object.assign(Object.assign({}, containerOptions), localOptions);
|
|
182
194
|
}
|
|
183
195
|
};
|
|
184
196
|
HBoxLayouterExt.KIND = sprotty_1.HBoxLayouter.KIND;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hbox-layout.js","sourceRoot":"","sources":["../../../src/features/layout/hbox-layout.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAAkE;AAClE,yCAAuC;AACvC,qCAWiB;AASjB;;GAEG;AAEH,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,sBAAY;IAGpC,MAAM,CAAC,SAA2C,EAAE,QAA0B
|
|
1
|
+
{"version":3,"file":"hbox-layout.js","sourceRoot":"","sources":["../../../src/features/layout/hbox-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022 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 { BoundsData, ILogger, LayoutRegistry, StatefulLayouter, SModelElement, Layouter, SParentElement, LayoutContainer } from 'sprotty';
|
|
17
|
+
import { Bounds } from 'sprotty-protocol/lib/utils/geometry';
|
|
18
|
+
export declare class LayouterExt extends Layouter {
|
|
19
|
+
layout(element2boundsData: Map<SModelElement, BoundsData>): void;
|
|
20
|
+
}
|
|
21
|
+
export declare class StatefulLayouterExt extends StatefulLayouter {
|
|
22
|
+
protected readonly elementToBoundsData: Map<SModelElement, BoundsData>;
|
|
23
|
+
protected readonly layoutRegistry2: LayoutRegistry;
|
|
24
|
+
protected toBeLayouted2: (SParentElement & LayoutContainer)[];
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @param elementToBoundsData The map of element to bounds data. Bounds Data are computed from the hidden
|
|
28
|
+
* SVG rendering pass.
|
|
29
|
+
* @param layoutRegistry2 The registry of available layouts.
|
|
30
|
+
* @param log The log.
|
|
31
|
+
*/
|
|
32
|
+
constructor(elementToBoundsData: Map<SModelElement, BoundsData>, layoutRegistry2: LayoutRegistry, log: ILogger);
|
|
33
|
+
getBoundsData(element: SModelElement): BoundsData;
|
|
34
|
+
layout(): void;
|
|
35
|
+
protected doLayout(element: SParentElement & LayoutContainer): Bounds;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=layouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layouter.d.ts","sourceRoot":"","sources":["../../../src/features/layout/layouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EACH,UAAU,EACV,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,cAAc,EACd,eAAe,EAElB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,qBACa,WAAY,SAAQ,QAAQ;IAC5B,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI;CAG5E;AASD,qBAAa,mBAAoB,SAAQ,gBAAgB;IAWjD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc;IAXtD,SAAS,CAAC,aAAa,EAAE,CAAC,cAAc,GAAG,eAAe,CAAC,EAAE,CAAC;IAE9D;;;;;;OAMG;gBAEoB,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,EACnD,eAAe,EAAE,cAAc,EAClD,GAAG,EAAE,OAAO;IAeP,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU;IAwBjD,MAAM,IAAI,IAAI;cAwBJ,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,GAAG,MAAM;CAiBjF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StatefulLayouterExt = exports.LayouterExt = void 0;
|
|
10
|
+
/********************************************************************************
|
|
11
|
+
* Copyright (c) 2022 EclipseSource and others.
|
|
12
|
+
*
|
|
13
|
+
* This program and the accompanying materials are made available under the
|
|
14
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
15
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
16
|
+
*
|
|
17
|
+
* This Source Code may also be made available under the following Secondary
|
|
18
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
19
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
20
|
+
* with the GNU Classpath Exception which is available at
|
|
21
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
22
|
+
*
|
|
23
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
24
|
+
********************************************************************************/
|
|
25
|
+
const sprotty_1 = require("sprotty");
|
|
26
|
+
const inversify_1 = require("inversify");
|
|
27
|
+
const geometry_1 = require("sprotty-protocol/lib/utils/geometry");
|
|
28
|
+
let LayouterExt = class LayouterExt extends sprotty_1.Layouter {
|
|
29
|
+
layout(element2boundsData) {
|
|
30
|
+
new StatefulLayouterExt(element2boundsData, this.layoutRegistry, this.logger).layout();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
LayouterExt = __decorate([
|
|
34
|
+
(0, inversify_1.injectable)()
|
|
35
|
+
], LayouterExt);
|
|
36
|
+
exports.LayouterExt = LayouterExt;
|
|
37
|
+
// 2-pass layout:
|
|
38
|
+
// Step 1: Find "rendered size" of each element (may take resizeContainer into account)
|
|
39
|
+
// Child-to-parent layout
|
|
40
|
+
// Step 2: Extend parents as necessary, then use the adjusted parent size to properly
|
|
41
|
+
// align children (center/end alignments, hGrab/vGrab)
|
|
42
|
+
// Parent-to-children layout
|
|
43
|
+
class StatefulLayouterExt extends sprotty_1.StatefulLayouter {
|
|
44
|
+
/**
|
|
45
|
+
*
|
|
46
|
+
* @param elementToBoundsData The map of element to bounds data. Bounds Data are computed from the hidden
|
|
47
|
+
* SVG rendering pass.
|
|
48
|
+
* @param layoutRegistry2 The registry of available layouts.
|
|
49
|
+
* @param log The log.
|
|
50
|
+
*/
|
|
51
|
+
constructor(elementToBoundsData, layoutRegistry2, log) {
|
|
52
|
+
super(elementToBoundsData, layoutRegistry2, log);
|
|
53
|
+
this.elementToBoundsData = elementToBoundsData;
|
|
54
|
+
this.layoutRegistry2 = layoutRegistry2;
|
|
55
|
+
this.toBeLayouted2 = [];
|
|
56
|
+
elementToBoundsData.forEach((data, element) => {
|
|
57
|
+
if ((0, sprotty_1.isLayoutContainer)(element)) {
|
|
58
|
+
this.toBeLayouted2.push(element);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
for (const element of this.toBeLayouted2) {
|
|
62
|
+
// Clear previous layout information for dynamic-layout objects
|
|
63
|
+
elementToBoundsData.delete(element);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
getBoundsData(element) {
|
|
67
|
+
let boundsData = this.elementToBoundsData.get(element);
|
|
68
|
+
let bounds = element.bounds;
|
|
69
|
+
if ((0, sprotty_1.isLayoutContainer)(element) && this.toBeLayouted2.indexOf(element) >= 0) {
|
|
70
|
+
bounds = this.doLayout(element);
|
|
71
|
+
}
|
|
72
|
+
else if ((0, sprotty_1.isLayoutContainer)(element)) {
|
|
73
|
+
bounds = {
|
|
74
|
+
x: 0,
|
|
75
|
+
y: 0,
|
|
76
|
+
width: -1,
|
|
77
|
+
height: -1
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (!boundsData) {
|
|
81
|
+
boundsData = {
|
|
82
|
+
bounds: bounds,
|
|
83
|
+
boundsChanged: false,
|
|
84
|
+
alignmentChanged: false
|
|
85
|
+
};
|
|
86
|
+
this.elementToBoundsData.set(element, boundsData);
|
|
87
|
+
}
|
|
88
|
+
return boundsData;
|
|
89
|
+
}
|
|
90
|
+
layout() {
|
|
91
|
+
// First pass: apply layout with cleared container data. Will get
|
|
92
|
+
// preferred size for all elements (Children first, then parents)
|
|
93
|
+
while (this.toBeLayouted2.length > 0) {
|
|
94
|
+
const element = this.toBeLayouted2[0];
|
|
95
|
+
this.doLayout(element);
|
|
96
|
+
}
|
|
97
|
+
this.toBeLayouted2 = [];
|
|
98
|
+
this.elementToBoundsData.forEach((data, element) => {
|
|
99
|
+
if ((0, sprotty_1.isLayoutContainer)(element)) {
|
|
100
|
+
this.toBeLayouted2.push(element);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// Second pass: apply layout with initial size data for all
|
|
104
|
+
// nodes. Update the position/size of all elements, taking
|
|
105
|
+
// vGrab/hGrab into account (parent -> children).
|
|
106
|
+
while (this.toBeLayouted2.length > 0) {
|
|
107
|
+
const element = this.toBeLayouted2[0];
|
|
108
|
+
this.doLayout(element);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
doLayout(element) {
|
|
112
|
+
const index = this.toBeLayouted2.indexOf(element);
|
|
113
|
+
if (index >= 0) {
|
|
114
|
+
this.toBeLayouted2.splice(index, 1);
|
|
115
|
+
}
|
|
116
|
+
const layout = this.layoutRegistry2.get(element.layout);
|
|
117
|
+
if (layout) {
|
|
118
|
+
layout.layout(element, this);
|
|
119
|
+
}
|
|
120
|
+
const boundsData = this.elementToBoundsData.get(element);
|
|
121
|
+
if (boundsData !== undefined && boundsData.bounds !== undefined) {
|
|
122
|
+
return boundsData.bounds;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this.log.error(element, 'Layout failed');
|
|
126
|
+
return geometry_1.Bounds.EMPTY;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.StatefulLayouterExt = StatefulLayouterExt;
|
|
131
|
+
//# sourceMappingURL=layouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layouter.js","sourceRoot":"","sources":["../../../src/features/layout/layouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,6 @@ export declare class VBoxLayouterExt extends VBoxLayouter {
|
|
|
36
36
|
protected getElementLayoutOptions(element: SModelElement): VBoxLayoutOptionsExt | undefined;
|
|
37
37
|
protected getFinalContainerBounds(container: SParentElement & LayoutContainer, lastOffset: Point, options: VBoxLayoutOptionsExt, maxWidth: number, maxHeight: number): Bounds;
|
|
38
38
|
protected getDefaultLayoutOptions(): VBoxLayoutOptionsExt;
|
|
39
|
-
protected
|
|
39
|
+
protected filterContainerOptions(containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt;
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=vbox-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vbox-layout.d.ts","sourceRoot":"","sources":["../../../src/features/layout/vbox-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EACH,UAAU,EAGV,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,qBACa,eAAgB,SAAQ,YAAY;IAC7C,OAAgB,IAAI,SAAqB;IAEhC,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"vbox-layout.d.ts","sourceRoot":"","sources":["../../../src/features/layout/vbox-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EACH,UAAU,EAGV,eAAe,EACf,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,qBACa,eAAgB,SAAQ,YAAY;IAC7C,OAAgB,IAAI,SAAqB;IAEhC,MAAM,CAAC,SAAS,EAAE,cAAc,GAAG,eAAe,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;cAwC3E,eAAe,CAC9B,SAAS,EAAE,cAAc,GAAG,eAAe,EAC3C,gBAAgB,EAAE,oBAAoB,EACtC,QAAQ,EAAE,gBAAgB,GAC3B,SAAS;cAyBO,cAAc,CAC7B,SAAS,EAAE,cAAc,GAAG,eAAe,EAC3C,QAAQ,EAAE,gBAAgB,EAC1B,gBAAgB,EAAE,oBAAoB,EACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,KAAK;cA8BW,WAAW,CAC1B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,oBAAoB,EAClC,gBAAgB,EAAE,oBAAoB,EACtC,aAAa,EAAE,KAAK,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,KAAK;cAgCW,uBAAuB,CACtC,SAAS,EAAE,aAAa,EACxB,aAAa,EAAE,oBAAoB,EACnC,QAAQ,EAAE,gBAAgB,GAC3B,MAAM;cAaU,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,GAAG,oBAAoB;cAIzG,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,oBAAoB;IAIjF,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,oBAAoB,GAAG,SAAS;cAIxE,uBAAuB,CACtC,SAAS,EAAE,cAAc,GAAG,eAAe,EAC3C,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAClB,MAAM;cAeU,uBAAuB,IAAI,oBAAoB;IAqBlE,SAAS,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,oBAAoB;CAOjG"}
|
|
@@ -30,10 +30,13 @@ const sprotty_1 = require("sprotty");
|
|
|
30
30
|
*/
|
|
31
31
|
let VBoxLayouterExt = class VBoxLayouterExt extends sprotty_1.VBoxLayouter {
|
|
32
32
|
layout(container, layouter) {
|
|
33
|
+
var _a, _b;
|
|
33
34
|
const boundsData = layouter.getBoundsData(container);
|
|
34
35
|
const options = this.getLayoutOptions(container);
|
|
35
36
|
const childrenSize = this.getChildrenSize(container, options, layouter);
|
|
36
37
|
const fixedSize = this.getFixedContainerBounds(container, options, layouter);
|
|
38
|
+
const currentWidth = (((_a = boundsData.bounds) === null || _a === void 0 ? void 0 : _a.width) || 0) - options.paddingLeft - options.paddingRight;
|
|
39
|
+
const currentHeight = (((_b = boundsData.bounds) === null || _b === void 0 ? void 0 : _b.height) || 0) - options.paddingTop - options.paddingBottom;
|
|
37
40
|
const maxWidth = options.paddingFactor *
|
|
38
41
|
(options.resizeContainer
|
|
39
42
|
? Math.max(fixedSize.width - options.paddingLeft - options.paddingRight, childrenSize.width)
|
|
@@ -42,8 +45,10 @@ let VBoxLayouterExt = class VBoxLayouterExt extends sprotty_1.VBoxLayouter {
|
|
|
42
45
|
(options.resizeContainer
|
|
43
46
|
? Math.max(fixedSize.height - options.paddingTop - options.paddingBottom, childrenSize.height)
|
|
44
47
|
: Math.max(0, fixedSize.height - options.paddingTop - options.paddingBottom));
|
|
48
|
+
const width = Math.max(currentWidth, maxWidth);
|
|
49
|
+
const height = Math.max(currentHeight, maxHeight);
|
|
45
50
|
// Remaining size that can be grabbed by children with the vGrab option
|
|
46
|
-
const grabHeight =
|
|
51
|
+
const grabHeight = height - childrenSize.height;
|
|
47
52
|
// Number of children that request vGrab
|
|
48
53
|
// FIXME: This approach works fine when only 1 child uses VGrab, but may cause rounding issues
|
|
49
54
|
// when the grabHeight can't be equally shared by all children.
|
|
@@ -51,7 +56,7 @@ let VBoxLayouterExt = class VBoxLayouterExt extends sprotty_1.VBoxLayouter {
|
|
|
51
56
|
.map(child => this.getChildLayoutOptions(child, options))
|
|
52
57
|
.filter(opt => opt.vGrab).length;
|
|
53
58
|
if (maxWidth > 0 && maxHeight > 0) {
|
|
54
|
-
const offset = this.layoutChildren(container, layouter, options,
|
|
59
|
+
const offset = this.layoutChildren(container, layouter, options, width, height, grabHeight, grabbingChildren);
|
|
55
60
|
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
|
|
56
61
|
boundsData.boundsChanged = true;
|
|
57
62
|
}
|
|
@@ -99,7 +104,10 @@ let VBoxLayouterExt = class VBoxLayouterExt extends sprotty_1.VBoxLayouter {
|
|
|
99
104
|
return currentOffset;
|
|
100
105
|
}
|
|
101
106
|
layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight, grabHeight, grabbingChildren) {
|
|
107
|
+
const hAlign = childOptions.hGrab ? 'left' : childOptions.hAlign;
|
|
108
|
+
const dx = this.getDx(hAlign, bounds, maxWidth);
|
|
102
109
|
let offset = super.layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight);
|
|
110
|
+
boundsData.bounds = Object.assign(Object.assign({}, boundsData.bounds), { x: currentOffset.x + dx, y: currentOffset.y });
|
|
103
111
|
if (childOptions.hGrab) {
|
|
104
112
|
boundsData.bounds = {
|
|
105
113
|
x: boundsData.bounds.x,
|
|
@@ -136,7 +144,7 @@ let VBoxLayouterExt = class VBoxLayouterExt extends sprotty_1.VBoxLayouter {
|
|
|
136
144
|
return protocol_1.Bounds.EMPTY;
|
|
137
145
|
}
|
|
138
146
|
getChildLayoutOptions(child, containerOptions) {
|
|
139
|
-
return super.getChildLayoutOptions(child, containerOptions);
|
|
147
|
+
return super.getChildLayoutOptions(child, this.filterContainerOptions(containerOptions));
|
|
140
148
|
}
|
|
141
149
|
getLayoutOptions(element) {
|
|
142
150
|
return super.getLayoutOptions(element);
|
|
@@ -177,8 +185,12 @@ let VBoxLayouterExt = class VBoxLayouterExt extends sprotty_1.VBoxLayouter {
|
|
|
177
185
|
prefWidth: null
|
|
178
186
|
};
|
|
179
187
|
}
|
|
180
|
-
|
|
181
|
-
|
|
188
|
+
filterContainerOptions(containerOptions) {
|
|
189
|
+
// Reset object-specific layout options to default before merging,
|
|
190
|
+
// to make sure they won't be inherited (grab, prefSize)
|
|
191
|
+
// eslint-disable-next-line no-null/no-null
|
|
192
|
+
const localOptions = { vGrab: false, hGrab: false, prefHeight: null, prefWidth: null };
|
|
193
|
+
return Object.assign(Object.assign({}, containerOptions), localOptions);
|
|
182
194
|
}
|
|
183
195
|
};
|
|
184
196
|
VBoxLayouterExt.KIND = sprotty_1.VBoxLayouter.KIND;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vbox-layout.js","sourceRoot":"","sources":["../../../src/features/layout/vbox-layout.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAAkE;AAClE,yCAAuC;AACvC,qCAWiB;AASjB;;GAEG;AAEH,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,sBAAY;IAGpC,MAAM,CAAC,SAA2C,EAAE,QAA0B
|
|
1
|
+
{"version":3,"file":"vbox-layout.js","sourceRoot":"","sources":["../../../src/features/layout/vbox-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { Bounds, Marker } from '@eclipse-glsp/protocol';
|
|
17
|
-
import { Projectable, SIssue, SIssueMarker, SParentElement } from 'sprotty';
|
|
17
|
+
import { Projectable, SIssue, SIssueMarker, SIssueSeverity, SParentElement } from 'sprotty';
|
|
18
18
|
export declare class GIssueMarker extends SIssueMarker implements Projectable {
|
|
19
19
|
constructor();
|
|
20
20
|
projectionCssClasses: string[];
|
|
@@ -45,4 +45,5 @@ export declare function getSIssueMarker(modelElement: SParentElement): GIssueMar
|
|
|
45
45
|
* @returns the created `SIssue`.
|
|
46
46
|
*/
|
|
47
47
|
export declare function createSIssue(marker: Marker, parent?: SParentElement): SIssue;
|
|
48
|
+
export declare function getSeverity(marker: SIssueMarker): SIssueSeverity;
|
|
48
49
|
//# sourceMappingURL=issue-marker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-marker.d.ts","sourceRoot":"","sources":["../../../src/features/validation/issue-marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAc,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAiB,WAAW,EAAe,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"issue-marker.d.ts","sourceRoot":"","sources":["../../../src/features/validation/issue-marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAc,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAiB,WAAW,EAAe,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAExH,qBAAa,YAAa,SAAQ,YAAa,YAAW,WAAW;;IAKjE,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,IAAI,SAAY;IAEzB,2BAA2B,IAAI,IAAI;CAItC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,cAAc,GAAG,YAAY,CAclF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,cAAc,GAAG,YAAY,GAAG,SAAS,CAUtF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAmB5E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,cAAc,CAWhE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSIssue = exports.getSIssueMarker = exports.getOrCreateSIssueMarker = exports.GIssueMarker = void 0;
|
|
3
|
+
exports.getSeverity = exports.createSIssue = exports.getSIssueMarker = exports.getOrCreateSIssueMarker = exports.GIssueMarker = void 0;
|
|
4
4
|
/********************************************************************************
|
|
5
5
|
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
6
6
|
*
|
|
@@ -18,7 +18,6 @@ exports.createSIssue = exports.getSIssueMarker = exports.getOrCreateSIssueMarker
|
|
|
18
18
|
********************************************************************************/
|
|
19
19
|
const protocol_1 = require("@eclipse-glsp/protocol");
|
|
20
20
|
const sprotty_1 = require("sprotty");
|
|
21
|
-
const hover_1 = require("../hover/hover");
|
|
22
21
|
class GIssueMarker extends sprotty_1.SIssueMarker {
|
|
23
22
|
constructor() {
|
|
24
23
|
super();
|
|
@@ -27,7 +26,7 @@ class GIssueMarker extends sprotty_1.SIssueMarker {
|
|
|
27
26
|
this.features = new Set(sprotty_1.SDecoration.DEFAULT_FEATURES);
|
|
28
27
|
}
|
|
29
28
|
computeProjectionCssClasses() {
|
|
30
|
-
const severityCss =
|
|
29
|
+
const severityCss = getSeverity(this);
|
|
31
30
|
this.projectionCssClasses = ['sprotty-issue', 'sprotty-' + severityCss];
|
|
32
31
|
}
|
|
33
32
|
}
|
|
@@ -94,4 +93,17 @@ function createSIssue(marker, parent) {
|
|
|
94
93
|
return issue;
|
|
95
94
|
}
|
|
96
95
|
exports.createSIssue = createSIssue;
|
|
96
|
+
function getSeverity(marker) {
|
|
97
|
+
let currentSeverity = 'info';
|
|
98
|
+
for (const severity of marker.issues.map(s => s.severity)) {
|
|
99
|
+
if (severity === 'error') {
|
|
100
|
+
return severity;
|
|
101
|
+
}
|
|
102
|
+
if (severity === 'warning' && currentSeverity === 'info') {
|
|
103
|
+
currentSeverity = severity;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return currentSeverity;
|
|
107
|
+
}
|
|
108
|
+
exports.getSeverity = getSeverity;
|
|
97
109
|
//# sourceMappingURL=issue-marker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-marker.js","sourceRoot":"","sources":["../../../src/features/validation/issue-marker.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"issue-marker.js","sourceRoot":"","sources":["../../../src/features/validation/issue-marker.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAAoE;AACpE,qCAAwH;AAExH,MAAa,YAAa,SAAQ,sBAAY;IAC1C;QACI,KAAK,EAAE,CAAC;QAKH,WAAM,GAAa,EAAE,CAAC;QACtB,SAAI,GAAG,QAAQ,CAAC;QALrB,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAS,qBAAW,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAMD,2BAA2B;QACvB,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,oBAAoB,GAAG,CAAC,eAAe,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;IAC5E,CAAC;CACJ;AAdD,oCAcC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,YAA4B;IAChE,IAAI,WAAqC,CAAC;IAE1C,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,WAAW,KAAK,SAAS,EAAE;QAC3B,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,IAAA,uBAAa,EAAC,YAAY,CAAC,EAAE;YAC7B,WAAW,CAAC,eAAe,GAAG,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACjF;QACD,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACjC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAdD,0DAcC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,YAA4B;IACxD,IAAI,WAAqC,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,QAAQ,EAAE;QACvC,IAAI,KAAK,YAAY,YAAY,EAAE;YAC/B,WAAW,GAAG,KAAK,CAAC;SACvB;KACJ;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAVD,0CAUC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,MAAc,EAAE,MAAuB;IAChE,MAAM,KAAK,GAAG,IAAI,gBAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IAEnC,QAAQ,MAAM,CAAC,IAAI,EAAE;QACjB,KAAK,qBAAU,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YACzB,MAAM;SACT;QACD,KAAK,qBAAU,CAAC,IAAI,CAAC,CAAC;YAClB,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;YACxB,MAAM;SACT;QACD,KAAK,qBAAU,CAAC,OAAO,CAAC,CAAC;YACrB,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC3B,MAAM;SACT;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAnBD,oCAmBC;AAED,SAAgB,WAAW,CAAC,MAAoB;IAC5C,IAAI,eAAe,GAAmB,MAAM,CAAC;IAC7C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;QACvD,IAAI,QAAQ,KAAK,OAAO,EAAE;YACtB,OAAO,QAAQ,CAAC;SACnB;QACD,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAe,KAAK,MAAM,EAAE;YACtD,eAAe,GAAG,QAAQ,CAAC;SAC9B;KACJ;IACD,OAAO,eAAe,CAAC;AAC3B,CAAC;AAXD,kCAWC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/features/validation/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAgB,MAAM,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE7G,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAgC,MAAM,SAAS,CAAC;AAC5I,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/features/validation/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAgB,MAAM,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE7G,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAgC,MAAM,SAAS,CAAC;AAC5I,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;;GAGG;AACH,qBACa,yBAA0B,YAAW,gBAAgB;IACrB,SAAS,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;IAE9D,SAAS,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEtG,OAAO,CAAC,gBAAgB,CAAqB;IAG7C,OAAO;IAEP;;;OAGG;IACH,gCAAgC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;CAcrE;AAED;;;;;GAKG;AACH,8BACsB,qBAAqB;IACvC,aAAa,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAE/C,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI;IAIlD,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAMtC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;CACnE;AAED,qBACa,uBAAwB,YAAW,cAAc;IAE1D,SAAS,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;IAI/D,SAAS,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAGxD,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAErD,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ;IAKpD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAMrD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM;IAC9C,IAAI,EAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,yBAAiB,kBAAkB,CAAC;IACzB,MAAM,IAAI,iBAAiB,CAAC;IAEnC,SAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,kBAAkB,CAE5D;IAED,SAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAK5D;CACJ;AAED;;;GAGG;AACH,qBACa,mBAAoB,SAAQ,eAAe;IAGlB,SAAS,CAAC,MAAM,EAAE,kBAAkB;IAFtE,MAAM,CAAC,IAAI,SAA2B;gBAEM,MAAM,EAAE,kBAAkB;IAItE,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAe3D;AAiBD;;GAEG;AACH,qBACa,oBAAqB,SAAQ,eAAe;IAGnB,SAAS,CAAC,MAAM,EAAE,mBAAmB;IAFvE,MAAM,CAAC,IAAI,SAA4B;gBAEK,MAAM,EAAE,mBAAmB;IAIvE,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;CAwB3D"}
|
|
@@ -34,7 +34,6 @@ const sprotty_1 = require("sprotty");
|
|
|
34
34
|
const editor_context_service_1 = require("../../base/editor-context-service");
|
|
35
35
|
const types_1 = require("../../base/types");
|
|
36
36
|
const smodel_util_1 = require("../../utils/smodel-util");
|
|
37
|
-
const hover_1 = require("../hover/hover");
|
|
38
37
|
const model_1 = require("../tool-feedback/model");
|
|
39
38
|
const issue_marker_1 = require("./issue-marker");
|
|
40
39
|
/**
|
|
@@ -172,7 +171,7 @@ ApplyMarkersCommand = __decorate([
|
|
|
172
171
|
], ApplyMarkersCommand);
|
|
173
172
|
exports.ApplyMarkersCommand = ApplyMarkersCommand;
|
|
174
173
|
function addMaxSeverityCSSClassToIssueParent(modelElement, issueMarker) {
|
|
175
|
-
const maxSeverityCSSClass = (0,
|
|
174
|
+
const maxSeverityCSSClass = (0, issue_marker_1.getSeverity)(issueMarker);
|
|
176
175
|
if (!modelElement.cssClasses) {
|
|
177
176
|
modelElement.cssClasses = [maxSeverityCSSClass];
|
|
178
177
|
}
|
|
@@ -182,7 +181,7 @@ function addMaxSeverityCSSClassToIssueParent(modelElement, issueMarker) {
|
|
|
182
181
|
}
|
|
183
182
|
}
|
|
184
183
|
function removeCSSClassFromIssueParent(modelElement, issueMarker) {
|
|
185
|
-
const severity = (0,
|
|
184
|
+
const severity = (0, issue_marker_1.getSeverity)(issueMarker);
|
|
186
185
|
(0, smodel_util_1.removeCssClasses)(modelElement, [severity]);
|
|
187
186
|
}
|
|
188
187
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/features/validation/validate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,qDAA6G;AAC7G,yCAAyD;AACzD,qCAA4I;AAC5I,8EAAyE;AACzE,4CAAyC;AACzC,yDAA2D;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/features/validation/validate.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": "1.1.0-next.
|
|
3
|
+
"version": "1.1.0-next.282a632.186+282a632",
|
|
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": "1.1.0-next.
|
|
37
|
+
"@eclipse-glsp/protocol": "1.1.0-next.282a632.186+282a632",
|
|
38
38
|
"autocompleter": "5.1.0",
|
|
39
39
|
"sprotty": "0.12.0"
|
|
40
40
|
},
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
},
|
|
58
58
|
"main": "lib/index",
|
|
59
59
|
"types": "lib/index",
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "282a632212f02eeaaae3b64e8b58ab9ba9d03f16"
|
|
61
61
|
}
|
|
@@ -23,20 +23,11 @@ import {
|
|
|
23
23
|
SModelRootSchema
|
|
24
24
|
} from '@eclipse-glsp/protocol';
|
|
25
25
|
import { injectable } from 'inversify';
|
|
26
|
-
import {
|
|
27
|
-
EMPTY_ROOT,
|
|
28
|
-
HoverFeedbackAction,
|
|
29
|
-
HoverMouseListener,
|
|
30
|
-
IActionHandler,
|
|
31
|
-
ICommand,
|
|
32
|
-
SIssueMarker,
|
|
33
|
-
SIssueSeverity,
|
|
34
|
-
SModelElement
|
|
35
|
-
} from 'sprotty';
|
|
26
|
+
import { EMPTY_ROOT, HoverFeedbackAction, HoverMouseListener, IActionHandler, ICommand, SModelElement } from 'sprotty';
|
|
36
27
|
import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
|
|
37
28
|
import { EnableDefaultToolsAction, EnableToolsAction } from '../../base/tool-manager/tool-actions';
|
|
38
29
|
import { EdgeCreationTool } from '../tools/edge-creation-tool';
|
|
39
|
-
import { GIssueMarker } from '../validation/issue-marker';
|
|
30
|
+
import { getSeverity, GIssueMarker } from '../validation/issue-marker';
|
|
40
31
|
@injectable()
|
|
41
32
|
export class GlspHoverMouseListener extends HoverMouseListener implements IActionHandler {
|
|
42
33
|
protected enableHover = true;
|
|
@@ -117,16 +108,3 @@ export class GlspHoverMouseListener extends HoverMouseListener implements IActio
|
|
|
117
108
|
return bounds;
|
|
118
109
|
}
|
|
119
110
|
}
|
|
120
|
-
|
|
121
|
-
export function getSeverity(marker: SIssueMarker): SIssueSeverity {
|
|
122
|
-
let currentSeverity: SIssueSeverity = 'info';
|
|
123
|
-
for (const severity of marker.issues.map(s => s.severity)) {
|
|
124
|
-
if (severity === 'error') {
|
|
125
|
-
return severity;
|
|
126
|
-
}
|
|
127
|
-
if (severity === 'warning' && currentSeverity === 'info') {
|
|
128
|
-
currentSeverity = severity;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return currentSeverity;
|
|
132
|
-
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { ContainerModule } from 'inversify';
|
|
17
|
-
import { configureActionHandler, configureLayout, HBoxLayouter, VBoxLayouter } from 'sprotty';
|
|
17
|
+
import { configureActionHandler, configureLayout, HBoxLayouter, TYPES, VBoxLayouter } from 'sprotty';
|
|
18
18
|
import { FreeFormLayouter } from './freeform-layout';
|
|
19
19
|
import { HBoxLayouterExt } from './hbox-layout';
|
|
20
20
|
import {
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
ResizeElementsAction,
|
|
24
24
|
ResizeElementsActionHandler
|
|
25
25
|
} from './layout-elements-action';
|
|
26
|
+
import { LayouterExt } from './layouter';
|
|
26
27
|
import { VBoxLayouterExt } from './vbox-layout';
|
|
27
28
|
|
|
28
29
|
const layoutModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
@@ -32,6 +33,7 @@ const layoutModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
|
32
33
|
|
|
33
34
|
rebind(VBoxLayouter).to(VBoxLayouterExt);
|
|
34
35
|
rebind(HBoxLayouter).to(HBoxLayouterExt);
|
|
36
|
+
rebind(TYPES.Layouter).to(LayouterExt);
|
|
35
37
|
configureLayout({ bind, isBound }, FreeFormLayouter.KIND, FreeFormLayouter);
|
|
36
38
|
});
|
|
37
39
|
|
|
@@ -49,6 +49,9 @@ export class HBoxLayouterExt extends HBoxLayouter {
|
|
|
49
49
|
|
|
50
50
|
const fixedSize = this.getFixedContainerBounds(container, options, layouter);
|
|
51
51
|
|
|
52
|
+
const currentWidth = boundsData.bounds ? boundsData.bounds?.width - options.paddingLeft - options.paddingRight : 0;
|
|
53
|
+
const currentHeight = boundsData.bounds ? boundsData.bounds?.height - options.paddingTop - options.paddingBottom : 0;
|
|
54
|
+
|
|
52
55
|
const maxWidth =
|
|
53
56
|
options.paddingFactor *
|
|
54
57
|
(options.resizeContainer
|
|
@@ -60,8 +63,11 @@ export class HBoxLayouterExt extends HBoxLayouter {
|
|
|
60
63
|
? Math.max(fixedSize.height - options.paddingTop - options.paddingBottom, childrenSize.height)
|
|
61
64
|
: Math.max(0, fixedSize.height - options.paddingTop - options.paddingBottom));
|
|
62
65
|
|
|
66
|
+
const width = Math.max(currentWidth, maxWidth);
|
|
67
|
+
const height = Math.max(currentHeight, maxHeight);
|
|
68
|
+
|
|
63
69
|
// Remaining size that can be grabbed by children with the hGrab option
|
|
64
|
-
const grabWidth
|
|
70
|
+
const grabWidth = width - childrenSize.width;
|
|
65
71
|
// Number of children that request hGrab
|
|
66
72
|
// FIXME: This approach works fine when only 1 child uses HGrab, but may cause rounding issues
|
|
67
73
|
// when the grabHeight can't be equally shared by all children.
|
|
@@ -69,8 +75,8 @@ export class HBoxLayouterExt extends HBoxLayouter {
|
|
|
69
75
|
.map(child => this.getChildLayoutOptions(child, options))
|
|
70
76
|
.filter(opt => opt.hGrab).length;
|
|
71
77
|
|
|
72
|
-
if (
|
|
73
|
-
const offset = this.layoutChildren(container, layouter, options,
|
|
78
|
+
if (width > 0 && height > 0) {
|
|
79
|
+
const offset = this.layoutChildren(container, layouter, options, width, height, grabWidth, grabbingChildren);
|
|
74
80
|
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
|
|
75
81
|
boundsData.boundsChanged = true;
|
|
76
82
|
}
|
|
@@ -155,8 +161,15 @@ export class HBoxLayouterExt extends HBoxLayouter {
|
|
|
155
161
|
grabWidth?: number,
|
|
156
162
|
grabbingChildren?: number
|
|
157
163
|
): Point {
|
|
164
|
+
const vAlign = childOptions.vGrab ? 'top' : childOptions.vAlign;
|
|
165
|
+
const dy = this.getDy(vAlign, bounds, maxHeight);
|
|
158
166
|
let offset = super.layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight);
|
|
159
|
-
|
|
167
|
+
boundsData.bounds = {
|
|
168
|
+
...boundsData.bounds!,
|
|
169
|
+
x: currentOffset.x,
|
|
170
|
+
y: currentOffset.y + dy
|
|
171
|
+
};
|
|
172
|
+
if (childOptions.vGrab) {
|
|
160
173
|
boundsData.bounds = {
|
|
161
174
|
x: boundsData.bounds!.x,
|
|
162
175
|
y: boundsData.bounds!.y,
|
|
@@ -197,7 +210,7 @@ export class HBoxLayouterExt extends HBoxLayouter {
|
|
|
197
210
|
}
|
|
198
211
|
|
|
199
212
|
protected override getChildLayoutOptions(child: SChildElement, containerOptions: HBoxLayoutOptionsExt): HBoxLayoutOptionsExt {
|
|
200
|
-
return super.getChildLayoutOptions(child, containerOptions) as HBoxLayoutOptionsExt;
|
|
213
|
+
return super.getChildLayoutOptions(child, this.filterContainerOptions(containerOptions)) as HBoxLayoutOptionsExt;
|
|
201
214
|
}
|
|
202
215
|
|
|
203
216
|
protected override getLayoutOptions(element: SModelElement): HBoxLayoutOptionsExt {
|
|
@@ -250,7 +263,11 @@ export class HBoxLayouterExt extends HBoxLayouter {
|
|
|
250
263
|
};
|
|
251
264
|
}
|
|
252
265
|
|
|
253
|
-
protected
|
|
254
|
-
|
|
266
|
+
protected filterContainerOptions(containerOptions: HBoxLayoutOptionsExt): HBoxLayoutOptionsExt {
|
|
267
|
+
// Reset object-specific layout options to default before merging,
|
|
268
|
+
// to make sure they won't be inherited (grab, prefSize)
|
|
269
|
+
// eslint-disable-next-line no-null/no-null
|
|
270
|
+
const localOptions = { vGrab: false, hGrab: false, prefHeight: null, prefWidth: null };
|
|
271
|
+
return { ...containerOptions, ...localOptions };
|
|
255
272
|
}
|
|
256
273
|
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022 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 {
|
|
17
|
+
BoundsData,
|
|
18
|
+
ILogger,
|
|
19
|
+
LayoutRegistry,
|
|
20
|
+
StatefulLayouter,
|
|
21
|
+
SModelElement,
|
|
22
|
+
Layouter,
|
|
23
|
+
SParentElement,
|
|
24
|
+
LayoutContainer,
|
|
25
|
+
isLayoutContainer
|
|
26
|
+
} from 'sprotty';
|
|
27
|
+
import { injectable } from 'inversify';
|
|
28
|
+
import { Bounds } from 'sprotty-protocol/lib/utils/geometry';
|
|
29
|
+
|
|
30
|
+
@injectable()
|
|
31
|
+
export class LayouterExt extends Layouter {
|
|
32
|
+
override layout(element2boundsData: Map<SModelElement, BoundsData>): void {
|
|
33
|
+
new StatefulLayouterExt(element2boundsData, this.layoutRegistry, this.logger).layout();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// 2-pass layout:
|
|
38
|
+
// Step 1: Find "rendered size" of each element (may take resizeContainer into account)
|
|
39
|
+
// Child-to-parent layout
|
|
40
|
+
// Step 2: Extend parents as necessary, then use the adjusted parent size to properly
|
|
41
|
+
// align children (center/end alignments, hGrab/vGrab)
|
|
42
|
+
// Parent-to-children layout
|
|
43
|
+
|
|
44
|
+
export class StatefulLayouterExt extends StatefulLayouter {
|
|
45
|
+
protected toBeLayouted2: (SParentElement & LayoutContainer)[];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @param elementToBoundsData The map of element to bounds data. Bounds Data are computed from the hidden
|
|
50
|
+
* SVG rendering pass.
|
|
51
|
+
* @param layoutRegistry2 The registry of available layouts.
|
|
52
|
+
* @param log The log.
|
|
53
|
+
*/
|
|
54
|
+
constructor(
|
|
55
|
+
protected readonly elementToBoundsData: Map<SModelElement, BoundsData>,
|
|
56
|
+
protected readonly layoutRegistry2: LayoutRegistry,
|
|
57
|
+
log: ILogger
|
|
58
|
+
) {
|
|
59
|
+
super(elementToBoundsData, layoutRegistry2, log);
|
|
60
|
+
this.toBeLayouted2 = [];
|
|
61
|
+
elementToBoundsData.forEach((data, element) => {
|
|
62
|
+
if (isLayoutContainer(element)) {
|
|
63
|
+
this.toBeLayouted2.push(element);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
for (const element of this.toBeLayouted2) {
|
|
67
|
+
// Clear previous layout information for dynamic-layout objects
|
|
68
|
+
elementToBoundsData.delete(element);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
override getBoundsData(element: SModelElement): BoundsData {
|
|
73
|
+
let boundsData = this.elementToBoundsData.get(element);
|
|
74
|
+
let bounds = (element as any).bounds;
|
|
75
|
+
if (isLayoutContainer(element) && this.toBeLayouted2.indexOf(element) >= 0) {
|
|
76
|
+
bounds = this.doLayout(element);
|
|
77
|
+
} else if (isLayoutContainer(element)) {
|
|
78
|
+
bounds = {
|
|
79
|
+
x: 0,
|
|
80
|
+
y: 0,
|
|
81
|
+
width: -1,
|
|
82
|
+
height: -1
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (!boundsData) {
|
|
86
|
+
boundsData = {
|
|
87
|
+
bounds: bounds,
|
|
88
|
+
boundsChanged: false,
|
|
89
|
+
alignmentChanged: false
|
|
90
|
+
};
|
|
91
|
+
this.elementToBoundsData.set(element, boundsData);
|
|
92
|
+
}
|
|
93
|
+
return boundsData;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
override layout(): void {
|
|
97
|
+
// First pass: apply layout with cleared container data. Will get
|
|
98
|
+
// preferred size for all elements (Children first, then parents)
|
|
99
|
+
while (this.toBeLayouted2.length > 0) {
|
|
100
|
+
const element = this.toBeLayouted2[0];
|
|
101
|
+
this.doLayout(element);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
this.toBeLayouted2 = [];
|
|
105
|
+
this.elementToBoundsData.forEach((data, element) => {
|
|
106
|
+
if (isLayoutContainer(element)) {
|
|
107
|
+
this.toBeLayouted2.push(element);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Second pass: apply layout with initial size data for all
|
|
112
|
+
// nodes. Update the position/size of all elements, taking
|
|
113
|
+
// vGrab/hGrab into account (parent -> children).
|
|
114
|
+
while (this.toBeLayouted2.length > 0) {
|
|
115
|
+
const element = this.toBeLayouted2[0];
|
|
116
|
+
this.doLayout(element);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
protected override doLayout(element: SParentElement & LayoutContainer): Bounds {
|
|
121
|
+
const index = this.toBeLayouted2.indexOf(element);
|
|
122
|
+
if (index >= 0) {
|
|
123
|
+
this.toBeLayouted2.splice(index, 1);
|
|
124
|
+
}
|
|
125
|
+
const layout = this.layoutRegistry2.get(element.layout);
|
|
126
|
+
if (layout) {
|
|
127
|
+
layout.layout(element, this);
|
|
128
|
+
}
|
|
129
|
+
const boundsData = this.elementToBoundsData.get(element);
|
|
130
|
+
if (boundsData !== undefined && boundsData.bounds !== undefined) {
|
|
131
|
+
return boundsData.bounds;
|
|
132
|
+
} else {
|
|
133
|
+
this.log.error(element, 'Layout failed');
|
|
134
|
+
return Bounds.EMPTY;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -49,6 +49,9 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
49
49
|
|
|
50
50
|
const fixedSize = this.getFixedContainerBounds(container, options, layouter);
|
|
51
51
|
|
|
52
|
+
const currentWidth = (boundsData.bounds?.width || 0) - options.paddingLeft - options.paddingRight;
|
|
53
|
+
const currentHeight = (boundsData.bounds?.height || 0) - options.paddingTop - options.paddingBottom;
|
|
54
|
+
|
|
52
55
|
const maxWidth =
|
|
53
56
|
options.paddingFactor *
|
|
54
57
|
(options.resizeContainer
|
|
@@ -60,8 +63,11 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
60
63
|
? Math.max(fixedSize.height - options.paddingTop - options.paddingBottom, childrenSize.height)
|
|
61
64
|
: Math.max(0, fixedSize.height - options.paddingTop - options.paddingBottom));
|
|
62
65
|
|
|
66
|
+
const width = Math.max(currentWidth, maxWidth);
|
|
67
|
+
const height = Math.max(currentHeight, maxHeight);
|
|
68
|
+
|
|
63
69
|
// Remaining size that can be grabbed by children with the vGrab option
|
|
64
|
-
const grabHeight: number =
|
|
70
|
+
const grabHeight: number = height - childrenSize.height;
|
|
65
71
|
// Number of children that request vGrab
|
|
66
72
|
// FIXME: This approach works fine when only 1 child uses VGrab, but may cause rounding issues
|
|
67
73
|
// when the grabHeight can't be equally shared by all children.
|
|
@@ -70,7 +76,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
70
76
|
.filter(opt => opt.vGrab).length;
|
|
71
77
|
|
|
72
78
|
if (maxWidth > 0 && maxHeight > 0) {
|
|
73
|
-
const offset = this.layoutChildren(container, layouter, options,
|
|
79
|
+
const offset = this.layoutChildren(container, layouter, options, width, height, grabHeight, grabbingChildren);
|
|
74
80
|
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
|
|
75
81
|
boundsData.boundsChanged = true;
|
|
76
82
|
}
|
|
@@ -155,7 +161,14 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
155
161
|
grabHeight?: number,
|
|
156
162
|
grabbingChildren?: number
|
|
157
163
|
): Point {
|
|
164
|
+
const hAlign = childOptions.hGrab ? 'left' : childOptions.hAlign;
|
|
165
|
+
const dx = this.getDx(hAlign, bounds, maxWidth);
|
|
158
166
|
let offset = super.layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight);
|
|
167
|
+
boundsData.bounds = {
|
|
168
|
+
...boundsData.bounds!,
|
|
169
|
+
x: currentOffset.x + dx,
|
|
170
|
+
y: currentOffset.y
|
|
171
|
+
};
|
|
159
172
|
if (childOptions.hGrab) {
|
|
160
173
|
boundsData.bounds = {
|
|
161
174
|
x: boundsData.bounds!.x,
|
|
@@ -197,7 +210,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
197
210
|
}
|
|
198
211
|
|
|
199
212
|
protected override getChildLayoutOptions(child: SChildElement, containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
|
|
200
|
-
return super.getChildLayoutOptions(child, containerOptions) as VBoxLayoutOptionsExt;
|
|
213
|
+
return super.getChildLayoutOptions(child, this.filterContainerOptions(containerOptions)) as VBoxLayoutOptionsExt;
|
|
201
214
|
}
|
|
202
215
|
|
|
203
216
|
protected override getLayoutOptions(element: SModelElement): VBoxLayoutOptionsExt {
|
|
@@ -250,7 +263,11 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
250
263
|
};
|
|
251
264
|
}
|
|
252
265
|
|
|
253
|
-
protected
|
|
254
|
-
|
|
266
|
+
protected filterContainerOptions(containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
|
|
267
|
+
// Reset object-specific layout options to default before merging,
|
|
268
|
+
// to make sure they won't be inherited (grab, prefSize)
|
|
269
|
+
// eslint-disable-next-line no-null/no-null
|
|
270
|
+
const localOptions = { vGrab: false, hGrab: false, prefHeight: null, prefWidth: null };
|
|
271
|
+
return { ...containerOptions, ...localOptions };
|
|
255
272
|
}
|
|
256
273
|
}
|
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { Bounds, Marker, MarkerKind } from '@eclipse-glsp/protocol';
|
|
17
|
-
import { isBoundsAware, Projectable, SDecoration, SIssue, SIssueMarker, SParentElement } from 'sprotty';
|
|
18
|
-
import { getSeverity } from '../hover/hover';
|
|
17
|
+
import { isBoundsAware, Projectable, SDecoration, SIssue, SIssueMarker, SIssueSeverity, SParentElement } from 'sprotty';
|
|
19
18
|
|
|
20
19
|
export class GIssueMarker extends SIssueMarker implements Projectable {
|
|
21
20
|
constructor() {
|
|
@@ -100,3 +99,16 @@ export function createSIssue(marker: Marker, parent?: SParentElement): SIssue {
|
|
|
100
99
|
}
|
|
101
100
|
return issue;
|
|
102
101
|
}
|
|
102
|
+
|
|
103
|
+
export function getSeverity(marker: SIssueMarker): SIssueSeverity {
|
|
104
|
+
let currentSeverity: SIssueSeverity = 'info';
|
|
105
|
+
for (const severity of marker.issues.map(s => s.severity)) {
|
|
106
|
+
if (severity === 'error') {
|
|
107
|
+
return severity;
|
|
108
|
+
}
|
|
109
|
+
if (severity === 'warning' && currentSeverity === 'info') {
|
|
110
|
+
currentSeverity = severity;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return currentSeverity;
|
|
114
|
+
}
|
|
@@ -19,10 +19,9 @@ import { CommandExecutionContext, CommandReturn, IActionDispatcher, IActionHandl
|
|
|
19
19
|
import { EditorContextService } from '../../base/editor-context-service';
|
|
20
20
|
import { TYPES } from '../../base/types';
|
|
21
21
|
import { removeCssClasses } from '../../utils/smodel-util';
|
|
22
|
-
import { getSeverity } from '../hover/hover';
|
|
23
22
|
import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
|
|
24
23
|
import { FeedbackCommand } from '../tool-feedback/model';
|
|
25
|
-
import { createSIssue, getOrCreateSIssueMarker, getSIssueMarker, GIssueMarker } from './issue-marker';
|
|
24
|
+
import { createSIssue, getOrCreateSIssueMarker, getSeverity, getSIssueMarker, GIssueMarker } from './issue-marker';
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* Feedback emitter sending actions for visualizing model validation feedback and
|