mirror of
https://github.com/microsoft/vscode.git
synced 2026-02-28 21:55:54 +00:00
118 lines
3.0 KiB
TypeScript
118 lines
3.0 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
'use strict';
|
|
|
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
|
import { TPromise } from 'vs/base/common/winjs.base';
|
|
import { CancellationToken } from 'vs/base/common/cancellation';
|
|
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
|
|
|
|
export interface IPickOpenEntry {
|
|
id?: string;
|
|
label: string;
|
|
description?: string;
|
|
detail?: string;
|
|
picked?: boolean;
|
|
}
|
|
|
|
export interface IQuickNavigateConfiguration {
|
|
keybindings: ResolvedKeybinding[];
|
|
}
|
|
|
|
export interface IPickOptions {
|
|
|
|
/**
|
|
* an optional string to show as place holder in the input box to guide the user what she picks on
|
|
*/
|
|
placeHolder?: string;
|
|
|
|
/**
|
|
* an optional flag to include the description when filtering the picks
|
|
*/
|
|
matchOnDescription?: boolean;
|
|
|
|
/**
|
|
* an optional flag to include the detail when filtering the picks
|
|
*/
|
|
matchOnDetail?: boolean;
|
|
|
|
/**
|
|
* an optional flag to not close the picker on focus lost
|
|
*/
|
|
ignoreFocusLost?: boolean;
|
|
|
|
/**
|
|
* an optional flag to make this picker multi-select
|
|
*/
|
|
canPickMany?: boolean;
|
|
}
|
|
|
|
export interface IInputOptions {
|
|
|
|
/**
|
|
* the value to prefill in the input box
|
|
*/
|
|
value?: string;
|
|
|
|
/**
|
|
* the selection of value, default to the whole word
|
|
*/
|
|
valueSelection?: [number, number];
|
|
|
|
/**
|
|
* the text to display underneath the input box
|
|
*/
|
|
prompt?: string;
|
|
|
|
/**
|
|
* an optional string to show as place holder in the input box to guide the user what to type
|
|
*/
|
|
placeHolder?: string;
|
|
|
|
/**
|
|
* set to true to show a password prompt that will not show the typed value
|
|
*/
|
|
password?: boolean;
|
|
|
|
ignoreFocusLost?: boolean;
|
|
|
|
/**
|
|
* an optional function that is used to validate user input.
|
|
*/
|
|
validateInput?: (input: string) => TPromise<string>;
|
|
}
|
|
|
|
export interface IQuickInput {
|
|
|
|
/**
|
|
* Opens the quick input box for selecting items and returns a promise with the user selected item(s) if any.
|
|
*/
|
|
pick<T extends IPickOpenEntry, O extends IPickOptions>(picks: TPromise<T[]>, options?: O, token?: CancellationToken): TPromise<O extends { canPickMany: true } ? T[] : T>;
|
|
|
|
/**
|
|
* Opens the quick input box for text input and returns a promise with the user typed value if any.
|
|
*/
|
|
input(options?: IInputOptions, token?: CancellationToken): TPromise<string>;
|
|
}
|
|
|
|
export const IQuickInputService = createDecorator<IQuickInputService>('quickInputService');
|
|
|
|
export interface IQuickInputService extends IQuickInput {
|
|
|
|
_serviceBrand: any;
|
|
|
|
multiStepInput<T>(handler: (input: IQuickInput, token: CancellationToken) => Thenable<T>, token?: CancellationToken): Thenable<T>;
|
|
|
|
focus(): void;
|
|
|
|
toggle(): void;
|
|
|
|
navigate(next: boolean, quickNavigate?: IQuickNavigateConfiguration): void;
|
|
|
|
accept(): TPromise<void>;
|
|
|
|
cancel(): TPromise<void>;
|
|
}
|