feat: workspace add onChangeActiveWindow event api

This commit is contained in:
liujuping 2023-05-11 10:11:33 +08:00 committed by 林熠
parent 8ac68b982b
commit 22d2fddc3e
4 changed files with 28 additions and 3 deletions

View File

@ -73,4 +73,8 @@ export class Workspace implements IPublicApiWorkspace {
onChangeActiveWindow(fn: () => void): IPublicTypeDisposable {
return this[workspaceSymbol].onChangeActiveWindow(fn);
}
onChangeActiveEditorView(fn: () => void): IPublicTypeDisposable {
return this[workspaceSymbol].onChangeActiveEditorView(fn);
}
}

View File

@ -10,7 +10,7 @@ export class EditorView {
constructor(editorView: IViewContext) {
this[editorViewSymbol] = editorView;
this[pluginContextSymbol] = this[editorViewSymbol].innerPlugins._getLowCodePluginContext({
pluginName: '',
pluginName: editorView.editorWindow + editorView.viewName,
});
}

View File

@ -3,8 +3,7 @@ import { createModuleEventBus, IEventBus, makeObservable, obx } from '@alilc/low
import { Context, IViewContext } from './context/view-context';
import { IWorkspace } from './workspace';
import { IResource } from './resource';
import { IPublicTypeDisposable } from '../../types/es/shell/type/disposable';
import { IPublicModelWindow } from '@alilc/lowcode-types';
import { IPublicModelWindow, IPublicTypeDisposable } from '@alilc/lowcode-types';
interface IWindowCOnfig {
title: string | undefined;
@ -158,6 +157,10 @@ export class EditorWindow implements IEditorWindow {
if (!ignoreEmit) {
this.emitter.emit('window.change.view.type', name);
if (this.id === this.workspace.window.id) {
this.workspace.emitChangeActiveEditorView();
}
}
this.editorView.setActivate(true);
};

View File

@ -13,6 +13,8 @@ enum EVENT {
CHANGE_ACTIVE_WINDOW = 'change_active_window',
WINDOW_RENDER_READY = 'window_render_ready',
CHANGE_ACTIVE_EDITOR_VIEW = 'change_active_editor_view',
}
const CHANGE_EVENT = 'resource.list.change';
@ -42,6 +44,10 @@ export interface IWorkspace extends Omit<IPublicApiWorkspace<
initWindow(): void;
setActive(active: boolean): void;
onChangeActiveEditorView(fn: () => void): IPublicTypeDisposable;
emitChangeActiveEditorView(): void;
}
export class Workspace implements IWorkspace {
@ -258,12 +264,24 @@ export class Workspace implements IWorkspace {
};
}
onChangeActiveEditorView(fn: () => void) {
this.emitter.on(EVENT.CHANGE_ACTIVE_EDITOR_VIEW, fn);
return () => {
this.emitter.removeListener(EVENT.CHANGE_ACTIVE_EDITOR_VIEW, fn);
};
}
emitChangeActiveEditorView() {
this.emitter.emit(EVENT.CHANGE_ACTIVE_EDITOR_VIEW);
}
emitChangeWindow() {
this.emitter.emit(EVENT.CHANGE_WINDOW);
}
emitChangeActiveWindow() {
this.emitter.emit(EVENT.CHANGE_ACTIVE_WINDOW);
this.emitChangeActiveEditorView();
}
onChangeActiveWindow(fn: () => void) {