import { RelevantFileService } from "./relevant-file.service"; import { FileItem } from "../interface/file-item"; import { BehaviorSubject } from "rxjs"; /** * 代码编辑器上下文服务 * @remarks 保存了主要的状态数据,供组件之间交互同步 */ export declare class ContextService { private relSrv; /** * 入口文件路径,由外层组件传递进来 * @remarks * 该路径是整个代码视图的起点,一旦该路径变动,整个代码视图都要刷新 * 分三种情况: * 1. 为空,则表示尚未初始化 * 2. 为“/”,则表示是整个代码视图 * 3. 为具体的一个文件路径,则表示是某个元数据关联的代码视图 */ entryFilePath: BehaviorSubject; /** * 设置入口文件路径 * @param path 入口文件路径 */ setEntryFilePath(path: string): void; /** 已经被打开的文件条目集合 */ fileItems: FileItem[]; private _currentFilePath; constructor(relSrv: RelevantFileService); /** 当前正在显示的文件路径 */ currentFilePath: string; /** 当前正在显示的文件条目 */ readonly currentFileItem: FileItem; /** * 根据文件路径获取已经被打开的文件条目 * @param path 文件路径 * @returns 文件条目 */ getFileItemByPath(path: string): FileItem; /** * 判断文件是否已经打开 * @remarks 文件的关联文件被打开也算这个文件被打开 * @param path 文件路径 * @returns 是否已经打开 */ isFileExist(path: string): boolean; /** * 新增文件条目 * @param path 文件路径 * @returns 文件条目,如果文件已存在则返回null */ addFile(path: string): FileItem; /** * 新增并显示文件条目 * @param path 文件路径 * @returns 文件条目,如果文件已存在则返回null */ openFile(path: string): FileItem; /** * 移除文件条目 * @param path 文件路径 * @returns 是否成功 */ removeFile(path: string): boolean; /** 是否存在尚未保存的文件 */ hasDirtyFile(): boolean; }