import { inject, injectable } from 'inversify'; import { Navigatable, SelectableTreeNode, WidgetManager } from '@gedit/application/lib/browser'; import { Event, URI } from '@gedit/utils'; import { NavigatorTreeWidget } from './navigator-tree'; @injectable() export class NavigatorService { @inject(WidgetManager) protected widgetManager: WidgetManager; @inject(NavigatorTreeWidget) protected readonly treeWidget: NavigatorTreeWidget; // // /** // * 隐藏属性面板 // */ // async closeView(): Promise { // await this.shell.closeWidget(NAVIGATOR_VIEW_CONTAINER_ID); // } // // /** // * 打开属性面板 // */ // async openView(args: Partial = {}): Promise { // const shell = this.shell; // const widget = this.widget = await this.widgetManager.getOrCreateWidget(NAVIGATOR_VIEW_CONTAINER_ID); // const tabBar = shell.getTabBarFor(widget); // // const area = shell.getAreaFor(widget) // if (!tabBar) { // const widgetArgs: ApplicationShell.WidgetOptions = { // area: 'left', // 放到左侧面板 // rank: 200, // }; // await shell.addWidget(widget, widgetArgs); // widget.update(); // } // if (widget.isAttached && args.activate) { // await shell.activateWidget(NAVIGATOR_VIEW_CONTAINER_ID); // } else if (widget.isAttached && args.reveal) { // await shell.revealWidget(NAVIGATOR_VIEW_CONTAINER_ID); // } // return this.widget; // } // // toggleView(): Promise { // return this.openView({ // toggle: true, // activate: true // }); // } /** * 选中treeNode节点 * @param uri */ async selectTreeNode(uri: URI | Navigatable | object): Promise { let resourceUri: URI | undefined; if (Navigatable.is(uri)) { resourceUri = uri.getResourceUri(); } if (uri instanceof URI) { resourceUri = uri; } if (resourceUri) { const model = this.treeWidget.model; if (model) { const node = await model.revealFile(resourceUri); if (SelectableTreeNode.is(node)) { model.selectNode(node); } } } } get onSelectionChanged(): Event>> { return this.treeWidget.model.onSelectionChanged; } /** * 刷新整个树 */ refreshTreeNodes(): void { // const model = this.navigatorViewContainer.navigatorTreeWidget.model; // model.refresh(model.root); } /** * 获取导航栏上选中的节点 */ getSelectedTreeNodes(): ReadonlyArray> { return this.treeWidget.model.selectedNodes; } }