@finos/legend-extension-dsl-diagram 8.1.195 → 8.1.197
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/components/DiagramRenderer.d.ts +39 -2
- package/lib/components/DiagramRenderer.d.ts.map +1 -1
- package/lib/components/DiagramRenderer.js +83 -61
- package/lib/components/DiagramRenderer.js.map +1 -1
- package/lib/components/DiagramViewer.d.ts +39 -0
- package/lib/components/DiagramViewer.d.ts.map +1 -0
- package/lib/components/DiagramViewer.js +170 -0
- package/lib/components/DiagramViewer.js.map +1 -0
- package/lib/components/DiagramViewerState.d.ts +44 -0
- package/lib/components/DiagramViewerState.d.ts.map +1 -0
- package/lib/components/DiagramViewerState.js +136 -0
- package/lib/components/DiagramViewerState.js.map +1 -0
- package/lib/components/index.d.ts +4 -1
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +4 -1
- package/lib/components/index.js.map +1 -1
- package/lib/graph-manager/index.d.ts +3 -0
- package/lib/graph-manager/index.d.ts.map +1 -1
- package/lib/graph-manager/index.js +3 -0
- package/lib/graph-manager/index.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +0 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json +4 -5
- package/package.json +8 -9
- package/src/components/DiagramRenderer.ts +221 -103
- package/src/components/DiagramViewer.tsx +650 -0
- package/src/components/DiagramViewerState.ts +171 -0
- package/src/components/index.ts +4 -0
- package/src/graph-manager/index.ts +3 -0
- package/src/index.ts +0 -1
- package/tsconfig.json +2 -12
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioApplicationNavigationContext.d.ts +0 -19
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioApplicationNavigationContext.d.ts.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioApplicationNavigationContext.js +0 -20
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioApplicationNavigationContext.js.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCodeSnippet.d.ts +0 -20
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCodeSnippet.d.ts.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCodeSnippet.js +0 -81
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCodeSnippet.js.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCommand.d.ts +0 -28
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCommand.d.ts.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCommand.js +0 -62
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioCommand.js.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioDocumentation.d.ts +0 -20
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioDocumentation.d.ts.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioDocumentation.js +0 -21
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioDocumentation.js.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioTesting.d.ts +0 -20
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioTesting.d.ts.map +0 -1
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioTesting.js +0 -21
- package/lib/__lib__/studio/DSL_Diagram_LegendStudioTesting.js.map +0 -1
- package/lib/components/studio/ClassDiagramPreview.d.ts +0 -22
- package/lib/components/studio/ClassDiagramPreview.d.ts.map +0 -1
- package/lib/components/studio/ClassDiagramPreview.js +0 -64
- package/lib/components/studio/ClassDiagramPreview.js.map +0 -1
- package/lib/components/studio/DSL_Diagram_LegendStudioApplicationPlugin.d.ts +0 -42
- package/lib/components/studio/DSL_Diagram_LegendStudioApplicationPlugin.d.ts.map +0 -1
- package/lib/components/studio/DSL_Diagram_LegendStudioApplicationPlugin.js +0 -216
- package/lib/components/studio/DSL_Diagram_LegendStudioApplicationPlugin.js.map +0 -1
- package/lib/components/studio/DiagramEditor.d.ts +0 -19
- package/lib/components/studio/DiagramEditor.d.ts.map +0 -1
- package/lib/components/studio/DiagramEditor.js +0 -436
- package/lib/components/studio/DiagramEditor.js.map +0 -1
- package/lib/components/studio/InheritanceDiagramRenderer.d.ts +0 -22
- package/lib/components/studio/InheritanceDiagramRenderer.d.ts.map +0 -1
- package/lib/components/studio/InheritanceDiagramRenderer.js +0 -34
- package/lib/components/studio/InheritanceDiagramRenderer.js.map +0 -1
- package/lib/components/studio/index.d.ts +0 -18
- package/lib/components/studio/index.d.ts.map +0 -1
- package/lib/components/studio/index.js +0 -18
- package/lib/components/studio/index.js.map +0 -1
- package/lib/stores/studio/DSL_Diagram_GraphModifierHelper.d.ts +0 -57
- package/lib/stores/studio/DSL_Diagram_GraphModifierHelper.d.ts.map +0 -1
- package/lib/stores/studio/DSL_Diagram_GraphModifierHelper.js +0 -94
- package/lib/stores/studio/DSL_Diagram_GraphModifierHelper.js.map +0 -1
- package/lib/stores/studio/DiagramEditorState.d.ts +0 -88
- package/lib/stores/studio/DiagramEditorState.d.ts.map +0 -1
- package/lib/stores/studio/DiagramEditorState.js +0 -341
- package/lib/stores/studio/DiagramEditorState.js.map +0 -1
- package/src/__lib__/studio/DSL_Diagram_LegendStudioApplicationNavigationContext.ts +0 -19
- package/src/__lib__/studio/DSL_Diagram_LegendStudioCodeSnippet.ts +0 -88
- package/src/__lib__/studio/DSL_Diagram_LegendStudioCommand.ts +0 -64
- package/src/__lib__/studio/DSL_Diagram_LegendStudioDocumentation.ts +0 -20
- package/src/__lib__/studio/DSL_Diagram_LegendStudioTesting.ts +0 -20
- package/src/components/studio/ClassDiagramPreview.tsx +0 -83
- package/src/components/studio/DSL_Diagram_LegendStudioApplicationPlugin.tsx +0 -313
- package/src/components/studio/DiagramEditor.tsx +0 -1514
- package/src/components/studio/InheritanceDiagramRenderer.ts +0 -50
- package/src/components/studio/index.ts +0 -19
- package/src/stores/studio/DSL_Diagram_GraphModifierHelper.ts +0 -166
- package/src/stores/studio/DiagramEditorState.ts +0 -487
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { type AbstractProperty, Class } from '@finos/legend-graph';
|
|
16
|
+
import { type AbstractProperty, type GenericTypeReference, Class, Property } from '@finos/legend-graph';
|
|
17
17
|
import type { Diagram } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_Diagram.js';
|
|
18
18
|
import { Rectangle } from '../graph/metamodel/pure/packageableElements/diagram/geometry/DSL_Diagram_Rectangle.js';
|
|
19
19
|
import { Point } from '../graph/metamodel/pure/packageableElements/diagram/geometry/DSL_Diagram_Point.js';
|
|
@@ -22,6 +22,42 @@ import { ClassView } from '../graph/metamodel/pure/packageableElements/diagram/D
|
|
|
22
22
|
import type { PropertyHolderView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_PropertyHolderView.js';
|
|
23
23
|
import { GeneralizationView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_GeneralizationView.js';
|
|
24
24
|
import { RelationshipView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_RelationshipView.js';
|
|
25
|
+
import { PropertyView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_PropertyView.js';
|
|
26
|
+
import { AssociationView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_AssociationView.js';
|
|
27
|
+
import type { RelationshipViewEnd } from '../graph-manager/index.js';
|
|
28
|
+
export declare class DiagramAnalysisResult {
|
|
29
|
+
readonly uuid: string;
|
|
30
|
+
title: string;
|
|
31
|
+
description?: string | undefined;
|
|
32
|
+
diagram: Diagram;
|
|
33
|
+
}
|
|
34
|
+
export interface DiagramRendererCallbacks {
|
|
35
|
+
onClass_addSuperType?: (subclass: Class, superType: GenericTypeReference) => void;
|
|
36
|
+
onClass_addProperty?: (ownerClass: Class, property: Property) => void;
|
|
37
|
+
onDiagram_setClassViews?: (diagram: Diagram, classViews: ClassView[]) => void;
|
|
38
|
+
onDiagram_addClassView?: (diagram: Diagram, classView: ClassView) => void;
|
|
39
|
+
onDiagram_deleteClassView?: (diagram: Diagram, classView: ClassView) => void;
|
|
40
|
+
onDiagram_setAssociationViews?: (diagram: Diagram, associationViews: AssociationView[]) => void;
|
|
41
|
+
onDiagram_deleteAssociationView?: (diagram: Diagram, associationView: AssociationView) => void;
|
|
42
|
+
onDiagram_setGeneralizationViews?: (diagram: Diagram, generalizationViews: GeneralizationView[]) => void;
|
|
43
|
+
onDiagram_addGeneralizationView?: (diagram: Diagram, view: GeneralizationView) => void;
|
|
44
|
+
onDiagram_deleteGeneralizationView?: (diagram: Diagram, view: GeneralizationView) => void;
|
|
45
|
+
onDiagram_setPropertyViews?: (diagram: Diagram, propertyViews: PropertyView[]) => void;
|
|
46
|
+
onDiagram_addPropertyView?: (diagram: Diagram, view: PropertyView) => void;
|
|
47
|
+
onDiagram_deletePropertyView?: (diagram: Diagram, view: PropertyView) => void;
|
|
48
|
+
onClassView_setHideProperties?: (classView: ClassView, hide: boolean) => void;
|
|
49
|
+
onClassView_setHideStereotypes?: (classView: ClassView, hide: boolean) => void;
|
|
50
|
+
onClassView_setHideTaggedValues?: (classView: ClassView, hide: boolean) => void;
|
|
51
|
+
onRelationshipEdgeView_setOffsetX?: (edge: RelationshipViewEnd, offsetX: number) => void;
|
|
52
|
+
onRelationshipEdgeView_setOffsetY?: (edge: RelationshipViewEnd, offsetY: number) => void;
|
|
53
|
+
onRelationshipView_changePoint?: (relationship: RelationshipView, oldPoint: Point, newPoint: Point) => void;
|
|
54
|
+
onRelationshipView_simplifyPath?: (relationship: RelationshipView) => void;
|
|
55
|
+
onRelationshipView_setPath?: (relationship: RelationshipView, path: Point[]) => void;
|
|
56
|
+
onPositionedRectangle_setRectangle?: (classView: ClassView, rectangle: Rectangle) => void;
|
|
57
|
+
onPositionedRectangle_setPosition?: (classView: ClassView, position: Point) => void;
|
|
58
|
+
onPositionedRectangle_forceRefreshHash?: (positionedRectangle: PositionedRectangle) => void;
|
|
59
|
+
onFindOrBuildPoint?: (relationship: RelationshipView, x: number, y: number, zoom: number, editable: boolean) => Point | undefined;
|
|
60
|
+
}
|
|
25
61
|
export declare enum DIAGRAM_INTERACTION_MODE {
|
|
26
62
|
LAYOUT = 0,
|
|
27
63
|
PAN = 1,
|
|
@@ -147,6 +183,7 @@ export declare class DiagramRenderer {
|
|
|
147
183
|
mouseOverClassProperty?: AbstractProperty | undefined;
|
|
148
184
|
mouseOverPropertyHolderViewLabel?: PropertyHolderView | undefined;
|
|
149
185
|
cursorPosition: Point;
|
|
186
|
+
callbacks?: DiagramRendererCallbacks | undefined;
|
|
150
187
|
leftClick: boolean;
|
|
151
188
|
middleClick: boolean;
|
|
152
189
|
rightClick: boolean;
|
|
@@ -162,7 +199,7 @@ export declare class DiagramRenderer {
|
|
|
162
199
|
handleEditClassView: (classView: ClassView) => void;
|
|
163
200
|
handleEditProperty: (property: AbstractProperty, point: Point, propertyHolderView: PropertyHolderView | undefined) => void;
|
|
164
201
|
handleAddSimpleProperty: (classView: ClassView) => void;
|
|
165
|
-
constructor(div: HTMLDivElement, diagram: Diagram);
|
|
202
|
+
constructor(div: HTMLDivElement, diagram: Diagram, callbacks?: DiagramRendererCallbacks);
|
|
166
203
|
setIsReadOnly(val: boolean): void;
|
|
167
204
|
setEnableLayoutAutoAdjustment(val: boolean): void;
|
|
168
205
|
setMouseOverClassView(val: ClassView | undefined): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagramRenderer.d.ts","sourceRoot":"","sources":["../../src/components/DiagramRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,
|
|
1
|
+
{"version":3,"file":"DiagramRenderer.d.ts","sourceRoot":"","sources":["../../src/components/DiagramRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,8 +25,12 @@ import { RelationshipView } from '../graph/metamodel/pure/packageableElements/di
|
|
|
25
25
|
import { PropertyView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_PropertyView.js';
|
|
26
26
|
import { boxContains, buildBottomRightCornerBox, getBottomRightCornerPoint, getElementPosition, rotatePointX, rotatePointY, } from '../graph/helpers/DSL_Diagram_Helper.js';
|
|
27
27
|
import { AssociationView } from '../graph/metamodel/pure/packageableElements/diagram/DSL_Diagram_AssociationView.js';
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
export class DiagramAnalysisResult {
|
|
29
|
+
uuid = uuid();
|
|
30
|
+
title;
|
|
31
|
+
description;
|
|
32
|
+
diagram;
|
|
33
|
+
}
|
|
30
34
|
export var DIAGRAM_INTERACTION_MODE;
|
|
31
35
|
(function (DIAGRAM_INTERACTION_MODE) {
|
|
32
36
|
DIAGRAM_INTERACTION_MODE[DIAGRAM_INTERACTION_MODE["LAYOUT"] = 0] = "LAYOUT";
|
|
@@ -173,6 +177,7 @@ export class DiagramRenderer {
|
|
|
173
177
|
mouseOverClassProperty;
|
|
174
178
|
mouseOverPropertyHolderViewLabel;
|
|
175
179
|
cursorPosition;
|
|
180
|
+
callbacks;
|
|
176
181
|
leftClick;
|
|
177
182
|
middleClick;
|
|
178
183
|
rightClick;
|
|
@@ -189,7 +194,7 @@ export class DiagramRenderer {
|
|
|
189
194
|
handleEditClassView = noop();
|
|
190
195
|
handleEditProperty = noop();
|
|
191
196
|
handleAddSimpleProperty = noop();
|
|
192
|
-
constructor(div, diagram) {
|
|
197
|
+
constructor(div, diagram, callbacks) {
|
|
193
198
|
makeObservable(this, {
|
|
194
199
|
isReadOnly: observable,
|
|
195
200
|
enableLayoutAutoAdjustment: observable,
|
|
@@ -229,6 +234,7 @@ export class DiagramRenderer {
|
|
|
229
234
|
align: action,
|
|
230
235
|
});
|
|
231
236
|
this.diagram = diagram;
|
|
237
|
+
this.callbacks = callbacks;
|
|
232
238
|
// Container and canvas
|
|
233
239
|
this.div = div;
|
|
234
240
|
this.div.childNodes.forEach((node) => this.div.removeChild(node)); // Clear the <div> container
|
|
@@ -459,13 +465,13 @@ export class DiagramRenderer {
|
|
|
459
465
|
!getAllSuperclasses(startClassView.class.value).includes(targetClassView.class.value) &&
|
|
460
466
|
// Avoid loop (might be expensive)
|
|
461
467
|
!getAllSuperclasses(targetClassView.class.value).includes(startClassView.class.value)) {
|
|
462
|
-
|
|
468
|
+
this.callbacks?.onClass_addSuperType?.(startClassView.class.value, GenericTypeExplicitReference.create(new GenericType(targetClassView.class.value)));
|
|
463
469
|
}
|
|
464
470
|
// only add an inheritance relationship view if the start class
|
|
465
471
|
// has already had the target class as its supertype
|
|
466
472
|
if (startClassView.class.value.generalizations.find((generalization) => generalization.value.rawType === targetClassView.class.value)) {
|
|
467
473
|
const gview = new GeneralizationView(this.diagram, startClassView, targetClassView);
|
|
468
|
-
|
|
474
|
+
this.callbacks?.onDiagram_addGeneralizationView?.(this.diagram, gview);
|
|
469
475
|
return gview;
|
|
470
476
|
}
|
|
471
477
|
return undefined;
|
|
@@ -475,13 +481,13 @@ export class DiagramRenderer {
|
|
|
475
481
|
case DIAGRAM_RELATIONSHIP_EDIT_MODE.PROPERTY: {
|
|
476
482
|
this.handleAddRelationship = (startClassView, targetClassView) => {
|
|
477
483
|
const property = new Property(`property_${startClassView.class.value.properties.length + 1}`, Multiplicity.ONE, GenericTypeExplicitReference.create(new GenericType(targetClassView.class.value)), startClassView.class.value);
|
|
478
|
-
|
|
484
|
+
this.callbacks?.onClass_addProperty?.(startClassView.class.value, property);
|
|
479
485
|
// only create property view if the classviews are different
|
|
480
486
|
// else we end up with a weird rendering where the property view
|
|
481
487
|
// is not targetable
|
|
482
488
|
if (startClassView !== targetClassView) {
|
|
483
489
|
const pView = new PropertyView(this.diagram, PropertyExplicitReference.create(property), startClassView, targetClassView);
|
|
484
|
-
|
|
490
|
+
this.callbacks?.onDiagram_addPropertyView?.(this.diagram, pView);
|
|
485
491
|
return pView;
|
|
486
492
|
}
|
|
487
493
|
return undefined;
|
|
@@ -500,32 +506,34 @@ export class DiagramRenderer {
|
|
|
500
506
|
switch (op) {
|
|
501
507
|
case DIAGRAM_ALIGNER_OPERATOR.ALIGN_LEFT: {
|
|
502
508
|
const leftBound = this.selectedClasses.reduce((val, view) => Math.min(val, view.position.x), Number.MAX_SAFE_INTEGER);
|
|
503
|
-
this.selectedClasses.forEach((view) =>
|
|
509
|
+
this.selectedClasses.forEach((view) => {
|
|
510
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(leftBound, view.position.y));
|
|
511
|
+
});
|
|
504
512
|
break;
|
|
505
513
|
}
|
|
506
514
|
case DIAGRAM_ALIGNER_OPERATOR.ALIGN_CENTER: {
|
|
507
515
|
const center = this.selectedClasses.reduce((val, view) => val + view.position.x + view.rectangle.width / 2, 0) / this.selectedClasses.length;
|
|
508
|
-
this.selectedClasses.forEach((view) =>
|
|
516
|
+
this.selectedClasses.forEach((view) => this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(center - view.rectangle.width / 2, view.position.y)));
|
|
509
517
|
break;
|
|
510
518
|
}
|
|
511
519
|
case DIAGRAM_ALIGNER_OPERATOR.ALIGN_RIGHT: {
|
|
512
520
|
const rightBound = this.selectedClasses.reduce((val, view) => Math.max(val, view.position.x + view.rectangle.width), -Number.MAX_SAFE_INTEGER);
|
|
513
|
-
this.selectedClasses.forEach((view) =>
|
|
521
|
+
this.selectedClasses.forEach((view) => this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(rightBound - view.rectangle.width, view.position.y)));
|
|
514
522
|
break;
|
|
515
523
|
}
|
|
516
524
|
case DIAGRAM_ALIGNER_OPERATOR.ALIGN_TOP: {
|
|
517
525
|
const topBound = this.selectedClasses.reduce((val, view) => Math.min(val, view.position.y), Number.MAX_SAFE_INTEGER);
|
|
518
|
-
this.selectedClasses.forEach((view) =>
|
|
526
|
+
this.selectedClasses.forEach((view) => this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(view.position.x, topBound)));
|
|
519
527
|
break;
|
|
520
528
|
}
|
|
521
529
|
case DIAGRAM_ALIGNER_OPERATOR.ALIGN_MIDDLE: {
|
|
522
530
|
const middle = this.selectedClasses.reduce((val, view) => val + view.position.y + view.rectangle.height / 2, 0) / this.selectedClasses.length;
|
|
523
|
-
this.selectedClasses.forEach((view) =>
|
|
531
|
+
this.selectedClasses.forEach((view) => this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(view.position.x, middle - view.rectangle.height / 2)));
|
|
524
532
|
break;
|
|
525
533
|
}
|
|
526
534
|
case DIAGRAM_ALIGNER_OPERATOR.ALIGN_BOTTOM: {
|
|
527
535
|
const bottomBound = this.selectedClasses.reduce((val, view) => Math.max(val, view.position.y + view.rectangle.height), -Number.MAX_SAFE_INTEGER);
|
|
528
|
-
this.selectedClasses.forEach((view) =>
|
|
536
|
+
this.selectedClasses.forEach((view) => this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(view.position.x, bottomBound - view.rectangle.height)));
|
|
529
537
|
break;
|
|
530
538
|
}
|
|
531
539
|
case DIAGRAM_ALIGNER_OPERATOR.SPACE_HORIZONTALLY: {
|
|
@@ -534,7 +542,7 @@ export class DiagramRenderer {
|
|
|
534
542
|
if (sorted.length === 2) {
|
|
535
543
|
const previousView = sorted[0];
|
|
536
544
|
const currentView = sorted[1];
|
|
537
|
-
|
|
545
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(currentView, new Point(previousView.position.x + previousView.rectangle.width, currentView.position.y));
|
|
538
546
|
}
|
|
539
547
|
else {
|
|
540
548
|
const spacings = [];
|
|
@@ -549,7 +557,7 @@ export class DiagramRenderer {
|
|
|
549
557
|
for (let idx = 1; idx < sorted.length; idx++) {
|
|
550
558
|
const previousView = sorted[idx - 1];
|
|
551
559
|
const currentView = sorted[idx];
|
|
552
|
-
|
|
560
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(currentView, new Point(previousView.position.x +
|
|
553
561
|
previousView.rectangle.width +
|
|
554
562
|
averageSpacing, currentView.position.y));
|
|
555
563
|
}
|
|
@@ -562,7 +570,7 @@ export class DiagramRenderer {
|
|
|
562
570
|
if (sorted.length === 2) {
|
|
563
571
|
const previousView = sorted[0];
|
|
564
572
|
const currentView = sorted[1];
|
|
565
|
-
|
|
573
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(currentView, new Point(currentView.position.x, previousView.position.y + previousView.rectangle.height));
|
|
566
574
|
}
|
|
567
575
|
else {
|
|
568
576
|
const spacings = [];
|
|
@@ -577,7 +585,7 @@ export class DiagramRenderer {
|
|
|
577
585
|
for (let idx = 1; idx < sorted.length; idx++) {
|
|
578
586
|
const previousView = sorted[idx - 1];
|
|
579
587
|
const currentView = sorted[idx];
|
|
580
|
-
|
|
588
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(currentView, new Point(currentView.position.x, previousView.position.y +
|
|
581
589
|
previousView.rectangle.height +
|
|
582
590
|
averageSpacing));
|
|
583
591
|
}
|
|
@@ -735,14 +743,14 @@ export class DiagramRenderer {
|
|
|
735
743
|
id = uuid();
|
|
736
744
|
}
|
|
737
745
|
const newClassView = new ClassView(this.diagram, id, PackageableElementExplicitReference.create(addedClass));
|
|
738
|
-
|
|
746
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(newClassView, classViewModelCoordinate ??
|
|
739
747
|
this.canvasCoordinateToModelCoordinate(new Point(this.virtualScreen.position.x +
|
|
740
748
|
this.virtualScreen.rectangle.width / 2, this.virtualScreen.position.y +
|
|
741
749
|
this.virtualScreen.rectangle.height / 2)));
|
|
742
|
-
|
|
750
|
+
this.callbacks?.onDiagram_addClassView?.(this.diagram, newClassView);
|
|
743
751
|
// Refresh hash since ClassView position is not observable
|
|
744
752
|
// NOTE: here we refresh after adding the class view to the diagram, that way the diagram hash is refreshed
|
|
745
|
-
|
|
753
|
+
this.callbacks?.onPositionedRectangle_forceRefreshHash?.(newClassView);
|
|
746
754
|
this.diagram.classViews
|
|
747
755
|
.filter((classView) => classView.class.value !== addedClass)
|
|
748
756
|
.forEach((classView) => {
|
|
@@ -751,22 +759,22 @@ export class DiagramRenderer {
|
|
|
751
759
|
if (addedClass.generalizations
|
|
752
760
|
.map((generalization) => generalization.value.rawType)
|
|
753
761
|
.includes(_class)) {
|
|
754
|
-
|
|
762
|
+
this.callbacks?.onDiagram_addGeneralizationView?.(this.diagram, new GeneralizationView(this.diagram, newClassView, classView));
|
|
755
763
|
}
|
|
756
764
|
if (_class.generalizations
|
|
757
765
|
.map((generalization) => generalization.value.rawType)
|
|
758
766
|
.includes(addedClass)) {
|
|
759
|
-
|
|
767
|
+
this.callbacks?.onDiagram_addGeneralizationView?.(this.diagram, new GeneralizationView(this.diagram, classView, newClassView));
|
|
760
768
|
}
|
|
761
769
|
// Add property view
|
|
762
770
|
getAllOwnClassProperties(addedClass).forEach((property) => {
|
|
763
771
|
if (property.genericType.value.rawType === _class) {
|
|
764
|
-
|
|
772
|
+
this.callbacks?.onDiagram_addPropertyView?.(this.diagram, new PropertyView(this.diagram, PropertyExplicitReference.create(property), newClassView, classView));
|
|
765
773
|
}
|
|
766
774
|
});
|
|
767
775
|
getAllOwnClassProperties(_class).forEach((property) => {
|
|
768
776
|
if (property.genericType.value.rawType === addedClass) {
|
|
769
|
-
|
|
777
|
+
this.callbacks?.onDiagram_addPropertyView?.(this.diagram, new PropertyView(this.diagram, PropertyExplicitReference.create(property), classView, newClassView));
|
|
770
778
|
}
|
|
771
779
|
});
|
|
772
780
|
});
|
|
@@ -1081,7 +1089,7 @@ export class DiagramRenderer {
|
|
|
1081
1089
|
classView.rectangle.height > classMinHeight
|
|
1082
1090
|
? classView.rectangle.height
|
|
1083
1091
|
: classMinHeight;
|
|
1084
|
-
|
|
1092
|
+
this.callbacks?.onPositionedRectangle_setRectangle?.(classView, new Rectangle(width, height));
|
|
1085
1093
|
}
|
|
1086
1094
|
}
|
|
1087
1095
|
drawClassView(classView) {
|
|
@@ -1212,7 +1220,7 @@ export class DiagramRenderer {
|
|
|
1212
1220
|
// NOTE: force hash reload when we redraw class view; this would help with cases where
|
|
1213
1221
|
// we auto add new properties to the class view, causing the box to expand, hence we need
|
|
1214
1222
|
// to recompute hash
|
|
1215
|
-
|
|
1223
|
+
this.callbacks?.onPositionedRectangle_forceRefreshHash?.(classView);
|
|
1216
1224
|
}
|
|
1217
1225
|
drawLinePropertyNameAndMultiplicity(property, textPositionX, textPositionY, multiplicityPositionX, multiplicityPositionY, measureOnly) {
|
|
1218
1226
|
this.ctx.font = `${this.fontSize}px ${this.fontFamily}`;
|
|
@@ -1558,7 +1566,7 @@ export class DiagramRenderer {
|
|
|
1558
1566
|
relationshipViews.forEach((view) => {
|
|
1559
1567
|
if (selectedClasses.indexOf(view.from.classView.value) !== -1 &&
|
|
1560
1568
|
selectedClasses.indexOf(view.to.classView.value) !== -1) {
|
|
1561
|
-
|
|
1569
|
+
this.callbacks?.onRelationshipView_setPath?.(view, view.path.map((point) => new Point(point.x - newMovingDeltaX, point.y - newMovingDeltaY)));
|
|
1562
1570
|
}
|
|
1563
1571
|
});
|
|
1564
1572
|
}
|
|
@@ -1673,11 +1681,11 @@ export class DiagramRenderer {
|
|
|
1673
1681
|
: precedentY + precedentTotalHeight + spaceY;
|
|
1674
1682
|
// Set layout of current level
|
|
1675
1683
|
if (positionInitialClass || currentLevelIndex > 0) {
|
|
1676
|
-
|
|
1684
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(levels[0], new Point(startX, currentLevelY));
|
|
1677
1685
|
levels.forEach((view, idx) => {
|
|
1678
1686
|
if (idx > 0) {
|
|
1679
1687
|
const precedent = levels[idx - 1];
|
|
1680
|
-
|
|
1688
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(view, new Point(precedent.position.x + precedent.rectangle.width + spaceX, currentLevelY));
|
|
1681
1689
|
}
|
|
1682
1690
|
});
|
|
1683
1691
|
}
|
|
@@ -1701,23 +1709,23 @@ export class DiagramRenderer {
|
|
|
1701
1709
|
if ('Delete' === e.code) {
|
|
1702
1710
|
if (!this.isReadOnly) {
|
|
1703
1711
|
this.selectedClasses.forEach((classView) => {
|
|
1704
|
-
|
|
1705
|
-
|
|
1712
|
+
this.callbacks?.onDiagram_deleteClassView?.(this.diagram, classView);
|
|
1713
|
+
this.callbacks?.onDiagram_setAssociationViews?.(this.diagram, this.diagram.associationViews.filter((associationView) => !(associationView.from.classView.value === classView ||
|
|
1706
1714
|
associationView.to.classView.value === classView)));
|
|
1707
|
-
|
|
1715
|
+
this.callbacks?.onDiagram_setGeneralizationViews?.(this.diagram, this.diagram.generalizationViews.filter((generalizationView) => !(generalizationView.from.classView.value === classView ||
|
|
1708
1716
|
generalizationView.to.classView.value === classView)));
|
|
1709
|
-
|
|
1717
|
+
this.callbacks?.onDiagram_setPropertyViews?.(this.diagram, this.diagram.propertyViews.filter((propertyView) => !(propertyView.from.classView.value === classView ||
|
|
1710
1718
|
propertyView.to.classView.value === classView)));
|
|
1711
1719
|
});
|
|
1712
1720
|
if (this.selectedPropertyOrAssociation instanceof AssociationView) {
|
|
1713
|
-
|
|
1721
|
+
this.callbacks?.onDiagram_deleteAssociationView?.(this.diagram, this.selectedPropertyOrAssociation);
|
|
1714
1722
|
}
|
|
1715
1723
|
else if (this.selectedPropertyOrAssociation instanceof PropertyView) {
|
|
1716
|
-
|
|
1724
|
+
this.callbacks?.onDiagram_deletePropertyView?.(this.diagram, this.selectedPropertyOrAssociation);
|
|
1717
1725
|
}
|
|
1718
1726
|
if (this.selectedInheritance) {
|
|
1719
1727
|
if (this.diagram.generalizationViews.find((generalizationView) => generalizationView === this.selectedInheritance)) {
|
|
1720
|
-
|
|
1728
|
+
this.callbacks?.onDiagram_deleteGeneralizationView?.(this.diagram, this.selectedInheritance);
|
|
1721
1729
|
}
|
|
1722
1730
|
}
|
|
1723
1731
|
this.setSelectedClasses([]);
|
|
@@ -1751,7 +1759,7 @@ export class DiagramRenderer {
|
|
|
1751
1759
|
if (!this.isReadOnly) {
|
|
1752
1760
|
if (this.selectedClasses.length !== 0) {
|
|
1753
1761
|
this.selectedClasses.forEach((classView) => {
|
|
1754
|
-
|
|
1762
|
+
this.callbacks?.onClassView_setHideProperties?.(classView, !classView.hideProperties);
|
|
1755
1763
|
});
|
|
1756
1764
|
this.drawScreen();
|
|
1757
1765
|
}
|
|
@@ -1762,7 +1770,7 @@ export class DiagramRenderer {
|
|
|
1762
1770
|
if (!this.isReadOnly) {
|
|
1763
1771
|
if (this.selectedClasses.length !== 0) {
|
|
1764
1772
|
this.selectedClasses.forEach((classView) => {
|
|
1765
|
-
|
|
1773
|
+
this.callbacks?.onClassView_setHideStereotypes?.(classView, !classView.hideStereotypes);
|
|
1766
1774
|
});
|
|
1767
1775
|
this.drawScreen();
|
|
1768
1776
|
}
|
|
@@ -1773,7 +1781,7 @@ export class DiagramRenderer {
|
|
|
1773
1781
|
if (!this.isReadOnly) {
|
|
1774
1782
|
if (this.selectedClasses.length !== 0) {
|
|
1775
1783
|
this.selectedClasses.forEach((classView) => {
|
|
1776
|
-
|
|
1784
|
+
this.callbacks?.onClassView_setHideTaggedValues?.(classView, !classView.hideTaggedValues);
|
|
1777
1785
|
});
|
|
1778
1786
|
this.drawScreen();
|
|
1779
1787
|
}
|
|
@@ -1789,8 +1797,12 @@ export class DiagramRenderer {
|
|
|
1789
1797
|
else if ('ArrowUp' === e.code) {
|
|
1790
1798
|
const views = this.getSuperTypeLevels(this.selectedClasses, this.diagram, 0, 1);
|
|
1791
1799
|
const res = this.layoutTaxonomy(views, this.diagram, false, true);
|
|
1792
|
-
res[0].forEach((cv) =>
|
|
1793
|
-
|
|
1800
|
+
res[0].forEach((cv) => {
|
|
1801
|
+
this.callbacks?.onDiagram_addClassView?.(this.diagram, cv);
|
|
1802
|
+
});
|
|
1803
|
+
res[1].forEach((gv) => {
|
|
1804
|
+
this.callbacks?.onDiagram_addGeneralizationView?.(this.diagram, gv);
|
|
1805
|
+
});
|
|
1794
1806
|
this.drawScreen();
|
|
1795
1807
|
}
|
|
1796
1808
|
// Add subtypes of selected classes to the diagram
|
|
@@ -1799,8 +1811,12 @@ export class DiagramRenderer {
|
|
|
1799
1811
|
if (views.length > 0) {
|
|
1800
1812
|
views.forEach((classView) => this.ensureClassViewMeetMinDimensions(classView));
|
|
1801
1813
|
const res = this.layoutTaxonomy([views, this.selectedClasses], this.diagram, false, false);
|
|
1802
|
-
res[0].forEach((cv) =>
|
|
1803
|
-
|
|
1814
|
+
res[0].forEach((cv) => {
|
|
1815
|
+
this.callbacks?.onDiagram_addClassView?.(this.diagram, cv);
|
|
1816
|
+
});
|
|
1817
|
+
res[1].forEach((gv) => {
|
|
1818
|
+
this.callbacks?.onDiagram_addGeneralizationView?.(this.diagram, gv);
|
|
1819
|
+
});
|
|
1804
1820
|
}
|
|
1805
1821
|
this.drawScreen();
|
|
1806
1822
|
}
|
|
@@ -1851,9 +1867,15 @@ export class DiagramRenderer {
|
|
|
1851
1867
|
if (!this.isReadOnly) {
|
|
1852
1868
|
switch (this.interactionMode) {
|
|
1853
1869
|
case DIAGRAM_INTERACTION_MODE.LAYOUT: {
|
|
1854
|
-
this.diagram.generalizationViews.forEach((generalizationView) =>
|
|
1855
|
-
|
|
1856
|
-
|
|
1870
|
+
this.diagram.generalizationViews.forEach((generalizationView) => {
|
|
1871
|
+
this.callbacks?.onRelationshipView_simplifyPath?.(generalizationView);
|
|
1872
|
+
});
|
|
1873
|
+
this.diagram.associationViews.forEach((associationView) => {
|
|
1874
|
+
this.callbacks?.onRelationshipView_simplifyPath?.(associationView);
|
|
1875
|
+
});
|
|
1876
|
+
this.diagram.propertyViews.forEach((propertyView) => {
|
|
1877
|
+
this.callbacks?.onRelationshipView_simplifyPath?.(propertyView);
|
|
1878
|
+
});
|
|
1857
1879
|
break;
|
|
1858
1880
|
}
|
|
1859
1881
|
case DIAGRAM_INTERACTION_MODE.ADD_CLASS: {
|
|
@@ -1872,16 +1894,16 @@ export class DiagramRenderer {
|
|
|
1872
1894
|
if (targetClassView.contains(eventPointInModelCoordinate.x, eventPointInModelCoordinate.y)) {
|
|
1873
1895
|
const gview = this.handleAddRelationship(this.startClassView, targetClassView);
|
|
1874
1896
|
if (gview) {
|
|
1875
|
-
|
|
1897
|
+
this.callbacks?.onRelationshipEdgeView_setOffsetX?.(gview.from, -(this.startClassView.position.x +
|
|
1876
1898
|
this.startClassView.rectangle.width / 2 -
|
|
1877
1899
|
this.selectionStart.x));
|
|
1878
|
-
|
|
1900
|
+
this.callbacks?.onRelationshipEdgeView_setOffsetY?.(gview.from, -(this.startClassView.position.y +
|
|
1879
1901
|
this.startClassView.rectangle.height / 2 -
|
|
1880
1902
|
this.selectionStart.y));
|
|
1881
|
-
|
|
1903
|
+
this.callbacks?.onRelationshipEdgeView_setOffsetX?.(gview.to, -(targetClassView.position.x +
|
|
1882
1904
|
targetClassView.rectangle.width / 2 -
|
|
1883
1905
|
eventPointInModelCoordinate.x));
|
|
1884
|
-
|
|
1906
|
+
this.callbacks?.onRelationshipEdgeView_setOffsetY?.(gview.to, -(targetClassView.position.y +
|
|
1885
1907
|
targetClassView.rectangle.height / 2 -
|
|
1886
1908
|
eventPointInModelCoordinate.y));
|
|
1887
1909
|
}
|
|
@@ -1977,7 +1999,7 @@ export class DiagramRenderer {
|
|
|
1977
1999
|
this.setSelectedClassCorner(this.diagram.classViews[i]);
|
|
1978
2000
|
if (!this.isReadOnly) {
|
|
1979
2001
|
// Bring the class view to front
|
|
1980
|
-
|
|
2002
|
+
this.callbacks?.onDiagram_setClassViews?.(this.diagram, this.reorderDiagramDomain(guaranteeNonNullable(this.selectedClassCorner), this.diagram));
|
|
1981
2003
|
}
|
|
1982
2004
|
break;
|
|
1983
2005
|
}
|
|
@@ -2004,7 +2026,7 @@ export class DiagramRenderer {
|
|
|
2004
2026
|
}
|
|
2005
2027
|
if (!this.isReadOnly) {
|
|
2006
2028
|
// Bring the class view to front
|
|
2007
|
-
|
|
2029
|
+
this.callbacks?.onDiagram_setClassViews?.(this.diagram, this.reorderDiagramDomain(this.selectedClasses[0], this.diagram));
|
|
2008
2030
|
}
|
|
2009
2031
|
this.clickX =
|
|
2010
2032
|
eventPointInCanvasCoordinate.x / this.zoom -
|
|
@@ -2035,7 +2057,7 @@ export class DiagramRenderer {
|
|
|
2035
2057
|
// check for selection of inheritance view
|
|
2036
2058
|
for (const generalizationView of this.diagram
|
|
2037
2059
|
.generalizationViews) {
|
|
2038
|
-
const val =
|
|
2060
|
+
const val = this.callbacks?.onFindOrBuildPoint?.(generalizationView, eventPointInModelCoordinate.x, eventPointInModelCoordinate.y, this.zoom, !this.isReadOnly);
|
|
2039
2061
|
if (val) {
|
|
2040
2062
|
this.selectedPoint = val;
|
|
2041
2063
|
this.setSelectedInheritance(generalizationView);
|
|
@@ -2045,7 +2067,7 @@ export class DiagramRenderer {
|
|
|
2045
2067
|
// check for selection of association view
|
|
2046
2068
|
if (!this.selectedPoint) {
|
|
2047
2069
|
for (const associationView of this.diagram.associationViews) {
|
|
2048
|
-
const val =
|
|
2070
|
+
const val = this.callbacks?.onFindOrBuildPoint?.(associationView, eventPointInModelCoordinate.x, eventPointInModelCoordinate.y, this.zoom, !this.isReadOnly);
|
|
2049
2071
|
if (val) {
|
|
2050
2072
|
this.selectedPoint = val;
|
|
2051
2073
|
this.setSelectedPropertyOrAssociation(associationView);
|
|
@@ -2056,7 +2078,7 @@ export class DiagramRenderer {
|
|
|
2056
2078
|
// check for selection of property view
|
|
2057
2079
|
if (!this.selectedPoint) {
|
|
2058
2080
|
for (const propertyView of this.diagram.propertyViews) {
|
|
2059
|
-
const val =
|
|
2081
|
+
const val = this.callbacks?.onFindOrBuildPoint?.(propertyView, eventPointInModelCoordinate.x, eventPointInModelCoordinate.y, this.zoom, !this.isReadOnly);
|
|
2060
2082
|
if (val) {
|
|
2061
2083
|
this.selectedPoint = val;
|
|
2062
2084
|
this.setSelectedPropertyOrAssociation(propertyView);
|
|
@@ -2146,11 +2168,11 @@ export class DiagramRenderer {
|
|
|
2146
2168
|
// Resize class view
|
|
2147
2169
|
if (this.selectedClassCorner) {
|
|
2148
2170
|
// Make sure width and height are in range!
|
|
2149
|
-
|
|
2171
|
+
this.callbacks?.onPositionedRectangle_setRectangle?.(this.selectedClassCorner, new Rectangle(eventPointInModelCoordinate.x -
|
|
2150
2172
|
this.selectedClassCorner.position.x, eventPointInModelCoordinate.y -
|
|
2151
2173
|
this.selectedClassCorner.position.y));
|
|
2152
2174
|
// Refresh hash since ClassView rectangle is not observable
|
|
2153
|
-
|
|
2175
|
+
this.callbacks?.onPositionedRectangle_forceRefreshHash?.(this.selectedClassCorner);
|
|
2154
2176
|
this.drawClassView(this.selectedClassCorner);
|
|
2155
2177
|
this.drawScreen();
|
|
2156
2178
|
}
|
|
@@ -2172,9 +2194,9 @@ export class DiagramRenderer {
|
|
|
2172
2194
|
(this.clickY - selectedClassOldPosition.oldPos.y);
|
|
2173
2195
|
newMovingDeltaX = selectedClass.position.x - newMovingX;
|
|
2174
2196
|
newMovingDeltaY = selectedClass.position.y - newMovingY;
|
|
2175
|
-
|
|
2197
|
+
this.callbacks?.onPositionedRectangle_setPosition?.(selectedClass, new Point(newMovingX, newMovingY));
|
|
2176
2198
|
// Refresh hash since ClassView position is not observable
|
|
2177
|
-
|
|
2199
|
+
this.callbacks?.onPositionedRectangle_forceRefreshHash?.(selectedClass);
|
|
2178
2200
|
}
|
|
2179
2201
|
});
|
|
2180
2202
|
this.potentiallyShiftRelationships(this.diagram.associationViews, this.selectedClasses, newMovingDeltaX, newMovingDeltaY);
|
|
@@ -2186,10 +2208,10 @@ export class DiagramRenderer {
|
|
|
2186
2208
|
// Change line (add a new point to the line)
|
|
2187
2209
|
if (this.selectedPoint) {
|
|
2188
2210
|
if (this.selectedPropertyOrAssociation) {
|
|
2189
|
-
|
|
2211
|
+
this.callbacks?.onRelationshipView_changePoint?.(this.selectedPropertyOrAssociation, this.selectedPoint, eventPointInModelCoordinate);
|
|
2190
2212
|
}
|
|
2191
2213
|
else if (this.selectedInheritance) {
|
|
2192
|
-
|
|
2214
|
+
this.callbacks?.onRelationshipView_changePoint?.(this.selectedInheritance, this.selectedPoint, eventPointInModelCoordinate);
|
|
2193
2215
|
}
|
|
2194
2216
|
this.selectedPoint = eventPointInModelCoordinate;
|
|
2195
2217
|
this.drawScreen();
|