@eclipse-glsp/server 2.1.0-next.75 → 2.1.0-next.77
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/common/features/model/gmodel-index.d.ts +6 -6
- package/lib/common/features/model/gmodel-index.d.ts.map +1 -1
- package/lib/common/features/model/gmodel-index.js +4 -4
- package/lib/common/features/model/gmodel-index.js.map +1 -1
- package/lib/common/gmodel/delete-operation-handler.d.ts +1 -2
- package/lib/common/gmodel/delete-operation-handler.d.ts.map +1 -1
- package/lib/common/gmodel/delete-operation-handler.js +14 -23
- package/lib/common/gmodel/delete-operation-handler.js.map +1 -1
- package/package.json +3 -3
- package/src/common/features/model/gmodel-index.ts +7 -7
- package/src/common/gmodel/delete-operation-handler.ts +15 -27
|
@@ -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 { GEdge, GModelElement, GModelElementConstructor, GModelRoot
|
|
16
|
+
import { GEdge, GModelElement, GModelElementConstructor, GModelRoot } from '@eclipse-glsp/graph';
|
|
17
17
|
import { TypeGuard } from '@eclipse-glsp/protocol';
|
|
18
18
|
/**
|
|
19
19
|
* Is used to index all child elements of a {@link GModelRoot} by their id. Offers a set
|
|
@@ -72,17 +72,17 @@ export declare class GModelIndex {
|
|
|
72
72
|
*/
|
|
73
73
|
typeCount(type: string): number;
|
|
74
74
|
/**
|
|
75
|
-
* Returns all incoming edges for a node.
|
|
75
|
+
* Returns all incoming edges for a node (or port).
|
|
76
76
|
*
|
|
77
|
-
* @param node The node where the edges are connected.
|
|
77
|
+
* @param node The node (or port) where the edges are connected.
|
|
78
78
|
*
|
|
79
79
|
* @returns All incoming edges.
|
|
80
80
|
*/
|
|
81
|
-
getIncomingEdges(node:
|
|
81
|
+
getIncomingEdges(node: GModelElement): GEdge[];
|
|
82
82
|
/**
|
|
83
|
-
* Returns all outgoing edges for a node.
|
|
83
|
+
* Returns all outgoing edges for a node (or port).
|
|
84
84
|
*
|
|
85
|
-
* @param node The node where the edges are connected.
|
|
85
|
+
* @param node The node (or port) where the edges are connected.
|
|
86
86
|
*
|
|
87
87
|
* @returns All outgoing edges.
|
|
88
88
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmodel-index.d.ts","sourceRoot":"","sources":["../../../../src/common/features/model/gmodel-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"gmodel-index.d.ts","sourceRoot":"","sources":["../../../../src/common/features/model/gmodel-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD;;;GAGG;AACH,qBACa,WAAW;IACpB,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;;IAOvD,KAAK,IAAI,IAAI;IAKb,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAKjC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAiB/C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,GAAG,aAAa,GAAG,SAAS;IAQhG,WAAW,CAAC,CAAC,SAAS,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAQpH;;;;;OAKG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAIrC;;;;;OAKG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE;IAI7C;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,aAAa,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAIrF;;;;OAIG;IACH,MAAM,IAAI,MAAM,EAAE;IAIlB;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1C;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,KAAK,EAAE;IAI9C;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,KAAK,EAAE;IAI9C;;;;OAIG;IACH,WAAW,IAAI,KAAK,EAAE;IAItB;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAKjG,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;CAYxF"}
|
|
@@ -133,9 +133,9 @@ let GModelIndex = class GModelIndex {
|
|
|
133
133
|
return this.getElements(type).length;
|
|
134
134
|
}
|
|
135
135
|
/**
|
|
136
|
-
* Returns all incoming edges for a node.
|
|
136
|
+
* Returns all incoming edges for a node (or port).
|
|
137
137
|
*
|
|
138
|
-
* @param node The node where the edges are connected.
|
|
138
|
+
* @param node The node (or port) where the edges are connected.
|
|
139
139
|
*
|
|
140
140
|
* @returns All incoming edges.
|
|
141
141
|
*/
|
|
@@ -143,9 +143,9 @@ let GModelIndex = class GModelIndex {
|
|
|
143
143
|
return this.getAllEdges().filter(edge => edge.targetId === node.id);
|
|
144
144
|
}
|
|
145
145
|
/**
|
|
146
|
-
* Returns all outgoing edges for a node.
|
|
146
|
+
* Returns all outgoing edges for a node (or port).
|
|
147
147
|
*
|
|
148
|
-
* @param node The node where the edges are connected.
|
|
148
|
+
* @param node The node (or port) where the edges are connected.
|
|
149
149
|
*
|
|
150
150
|
* @returns All outgoing edges.
|
|
151
151
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmodel-index.js","sourceRoot":"","sources":["../../../../src/common/features/model/gmodel-index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,+
|
|
1
|
+
{"version":3,"file":"gmodel-index.js","sourceRoot":"","sources":["../../../../src/common/features/model/gmodel-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,6 @@ export declare class GModelDeleteOperationHandler extends GModelOperationHandler
|
|
|
26
26
|
createCommand(operation: DeleteElementOperation): MaybePromise<Command | undefined>;
|
|
27
27
|
deleteElements(elementIds: string[]): MaybePromise<void>;
|
|
28
28
|
protected delete(elementId: string, index: GModelIndex): boolean;
|
|
29
|
-
protected collectDependents(dependents: Set<GModelElement>,
|
|
30
|
-
protected findTopLevelElement(element: GModelElement): GModelElement;
|
|
29
|
+
protected collectDependents(dependents: Set<GModelElement>, elementToDelete: GModelElement, isChild: boolean): void;
|
|
31
30
|
}
|
|
32
31
|
//# sourceMappingURL=delete-operation-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-operation-handler.d.ts","sourceRoot":"","sources":["../../../src/common/gmodel/delete-operation-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"delete-operation-handler.d.ts","sourceRoot":"","sources":["../../../src/common/gmodel/delete-operation-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAClF,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,qBACa,4BAA6B,SAAQ,sBAAsB;IAEpE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,aAAa,CAAC,SAAS,EAAE,sBAAsB,GAAG,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;IASnF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC;IAaxD,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IA8BhE,SAAS,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAuBtH"}
|
|
@@ -63,49 +63,40 @@ let GModelDeleteOperationHandler = class GModelDeleteOperationHandler extends gm
|
|
|
63
63
|
this.logger.warn('Element not found: ' + elementId);
|
|
64
64
|
return false;
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this.logger.warn("The requested node doesn't have a parent; it can't be deleted");
|
|
66
|
+
if (!element.parent) {
|
|
67
|
+
this.logger.warn("The requested element doesn't have a parent; it can't be deleted");
|
|
69
68
|
return false;
|
|
70
69
|
}
|
|
71
70
|
const dependents = new Set();
|
|
72
|
-
this.collectDependents(dependents,
|
|
71
|
+
this.collectDependents(dependents, element, false);
|
|
73
72
|
dependents.forEach(dependant => {
|
|
74
|
-
const index =
|
|
73
|
+
const index = dependant.parent.children.findIndex(element => element === dependant);
|
|
75
74
|
if (index > -1) {
|
|
76
|
-
|
|
75
|
+
dependant.parent.children.splice(index, 1);
|
|
77
76
|
}
|
|
78
77
|
this.allDependentsIds.add(dependant.id);
|
|
79
78
|
});
|
|
80
79
|
return true;
|
|
81
80
|
}
|
|
82
|
-
collectDependents(dependents,
|
|
83
|
-
if (dependents.has(
|
|
81
|
+
collectDependents(dependents, elementToDelete, isChild) {
|
|
82
|
+
if (dependents.has(elementToDelete)) {
|
|
84
83
|
return;
|
|
85
84
|
}
|
|
86
|
-
if (
|
|
87
|
-
|
|
85
|
+
if (elementToDelete.children.length > 0) {
|
|
86
|
+
elementToDelete.children.forEach(child => this.collectDependents(dependents, child, true));
|
|
88
87
|
}
|
|
89
|
-
if (
|
|
88
|
+
if (elementToDelete instanceof graph_1.GNode || elementToDelete instanceof graph_1.GPort) {
|
|
90
89
|
const index = this.modelState.index;
|
|
91
|
-
index.getIncomingEdges(
|
|
90
|
+
index.getIncomingEdges(elementToDelete).forEach(incoming => {
|
|
92
91
|
dependents.add(incoming);
|
|
93
92
|
});
|
|
94
|
-
index.getOutgoingEdges(
|
|
93
|
+
index.getOutgoingEdges(elementToDelete).forEach(outgoing => {
|
|
95
94
|
dependents.add(outgoing);
|
|
96
95
|
});
|
|
97
96
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
findTopLevelElement(element) {
|
|
101
|
-
if (element instanceof graph_1.GNode || element instanceof graph_1.GEdge) {
|
|
102
|
-
return element;
|
|
103
|
-
}
|
|
104
|
-
const parent = element.parent;
|
|
105
|
-
if (!parent) {
|
|
106
|
-
return element;
|
|
97
|
+
if (!isChild) {
|
|
98
|
+
dependents.add(elementToDelete);
|
|
107
99
|
}
|
|
108
|
-
return this.findTopLevelElement(parent);
|
|
109
100
|
}
|
|
110
101
|
};
|
|
111
102
|
exports.GModelDeleteOperationHandler = GModelDeleteOperationHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-operation-handler.js","sourceRoot":"","sources":["../../../src/common/gmodel/delete-operation-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;kFAckF;AAClF,+CAAkE;AAClE,qDAA8E;AAC9E,yCAA+C;AAG/C,4CAAyC;AACzC,yEAAoE;AAG7D,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,iDAAsB;IAMpE,IAAI,aAAa;QACb,OAAO,iCAAsB,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,SAAiC;QAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACzD,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,cAAc,CAAC,UAAoB;QAC/B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACzD,OAAO;SACV;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;SACvG;IACL,CAAC;IAES,MAAM,CAAC,SAAiB,EAAE,KAAkB;QAClD,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC;SACf;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;SAChB;QAED,
|
|
1
|
+
{"version":3,"file":"delete-operation-handler.js","sourceRoot":"","sources":["../../../src/common/gmodel/delete-operation-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eclipse-glsp/server",
|
|
3
|
-
"version": "2.1.0-next.
|
|
3
|
+
"version": "2.1.0-next.77+1a0997e",
|
|
4
4
|
"description": "A js server framework for Eclipse GLSP",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eclipse",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"watch": "tsc -w"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@eclipse-glsp/graph": "2.1.0-next.
|
|
62
|
+
"@eclipse-glsp/graph": "2.1.0-next.77+1a0997e",
|
|
63
63
|
"@eclipse-glsp/protocol": "next",
|
|
64
64
|
"@types/uuid": "8.3.1",
|
|
65
65
|
"commander": "^8.3.0",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "1a0997e056ff19b4435fa94e9ccda5f3957ed199"
|
|
80
80
|
}
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { GEdge, GModelElement, GModelElementConstructor, GModelRoot
|
|
16
|
+
import { GEdge, GModelElement, GModelElementConstructor, GModelRoot } from '@eclipse-glsp/graph';
|
|
17
17
|
import { TypeGuard } from '@eclipse-glsp/protocol';
|
|
18
18
|
import { injectable } from 'inversify';
|
|
19
|
-
import {
|
|
19
|
+
import { GLSPServerError, getOrThrow } from '../../utils/glsp-server-error';
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Is used to index all child elements of a {@link GModelRoot} by their id. Offers a set
|
|
@@ -137,20 +137,20 @@ export class GModelIndex {
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
/**
|
|
140
|
-
* Returns all incoming edges for a node.
|
|
140
|
+
* Returns all incoming edges for a node (or port).
|
|
141
141
|
*
|
|
142
|
-
* @param node The node where the edges are connected.
|
|
142
|
+
* @param node The node (or port) where the edges are connected.
|
|
143
143
|
*
|
|
144
144
|
* @returns All incoming edges.
|
|
145
145
|
*/
|
|
146
|
-
getIncomingEdges(node:
|
|
146
|
+
getIncomingEdges(node: GModelElement): GEdge[] {
|
|
147
147
|
return this.getAllEdges().filter(edge => edge.targetId === node.id);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
|
-
* Returns all outgoing edges for a node.
|
|
151
|
+
* Returns all outgoing edges for a node (or port).
|
|
152
152
|
*
|
|
153
|
-
* @param node The node where the edges are connected.
|
|
153
|
+
* @param node The node (or port) where the edges are connected.
|
|
154
154
|
*
|
|
155
155
|
* @returns All outgoing edges.
|
|
156
156
|
*/
|
|
@@ -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 {
|
|
16
|
+
import { GModelElement, GNode, GPort } from '@eclipse-glsp/graph';
|
|
17
17
|
import { DeleteElementOperation, MaybePromise } from '@eclipse-glsp/protocol';
|
|
18
18
|
import { inject, injectable } from 'inversify';
|
|
19
19
|
import { Command } from '../command/command';
|
|
@@ -65,19 +65,18 @@ export class GModelDeleteOperationHandler extends GModelOperationHandler {
|
|
|
65
65
|
return false;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.logger.warn("The requested node doesn't have a parent; it can't be deleted");
|
|
68
|
+
if (!element.parent) {
|
|
69
|
+
this.logger.warn("The requested element doesn't have a parent; it can't be deleted");
|
|
71
70
|
return false;
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
const dependents = new Set<GModelElement>();
|
|
75
|
-
this.collectDependents(dependents,
|
|
74
|
+
this.collectDependents(dependents, element, false);
|
|
76
75
|
|
|
77
76
|
dependents.forEach(dependant => {
|
|
78
|
-
const index =
|
|
77
|
+
const index = dependant.parent.children.findIndex(element => element === dependant);
|
|
79
78
|
if (index > -1) {
|
|
80
|
-
|
|
79
|
+
dependant.parent.children.splice(index, 1);
|
|
81
80
|
}
|
|
82
81
|
this.allDependentsIds.add(dependant.id);
|
|
83
82
|
});
|
|
@@ -85,38 +84,27 @@ export class GModelDeleteOperationHandler extends GModelOperationHandler {
|
|
|
85
84
|
return true;
|
|
86
85
|
}
|
|
87
86
|
|
|
88
|
-
protected collectDependents(dependents: Set<GModelElement>,
|
|
89
|
-
if (dependents.has(
|
|
87
|
+
protected collectDependents(dependents: Set<GModelElement>, elementToDelete: GModelElement, isChild: boolean): void {
|
|
88
|
+
if (dependents.has(elementToDelete)) {
|
|
90
89
|
return;
|
|
91
90
|
}
|
|
92
91
|
|
|
93
|
-
if (
|
|
94
|
-
|
|
92
|
+
if (elementToDelete.children.length > 0) {
|
|
93
|
+
elementToDelete.children.forEach(child => this.collectDependents(dependents, child, true));
|
|
95
94
|
}
|
|
96
95
|
|
|
97
|
-
if (
|
|
96
|
+
if (elementToDelete instanceof GNode || elementToDelete instanceof GPort) {
|
|
98
97
|
const index = this.modelState.index;
|
|
99
98
|
|
|
100
|
-
index.getIncomingEdges(
|
|
99
|
+
index.getIncomingEdges(elementToDelete).forEach(incoming => {
|
|
101
100
|
dependents.add(incoming);
|
|
102
101
|
});
|
|
103
|
-
index.getOutgoingEdges(
|
|
102
|
+
index.getOutgoingEdges(elementToDelete).forEach(outgoing => {
|
|
104
103
|
dependents.add(outgoing);
|
|
105
104
|
});
|
|
106
105
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
protected findTopLevelElement(element: GModelElement): GModelElement {
|
|
112
|
-
if (element instanceof GNode || element instanceof GEdge) {
|
|
113
|
-
return element;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const parent = element.parent;
|
|
117
|
-
if (!parent) {
|
|
118
|
-
return element;
|
|
106
|
+
if (!isChild) {
|
|
107
|
+
dependents.add(elementToDelete);
|
|
119
108
|
}
|
|
120
|
-
return this.findTopLevelElement(parent);
|
|
121
109
|
}
|
|
122
110
|
}
|