diff --git a/src/vs/platform/quickOpen/common/quickOpen.ts b/src/vs/platform/quickOpen/common/quickOpen.ts index f7d70839e80..bb886241cf7 100644 --- a/src/vs/platform/quickOpen/common/quickOpen.ts +++ b/src/vs/platform/quickOpen/common/quickOpen.ts @@ -33,7 +33,7 @@ export interface IPickOpenEntry { run?: (context: IEntryRunContext) => void; action?: IAction; payload?: any; - selected?: boolean; + picked?: boolean; } export interface IPickOpenItem { diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index a60af92a262..672f56eb55b 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -1530,12 +1530,12 @@ declare module 'vscode' { detail?: string; /** - * Optional flag indicating if this item is selected initially. + * Optional flag indicating if this item is picked initially. * (Only honored when the picker allows multiple selections.) * - * @see [QuickPickOptions.canSelectMany](#QuickPickOptions.canSelectMany) + * @see [QuickPickOptions.canPickMany](#QuickPickOptions.canPickMany) */ - selected?: boolean; + picked?: boolean; } /** @@ -1565,7 +1565,7 @@ declare module 'vscode' { /** * An optional flag to make the picker accept multiple selections, if true the result is an array of picks. */ - canSelectMany?: boolean; + canPickMany?: boolean; /** * An optional function that is invoked whenever an item is selected. @@ -5083,7 +5083,7 @@ declare module 'vscode' { * @param token A token that can be used to signal cancellation. * @return A promise that resolves to the selected items or `undefined`. */ - export function showQuickPick(items: string[] | Thenable, options: QuickPickOptions & { canSelectMany: true; }, token?: CancellationToken): Thenable; + export function showQuickPick(items: string[] | Thenable, options: QuickPickOptions & { canPickMany: true; }, token?: CancellationToken): Thenable; /** * Shows a selection list. @@ -5103,7 +5103,7 @@ declare module 'vscode' { * @param token A token that can be used to signal cancellation. * @return A promise that resolves to the selected items or `undefined`. */ - export function showQuickPick(items: T[] | Thenable, options: QuickPickOptions & { canSelectMany: true; }, token?: CancellationToken): Thenable; + export function showQuickPick(items: T[] | Thenable, options: QuickPickOptions & { canPickMany: true; }, token?: CancellationToken): Thenable; /** * Shows a selection list. diff --git a/src/vs/workbench/api/node/extHostQuickOpen.ts b/src/vs/workbench/api/node/extHostQuickOpen.ts index 832853988d2..d2f5e8bbaec 100644 --- a/src/vs/workbench/api/node/extHostQuickOpen.ts +++ b/src/vs/workbench/api/node/extHostQuickOpen.ts @@ -45,7 +45,7 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape { matchOnDescription: options && options.matchOnDescription, matchOnDetail: options && options.matchOnDetail, ignoreFocusLost: options && options.ignoreFocusOut, - canSelectMany: options && options.canSelectMany + canSelectMany: options && options.canPickMany }); const promise = TPromise.any([]>[quickPickWidget, itemsPromise]).then(values => { @@ -62,7 +62,7 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape { let label: string; let description: string; let detail: string; - let selected: boolean; + let picked: boolean; if (typeof item === 'string') { label = item; @@ -70,14 +70,14 @@ export class ExtHostQuickOpen implements ExtHostQuickOpenShape { label = item.label; description = item.description; detail = item.detail; - selected = item.selected; + picked = item.picked; } pickItems.push({ label, description, handle, detail, - selected + picked }); } diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.css b/src/vs/workbench/browser/parts/quickinput/quickInput.css index ef10d0f6b9c..5ed9b89215f 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.css +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.css @@ -17,7 +17,7 @@ padding: 6px 6px 4px 6px; } -.quick-input-select-all { +.quick-input-check-all { align-self: center; margin: 0; } diff --git a/src/vs/workbench/browser/parts/quickinput/quickInput.ts b/src/vs/workbench/browser/parts/quickinput/quickInput.ts index 6752ef161c8..99bb1ed715b 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInput.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInput.ts @@ -42,7 +42,7 @@ export class QuickInputService extends Component implements IQuickInputService { private layoutDimensions: Dimension; private container: HTMLElement; - private selectAll: HTMLInputElement; + private checkAll: HTMLInputElement; private inputBox: QuickInputBox; private count: CountBadge; private ready = false; @@ -76,11 +76,11 @@ export class QuickInputService extends Component implements IQuickInputService { const headerContainer = dom.append(this.container, $('.quick-input-header')); - this.selectAll = dom.append(headerContainer, $('input.quick-input-select-all')); - this.selectAll.type = 'checkbox'; - this.toUnbind.push(dom.addStandardDisposableListener(this.selectAll, dom.EventType.CHANGE, e => { - const checked = this.selectAll.checked; - this.checkboxList.setAllVisibleSelected(checked); + this.checkAll = dom.append(headerContainer, $('input.quick-input-check-all')); + this.checkAll.type = 'checkbox'; + this.toUnbind.push(dom.addStandardDisposableListener(this.checkAll, dom.EventType.CHANGE, e => { + const checked = this.checkAll.checked; + this.checkboxList.setAllVisibleChecked(checked); })); const filterContainer = dom.append(headerContainer, $('.quick-input-filter')); @@ -112,7 +112,7 @@ export class QuickInputService extends Component implements IQuickInputService { ok.textContent = localize('ok', "OK"); this.toUnbind.push(dom.addDisposableListener(ok, dom.EventType.CLICK, e => { if (this.ready) { - this.close(this.checkboxList.getSelectedElements()); + this.close(this.checkboxList.getCheckedElements()); } })); @@ -122,10 +122,10 @@ export class QuickInputService extends Component implements IQuickInputService { this.checkboxList = this.instantiationService.createInstance(QuickInputCheckboxList, this.container); this.toUnbind.push(this.checkboxList); - this.toUnbind.push(this.checkboxList.onAllVisibleSelectedChanged(allSelected => { - this.selectAll.checked = allSelected; + this.toUnbind.push(this.checkboxList.onAllVisibleCheckedChanged(checked => { + this.checkAll.checked = checked; })); - this.toUnbind.push(this.checkboxList.onSelectedCountChanged(count => { + this.toUnbind.push(this.checkboxList.onCheckedCountChanged(count => { this.count.setCount(count); })); this.toUnbind.push(this.checkboxList.onLeave(() => { @@ -162,7 +162,7 @@ export class QuickInputService extends Component implements IQuickInputService { case KeyCode.Enter: if (this.ready) { dom.EventHelper.stop(e, true); - this.close(this.checkboxList.getSelectedElements()); + this.close(this.checkboxList.getCheckedElements()); } break; case KeyCode.Escape: @@ -211,8 +211,8 @@ export class QuickInputService extends Component implements IQuickInputService { this.ready = false; this.checkboxList.setElements([]); - this.selectAll.checked = this.checkboxList.getAllVisibleSelected(); - this.count.setCount(this.checkboxList.getSelectedCount()); + this.checkAll.checked = this.checkboxList.getAllVisibleChecked(); + this.count.setCount(this.checkboxList.getCheckedCount()); this.container.style.display = null; this.updateLayout(); @@ -240,8 +240,8 @@ export class QuickInputService extends Component implements IQuickInputService { this.checkboxList.setElements(elements); this.checkboxList.filter(this.inputBox.value); - this.selectAll.checked = this.checkboxList.getAllVisibleSelected(); - this.count.setCount(this.checkboxList.getSelectedCount()); + this.checkAll.checked = this.checkboxList.getAllVisibleChecked(); + this.count.setCount(this.checkboxList.getCheckedCount()); this.updateLayout(); }).then(null, reason => this.close(TPromise.wrapError(reason))); diff --git a/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts b/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts index 079c5dd4ea0..c837af9458e 100644 --- a/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts +++ b/src/vs/workbench/browser/parts/quickinput/quickInputCheckboxList.ts @@ -25,57 +25,57 @@ import { memoize } from 'vs/base/common/decorators'; const $ = dom.$; -interface ISelectableElement { +interface ICheckableElement { index: number; item: IPickOpenEntry; - selected: boolean; + checked: boolean; } -class SelectableElement implements ISelectableElement { +class CheckableElement implements ICheckableElement { index: number; item: IPickOpenEntry; shouldAlwaysShow = false; hidden = false; - private _onSelected = new Emitter(); - onSelected = this._onSelected.event; - _selected: boolean; - get selected() { - return this._selected; + private _onChecked = new Emitter(); + onChecked = this._onChecked.event; + _checked: boolean; + get checked() { + return this._checked; } - set selected(value: boolean) { - if (value !== this._selected) { - this._selected = value; - this._onSelected.fire(value); + set checked(value: boolean) { + if (value !== this._checked) { + this._checked = value; + this._onChecked.fire(value); } } labelHighlights?: IMatch[]; descriptionHighlights?: IMatch[]; detailHighlights?: IMatch[]; - constructor(init: ISelectableElement) { + constructor(init: ICheckableElement) { assign(this, init); } } -interface ISelectedElementTemplateData { +interface ICheckableElementTemplateData { checkbox: HTMLInputElement; label: IconLabel; detail: HighlightedLabel; - element: SelectableElement; + element: CheckableElement; toDisposeElement: IDisposable[]; toDisposeTemplate: IDisposable[]; } -class SelectedElementRenderer implements IRenderer { +class CheckableElementRenderer implements IRenderer { - static readonly ID = 'selectedelement'; + static readonly ID = 'checkableelement'; get templateId() { - return SelectedElementRenderer.ID; + return CheckableElementRenderer.ID; } - renderTemplate(container: HTMLElement): ISelectedElementTemplateData { - const data: ISelectedElementTemplateData = Object.create(null); + renderTemplate(container: HTMLElement): ICheckableElementTemplateData { + const data: ICheckableElementTemplateData = Object.create(null); const entry = dom.append(container, $('.quick-input-checkbox-list-entry')); const label = dom.append(entry, $('label.quick-input-checkbox-list-label')); @@ -86,7 +86,7 @@ class SelectedElementRenderer implements IRenderer { - data.element.selected = data.checkbox.checked; + data.element.checked = data.checkbox.checked; })); const rows = dom.append(label, $('.quick-input-checkbox-list-rows')); @@ -103,11 +103,11 @@ class SelectedElementRenderer implements IRenderer data.checkbox.checked = selected)); + data.checkbox.checked = element.checked; + data.toDisposeElement.push(element.onChecked(checked => data.checkbox.checked = checked)); const { labelHighlights, descriptionHighlights, detailHighlights } = element; @@ -122,34 +122,34 @@ class SelectedElementRenderer implements IRenderer { +class CheckableElementDelegate implements IDelegate { - getHeight(element: SelectableElement): number { + getHeight(element: CheckableElement): number { return element.item.detail ? 44 : 22; } - getTemplateId(element: SelectableElement): string { - return SelectedElementRenderer.ID; + getTemplateId(element: CheckableElement): string { + return CheckableElementRenderer.ID; } } export class QuickInputCheckboxList { private container: HTMLElement; - private list: WorkbenchList; - private elements: SelectableElement[] = []; + private list: WorkbenchList; + private elements: CheckableElement[] = []; matchOnDescription = false; matchOnDetail = false; - private _onAllVisibleSelectedChanged = new Emitter(); // TODO: Debounce - onAllVisibleSelectedChanged: Event = this._onAllVisibleSelectedChanged.event; - private _onSelectedCountChanged = new Emitter(); // TODO: Debounce - onSelectedCountChanged: Event = this._onSelectedCountChanged.event; + private _onAllVisibleCheckedChanged = new Emitter(); // TODO: Debounce + onAllVisibleCheckedChanged: Event = this._onAllVisibleCheckedChanged.event; + private _onCheckedCountChanged = new Emitter(); // TODO: Debounce + onCheckedCountChanged: Event = this._onCheckedCountChanged.event; private _onLeave = new Emitter(); onLeave: Event = this._onLeave.event; private elementDisposables: IDisposable[] = []; @@ -160,11 +160,11 @@ export class QuickInputCheckboxList { @IInstantiationService private instantiationService: IInstantiationService ) { this.container = dom.append(this.parent, $('.quick-input-checkbox-list')); - const delegate = new SelectedElementDelegate(); - this.list = this.instantiationService.createInstance(WorkbenchList, this.container, delegate, [new SelectedElementRenderer()], { + const delegate = new CheckableElementDelegate(); + this.list = this.instantiationService.createInstance(WorkbenchList, this.container, delegate, [new CheckableElementRenderer()], { identityProvider: element => element.label, multipleSelectionSupport: false - }) as WorkbenchList; + }) as WorkbenchList; this.disposables.push(this.list); this.disposables.push(this.list.onKeyDown(e => { const event = new StandardKeyboardEvent(e); @@ -193,40 +193,40 @@ export class QuickInputCheckboxList { return mapEvent(this.list.onFocusChange, e => e.elements.map(e => e.item)); } - getAllVisibleSelected() { - return !this.elements.some(element => !element.hidden && !element.selected); + getAllVisibleChecked() { + return !this.elements.some(element => !element.hidden && !element.checked); } - getSelectedCount() { - return this.getSelectedElements().length; + getCheckedCount() { + return this.getCheckedElements().length; } - setAllVisibleSelected(select: boolean) { + setAllVisibleChecked(checked: boolean) { this.elements.forEach(element => { if (!element.hidden) { - element.selected = select; + element.checked = checked; } }); } setElements(elements: IPickOpenEntry[]): void { this.elementDisposables = dispose(this.elementDisposables); - this.elements = elements.map((item, index) => new SelectableElement({ + this.elements = elements.map((item, index) => new CheckableElement({ index, item, - selected: !!item.selected + checked: !!item.picked })); - this.elementDisposables.push(...this.elements.map(element => element.onSelected(() => { - this._onAllVisibleSelectedChanged.fire(this.getAllVisibleSelected()); - this._onSelectedCountChanged.fire(this.getSelectedCount()); + this.elementDisposables.push(...this.elements.map(element => element.onChecked(() => { + this._onAllVisibleCheckedChanged.fire(this.getAllVisibleChecked()); + this._onCheckedCountChanged.fire(this.getCheckedCount()); }))); this.list.splice(0, this.list.length, this.elements); this.list.setSelection([]); this.list.focusFirst(); } - getSelectedElements() { - return this.elements.filter(e => e.selected) + getCheckedElements() { + return this.elements.filter(e => e.checked) .map(e => e.item); } @@ -290,13 +290,13 @@ export class QuickInputCheckboxList { this.list.focusFirst(); this.list.layout(); - this._onAllVisibleSelectedChanged.fire(this.getAllVisibleSelected()); + this._onAllVisibleCheckedChanged.fire(this.getAllVisibleChecked()); } toggleCheckbox() { const elements = this.list.getFocusedElements(); for (const element of elements) { - element.selected = !element.selected; + element.checked = !element.checked; } } @@ -306,7 +306,7 @@ export class QuickInputCheckboxList { } } -function compareEntries(elementA: SelectableElement, elementB: SelectableElement, lookFor: string): number { +function compareEntries(elementA: CheckableElement, elementB: CheckableElement, lookFor: string): number { const labelHighlightsA = elementA.labelHighlights || []; const labelHighlightsB = elementB.labelHighlights || [];