From aae335792b340d7238b2546bd21f28bcce142316 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Thu, 21 Jun 2018 12:08:01 +0200 Subject: [PATCH] T extends QuickPickItem (#49340) --- .../platform/quickinput/common/quickInput.ts | 14 +++---- src/vs/vscode.proposed.d.ts | 14 +++---- src/vs/workbench/api/node/extHost.api.impl.ts | 2 +- src/vs/workbench/api/node/extHostQuickOpen.ts | 24 ++++++------ .../browser/parts/quickinput/quickInput.ts | 38 +++++++++---------- 5 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/vs/platform/quickinput/common/quickInput.ts b/src/vs/platform/quickinput/common/quickInput.ts index 20da81e28b9..12a15db8b3c 100644 --- a/src/vs/platform/quickinput/common/quickInput.ts +++ b/src/vs/platform/quickinput/common/quickInput.ts @@ -109,7 +109,7 @@ export interface IQuickInput { dispose(): void; } -export interface IQuickPick extends IQuickInput { +export interface IQuickPick extends IQuickInput { value: string; @@ -123,7 +123,7 @@ export interface IQuickPick extends IQuickInput { readonly onDidTriggerButton: Event; - items: ReadonlyArray; + items: ReadonlyArray; canSelectMany: boolean; @@ -131,13 +131,13 @@ export interface IQuickPick extends IQuickInput { matchOnDetail: boolean; - activeItems: ReadonlyArray; + activeItems: ReadonlyArray; - readonly onDidChangeActive: Event; + readonly onDidChangeActive: Event; - selectedItems: ReadonlyArray; + selectedItems: ReadonlyArray; - readonly onDidChangeSelection: Event; + readonly onDidChangeSelection: Event; } export interface IInputBox extends IQuickInput { @@ -186,7 +186,7 @@ export interface IQuickInputService { backButton: IQuickInputButton; - createQuickPick(): IQuickPick; + createQuickPick(): IQuickPick; createInputBox(): IInputBox; focus(): void; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index f9ebf92d6a6..396acc62af3 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -525,7 +525,7 @@ declare module 'vscode' { export const quickInputBackButton: QuickInputButton; - export function createQuickPick(): QuickPick; + export function createQuickPick(): QuickPick; export function createInputBox(): InputBox; } @@ -553,7 +553,7 @@ declare module 'vscode' { dispose(): void; } - export interface QuickPick extends QuickInput { + export interface QuickPick extends QuickInput { value: string; @@ -567,7 +567,7 @@ declare module 'vscode' { readonly onDidTriggerButton: Event; - items: ReadonlyArray; + items: ReadonlyArray; canSelectMany: boolean; @@ -575,13 +575,13 @@ declare module 'vscode' { matchOnDetail: boolean; - activeItems: ReadonlyArray; + activeItems: ReadonlyArray; - readonly onDidChangeActive: Event; + readonly onDidChangeActive: Event; - selectedItems: ReadonlyArray; + selectedItems: ReadonlyArray; - readonly onDidChangeSelection: Event; + readonly onDidChangeSelection: Event; } export interface InputBox extends QuickInput { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 8002c970830..5c544393528 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -460,7 +460,7 @@ export function createApiFactory( return extHostQuickOpen.backButton; })(); }, - createQuickPick: proposedApiFunction(extension, (): vscode.QuickPick => { + createQuickPick: proposedApiFunction(extension, (): vscode.QuickPick => { return extHostQuickOpen.createQuickPick(extension.id); }), createInputBox: proposedApiFunction(extension, (): vscode.InputBox => { diff --git a/src/vs/workbench/api/node/extHostQuickOpen.ts b/src/vs/workbench/api/node/extHostQuickOpen.ts index a6ad6b4014c..6f50d14ca98 100644 --- a/src/vs/workbench/api/node/extHostQuickOpen.ts +++ b/src/vs/workbench/api/node/extHostQuickOpen.ts @@ -155,7 +155,7 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape { backButton = backButton; - createQuickPick(extensionId: string): QuickPick { + createQuickPick(extensionId: string): QuickPick { const session = new ExtHostQuickPick(this._proxy, extensionId, () => this._sessions.delete(session._id)); this._sessions.set(session._id, session); return session; @@ -451,18 +451,18 @@ function getIconUri(iconPath: string | URI) { return URI.file(iconPath); } -class ExtHostQuickPick extends ExtHostQuickInput implements QuickPick { +class ExtHostQuickPick extends ExtHostQuickInput implements QuickPick { - private _items: QuickPickItem[] = []; - private _handlesToItems = new Map(); - private _itemsToHandles = new Map(); + private _items: T[] = []; + private _handlesToItems = new Map(); + private _itemsToHandles = new Map(); private _canSelectMany = false; private _matchOnDescription = true; private _matchOnDetail = true; - private _activeItems: QuickPickItem[] = []; - private _onDidChangeActiveEmitter = new Emitter(); - private _selectedItems: QuickPickItem[] = []; - private _onDidChangeSelectionEmitter = new Emitter(); + private _activeItems: T[] = []; + private _onDidChangeActiveEmitter = new Emitter(); + private _selectedItems: T[] = []; + private _onDidChangeSelectionEmitter = new Emitter(); constructor(proxy: MainThreadQuickOpenShape, extensionId: string, onDispose: () => void) { super(proxy, extensionId, onDispose); @@ -477,7 +477,7 @@ class ExtHostQuickPick extends ExtHostQuickInput implements QuickPick { return this._items; } - set items(items: QuickPickItem[]) { + set items(items: T[]) { this._items = items.slice(); this._handlesToItems.clear(); this._itemsToHandles.clear(); @@ -527,7 +527,7 @@ class ExtHostQuickPick extends ExtHostQuickInput implements QuickPick { return this._activeItems; } - set activeItems(activeItems: QuickPickItem[]) { + set activeItems(activeItems: T[]) { this._activeItems = activeItems.filter(item => this._itemsToHandles.has(item)); this.update({ activeItems: this._activeItems.map(item => this._itemsToHandles.get(item)) }); } @@ -538,7 +538,7 @@ class ExtHostQuickPick extends ExtHostQuickInput implements QuickPick { return this._selectedItems; } - set selectedItems(selectedItems: QuickPickItem[]) { + set selectedItems(selectedItems: T[]) { this._selectedItems = selectedItems.filter(item => this._itemsToHandles.has(item)); this.update({ selectedItems: this._selectedItems.map(item => this._itemsToHandles.get(item)) }); } diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.ts b/src/vs/workbench/browser/parts/quickinput/quickInput.ts index 47ebebc445d..3895d568ae1 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.ts @@ -276,23 +276,23 @@ class QuickInput implements IQuickInput { } } -class QuickPick extends QuickInput implements IQuickPick { +class QuickPick extends QuickInput implements IQuickPick { private _value = ''; private _placeholder; private onDidChangeValueEmitter = new Emitter(); private onDidAcceptEmitter = new Emitter(); - private _items: IQuickPickItem[] = []; + private _items: T[] = []; private itemsUpdated = false; private _canSelectMany = false; private _matchOnDescription = true; private _matchOnDetail = true; - private _activeItems: IQuickPickItem[] = []; + private _activeItems: T[] = []; private activeItemsUpdated = false; - private onDidChangeActiveEmitter = new Emitter(); - private _selectedItems: IQuickPickItem[] = []; + private onDidChangeActiveEmitter = new Emitter(); + private _selectedItems: T[] = []; private selectedItemsUpdated = false; - private onDidChangeSelectionEmitter = new Emitter(); + private onDidChangeSelectionEmitter = new Emitter(); private quickNavigate = false; constructor(ui: QuickInputUI) { @@ -331,7 +331,7 @@ class QuickPick extends QuickInput implements IQuickPick { return this._items; } - set items(items: IQuickPickItem[]) { + set items(items: T[]) { this._items = items; this.itemsUpdated = true; this.update(); @@ -368,7 +368,7 @@ class QuickPick extends QuickInput implements IQuickPick { return this._activeItems; } - set activeItems(activeItems: IQuickPickItem[]) { + set activeItems(activeItems: T[]) { this._activeItems = activeItems; this.activeItemsUpdated = true; this.update(); @@ -380,7 +380,7 @@ class QuickPick extends QuickInput implements IQuickPick { return this._selectedItems; } - set selectedItems(selectedItems: IQuickPickItem[]) { + set selectedItems(selectedItems: T[]) { this._selectedItems = selectedItems; this.selectedItemsUpdated = true; this.update(); @@ -433,8 +433,8 @@ class QuickPick extends QuickInput implements IQuickPick { if (!focusedItems.length && !this._activeItems.length) { return; } - this._activeItems = focusedItems; - this.onDidChangeActiveEmitter.fire(focusedItems); + this._activeItems = focusedItems as T[]; + this.onDidChangeActiveEmitter.fire(focusedItems as T[]); }), this.ui.list.onDidChangeSelection(selectedItems => { if (this.canSelectMany) { @@ -444,16 +444,16 @@ class QuickPick extends QuickInput implements IQuickPick { if (!selectedItems.length && !this._selectedItems.length) { return; } - this._selectedItems = selectedItems; - this.onDidChangeSelectionEmitter.fire(selectedItems); + this._selectedItems = selectedItems as T[]; + this.onDidChangeSelectionEmitter.fire(selectedItems as T[]); this.onDidAcceptEmitter.fire(); }), this.ui.list.onChangedCheckedElements(checkedItems => { if (!this.canSelectMany) { return; } - this._selectedItems = checkedItems; - this.onDidChangeSelectionEmitter.fire(checkedItems); + this._selectedItems = checkedItems as T[]; + this.onDidChangeSelectionEmitter.fire(checkedItems as T[]); }), ); } @@ -893,12 +893,12 @@ export class QuickInputService extends Component implements IQuickInputService { resolve(undefined); return; } - const input = this.createQuickPick(); + const input = this.createQuickPick(); const disposables = [ input, input.onDidAccept(() => { if (input.canSelectMany) { - resolve(input.selectedItems); // TODO: generify interface to use T extends IQuickPickItem + resolve(input.selectedItems.slice()); input.hide(); } else { const result = input.activeItems[0]; @@ -1005,9 +1005,9 @@ export class QuickInputService extends Component implements IQuickInputService { backButton = backButton; - createQuickPick(): IQuickPick { + createQuickPick(): IQuickPick { this.create(); - return new QuickPick(this.ui); + return new QuickPick(this.ui); } createInputBox(): IInputBox { -- GitLab