Skip to content

Commit dce95ea

Browse files
fix: FormEditorWidget to update property view correctly on selection
1 parent b693281 commit dce95ea

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

packages/form-client/src/browser/form-editor-widget.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
********************************************************************************/
44

55
import { CrossModelWidget, CrossModelWidgetOptions } from '@crossmodel/core/lib/browser';
6-
import { NavigatableWidget, NavigatableWidgetOptions, StatefulWidget } from '@theia/core/lib/browser';
6+
import { Message, NavigatableWidget, NavigatableWidgetOptions, StatefulWidget } from '@theia/core/lib/browser';
77
import { CommonCommands } from '@theia/core/lib/browser/common-frontend-contribution';
88
import { CommandService } from '@theia/core/lib/common/command';
9+
import { SelectionService } from '@theia/core/lib/common/selection-service';
910
import URI from '@theia/core/lib/common/uri';
1011
import { inject, injectable, postConstruct } from '@theia/core/shared/inversify';
1112

@@ -20,7 +21,10 @@ export class FormEditorWidget extends CrossModelWidget implements NavigatableWid
2021
@inject(CommandService)
2122
protected readonly commandService: CommandService;
2223

23-
protected override handleOpenRequest = undefined; // we do not need to support opening in editor, we are the editor
24+
@inject(SelectionService)
25+
protected readonly selectionService: SelectionService;
26+
27+
protected override handleOpenRequest = undefined;
2428

2529
protected override getModelProviderProps(): any {
2630
const props = super.getModelProviderProps();
@@ -54,4 +58,9 @@ export class FormEditorWidget extends CrossModelWidget implements NavigatableWid
5458
restoreState(oldState: object | undefined): void {
5559
// nothing to restore
5660
}
61+
62+
protected override onActivateRequest(msg: Message): void {
63+
super.onActivateRequest(msg);
64+
this.selectionService.selection = { sourceUri: this.getResourceUri().toString() };
65+
}
5766
}

packages/property-view/src/browser/model-property-widget.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@ export class ModelPropertyWidget extends CrossModelWidget implements PropertyVie
2626
}
2727

2828
async updatePropertyViewContent(propertyDataService?: PropertyDataService, selection?: GlspSelection | undefined): Promise<void> {
29+
const selectionData = selection as any;
30+
if (selectionData?.sourceUri && !GlspSelection.is(selection)) {
31+
const uri = selectionData.sourceUri;
32+
if (this.document?.uri.toString() !== uri) {
33+
this.renderData = undefined;
34+
await this.setModel(uri);
35+
}
36+
return;
37+
}
38+
2939
const activeWidget = getDiagramWidget(this.shell);
3040
if (activeWidget?.options.uri === this.document?.uri.toString() && this.document?.uri.toString() !== selection?.sourceUri) {
3141
// only react to selection of active widget
@@ -35,11 +45,11 @@ export class ModelPropertyWidget extends CrossModelWidget implements PropertyVie
3545
const renderData = (await propertyDataService.providePropertyData(selection)) as PropertiesRenderData | undefined;
3646
if (this.document?.uri.toString() !== renderData?.uri || !deepEqual(this.renderData, renderData)) {
3747
this.renderData = renderData;
38-
this.setModel(renderData?.uri);
48+
await this.setModel(renderData?.uri);
3949
}
4050
} else {
4151
this.renderData = undefined;
42-
this.setModel();
52+
await this.setModel();
4353
}
4454
}
4555

0 commit comments

Comments
 (0)