import { IEventBus } from '../event-bus/lib/types'; import { SaveResult } from "../event-bus/lib/types"; import { ContextService } from "../services/context.service"; import { CommonEvent } from "../interface/event"; /** 代码编辑器中央控制器 */ export interface IEditorController { /** * 事件总线实例 * @remarks 用于发送或订阅各种消息 */ eventBus: IEventBus; /** 获取上下文服务 */ getContextService(): ContextService; /** * 打开并显示文件 * @param path 文件路径 * @param appendInfo 附加信息,可在编辑页面中通过事件总线上下文获取 */ openFile(path: string, appendInfo?: any): void; /** * 显示已有文件 * @param path 文件路径 */ showFile(path: string): void; /** * 关闭文件 * @param path 文件路径 * @param force 直接关闭,即使未保存 */ closeFile(path: string, force?: boolean): void; /** * 关闭所有已保存的标签页 */ closeAllSavedFile(): void; /** * 关闭指定页签右侧的所有页签 * @remarks 如果存在未保存的变更则弹框提示用户 * @param path 指定页签的路径 */ closeToTheRight(path: string): void; /** * 关闭所有标签页 * @remarks 如果存在未保存的变更则弹框提示用户 */ closeAllFile(): void; /** * 关闭其他所有文件 * @remarks 如果存在未保存的变更则弹框提示用户 * @param path 不关闭的那个文件的路径 */ closeOtherFile(path: string): void; /** * 执行当前文件保存操作 * @param notifyResult 是否反馈保存结果(默认不反馈) * @param path 指定待保存文件的路径(而不是保存当前文件) * @param ignoreSuccessTip 不反馈成功提示,仅反馈失败提示 * @returns 保存结果 */ doSaveCurrentFile(notifyResult?: boolean, path?: string, ignoreSuccessTip?: boolean): Promise; /** * 执行全部文件保存操作 * @param notifyResult 是否反馈保存结果(默认不反馈) * @param ignoreSuccessTip 不反馈成功提示,仅反馈失败提示 * @returns 保存结果 */ doSaveAllFile(notifyResult?: boolean, ignoreSuccessTip?: boolean): Promise; /** * 刷新导航树数据 * @remarks 建议使用导航树数据服务中的刷新方法 * @param selectNodePath 数据刷新完成后,选中该条目 * @param type 待刷新的树类型数组,默认全部刷新 */ refreshNavTree(selectNodePath?: string, type?: string[]): void; /** * 切换到设计器视图 * @remarks 如果存在未保存的变更,将弹框提示用户确认 * @param force 是否强制切换 */ switchView(force?: boolean): void; /** * 在事件总线上设置全局上下文参数 * @remarks 打开的编辑页面可以通过事件总线获取到这些参数 * @param key 键 * @param value 值 * @returns 该键的历史值 */ setGlobalContextParam(key: string, value: any): any; /** * 在事件总线上获取全局上下文参数 * @param key 键 */ getGlobalContextParam(key: string): any; /** * 全局变更检测 * @remarks 导航树、导航面板工具栏组件是直接动态创建到ApplicationRef上的 */ detectChangesFromRoot(): void; /** * 向标签页发送新通知 * @remarks 赋予外层组件控制代码视图内标签页行为的能力,标签页需要自主地订阅通知队列更新事件 * @param path 标签页路径 * @param event 通知事件 */ sendNotification(path: string, event: CommonEvent): void; }