import { injectable } from 'inversify'; import { SelectableTreeNode, TreeSelection, TreeSelectionService } from './tree-selection'; import { DisposableCollection, EmitterProxy } from '@gedit/utils'; @injectable() export class TreeSelectionProxy implements TreeSelectionService { protected toDispose = new DisposableCollection(); protected readonly onSelectionChangedEmitter = new EmitterProxy>>(this.selection.onSelectionChanged); readonly onSelectionChanged = this.onSelectionChangedEmitter.event; constructor( protected readonly selection: TreeSelectionService ) { } get selectedNodes(): ReadonlyArray> { return this.selection.selectedNodes; } dispose(): void { this.onSelectionChangedEmitter.dispose(); } addSelection(selectionOrTreeNode: TreeSelection | Readonly): void { this.selection.addSelection(selectionOrTreeNode); } storeState(): object { return this.selection.storeState(); } restoreState(state: object): void { this.selection.restoreState(state); } }