From 547bbf4ddc0377c15f3e348d49d86eaa49de17ca Mon Sep 17 00:00:00 2001 From: liujuping Date: Wed, 23 Aug 2023 14:20:08 +0800 Subject: [PATCH] feat(workspace): update removeEditorWindow api --- docs/docs/api/workspace.md | 9 +++++++++ packages/shell/src/api/workspace.ts | 8 ++++++-- packages/types/src/shell/api/workspace.ts | 10 +++++++++- packages/workspace/src/workspace.ts | 21 +++++++++++++++++++-- 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/docs/docs/api/workspace.md b/docs/docs/api/workspace.md index 5e0f7acd2..3c13b00aa 100644 --- a/docs/docs/api/workspace.md +++ b/docs/docs/api/workspace.md @@ -107,7 +107,16 @@ openEditorWindowById(id: string): void; 移除视图窗口 ```typescript +/** + * 移除视图窗口 + * @deprecated + */ removeEditorWindow(resourceName: string, id: string): void; + +/** + * 移除视图窗口 + */ +removeEditorWindow(resource: Resource): void; ``` ### removeEditorWindowById diff --git a/packages/shell/src/api/workspace.ts b/packages/shell/src/api/workspace.ts index b19638ec7..8737e37bd 100644 --- a/packages/shell/src/api/workspace.ts +++ b/packages/shell/src/api/workspace.ts @@ -76,8 +76,12 @@ export class Workspace implements IPublicApiWorkspace { this[workspaceSymbol].openEditorWindowById(id); } - removeEditorWindow(resourceName: string, id: string) { - this[workspaceSymbol].removeEditorWindow(resourceName, id); + removeEditorWindow() { + if (typeof arguments[0] === 'string') { + this[workspaceSymbol].removeEditorWindow(arguments[0], arguments[1]); + } else { + this[workspaceSymbol].removeEditorWindowByResource(arguments[0]?.[resourceSymbol]); + } } removeEditorWindowById(id: string) { diff --git a/packages/types/src/shell/api/workspace.ts b/packages/types/src/shell/api/workspace.ts index d4232d9a1..9e1080b31 100644 --- a/packages/types/src/shell/api/workspace.ts +++ b/packages/types/src/shell/api/workspace.ts @@ -42,9 +42,17 @@ export interface IPublicApiWorkspace< /** 通过视图 id 打开窗口 */ openEditorWindowById(id: string): void; - /** 移除视图窗口 */ + /** + * 移除视图窗口 + * @deprecated + */ removeEditorWindow(resourceName: string, id: string): void; + /** + * 移除视图窗口 + */ + removeEditorWindow(resource: Resource): void; + /** 通过视图 id 移除窗口 */ removeEditorWindowById(id: string): void; diff --git a/packages/workspace/src/workspace.ts b/packages/workspace/src/workspace.ts index 50255b7db..22eb9ede2 100644 --- a/packages/workspace/src/workspace.ts +++ b/packages/workspace/src/workspace.ts @@ -22,7 +22,7 @@ const CHANGE_EVENT = 'resource.list.change'; export interface IWorkspace extends Omit, 'resourceList' | 'plugins'> { +>, 'resourceList' | 'plugins' | 'openEditorWindow' | 'removeEditorWindow'> { readonly registryInnerPlugin: (designer: IDesigner, editor: Editor, plugins: IPublicApiPlugins) => Promise; readonly shellModelFactory: IShellModelFactory; @@ -52,6 +52,18 @@ export interface IWorkspace extends Omit; + + /** + * @deprecated + */ + removeEditorWindow(resourceName: string, id: string): void; + + removeEditorWindowByResource(resource: IResource): void; + + /** + * @deprecated + */ + openEditorWindow(name: string, title: string, options: Object, viewName?: string, sleep?: boolean): Promise; } export class Workspace implements IWorkspace { @@ -213,7 +225,12 @@ export class Workspace implements IWorkspace { } removeEditorWindow(resourceName: string, id: string) { - const index = this.windows.findIndex(d => (d.resource?.name === resourceName && d.title === id)); + const index = this.windows.findIndex(d => (d.resource?.name === resourceName && (d.title === id || d.resource.id === id))); + this.remove(index); + } + + removeEditorWindowByResource(resource: IResource) { + const index = this.windows.findIndex(d => (d.resource?.id === resource.id)); this.remove(index); }