import { inject, injectable, named } from 'inversify'; import { ContributionProvider, Emitter } from '@gedit/utils'; import { NavigatorChildrenResolver, NavigatorResourceNode } from '../common/navigator-resource-node'; // import { nls } from '@gedit/nls'; // import { APP_CONFIG_PATH } from '@gedit/app-config/lib/browser'; export const NavigatorFileContribution = Symbol('NavigatorFileContribution'); /** * 注册文件到导航栏 */ export interface NavigatorFileContribution { register(registry: NavigatorFileContributionRegistry): void } @injectable() export class NavigatorFileContributionRegistry { fileNodes: NavigatorResourceNode[] = []; childrenResolvers: NavigatorChildrenResolver[] = []; readonly onRefreshEmitter = new Emitter(); readonly onNavigatorSelecteEmitter = new Emitter(); readonly onRefresh = this.onRefreshEmitter.event; readonly onNavigatorSelect = this.onNavigatorSelecteEmitter.event; constructor( @inject(ContributionProvider) @named(NavigatorFileContribution) protected readonly contributionProvider: ContributionProvider, ) { const contributions = this.contributionProvider.getContributions(); for (const contrib of contributions) { contrib.register(this); } } registerFile(node: NavigatorResourceNode): void { this.fileNodes.push(node); this.fileNodes = this.fileNodes.sort((f1, f2) => (f1.priority || 0) - (f2.priority || 0)); } registerChildrenResolver(resolver: NavigatorChildrenResolver): void { this.childrenResolvers.push(resolver); } } @injectable() export class AppConfigNavigatorFileRegistry implements NavigatorFileContribution { register(registry: NavigatorFileContributionRegistry): void { /* registry.registerFile({ icon: 'navigator2d-config-icon', uriPath: APP_CONFIG_PATH, label: nls.localize('navigator2d.config', 'Configure'), priority: 100, }); */ } }