Skip to content

Commit

Permalink
Action bar (microsoft#49340)
Browse files Browse the repository at this point in the history
  • Loading branch information
chrmarti committed Jun 13, 2018
1 parent 0afdd85 commit f4b89e0
Show file tree
Hide file tree
Showing 7 changed files with 192 additions and 92 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,15 @@ suite('window namespace tests', () => {
]);
});

test('showInputBox - value not empty on second try', async function () {
const one = window.showInputBox({ value: 'notempty' });
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
assert.equal(await one, 'notempty');
const two = window.showInputBox({ value: 'notempty' });
await commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem');
assert.equal(await two, 'notempty');
});


test('showQuickPick, accept first', async function () {
const pick = window.showQuickPick(['eins', 'zwei', 'drei']);
Expand Down
5 changes: 2 additions & 3 deletions src/vs/platform/quickinput/common/quickInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { CancellationToken } from 'vs/base/common/cancellation';
import { ResolvedKeybinding } from 'vs/base/common/keyCodes';
import URI from 'vs/base/common/uri';
import { ThemeIcon } from 'vs/platform/theme/common/themeService';
import { Event } from 'vs/base/common/event';

export interface IQuickPickItem {
Expand Down Expand Up @@ -117,7 +116,7 @@ export interface IQuickPick extends IQuickInput {

buttons: ReadonlyArray<IQuickInputButton>;

readonly onDidTriggerCommand: Event<IQuickInputButton>;
readonly onDidTriggerButton: Event<IQuickInputButton>;

items: ReadonlyArray<IQuickPickItem>;

Expand Down Expand Up @@ -160,7 +159,7 @@ export interface IInputBox extends IQuickInput {
}

export interface IQuickInputButton {
iconPath: string | URI | { light: string | URI; dark: string | URI } | ThemeIcon;
iconPath: { dark: URI; light?: URI; };
tooltip?: string | undefined;
}

Expand Down
31 changes: 22 additions & 9 deletions src/vs/workbench/api/electron-browser/mainThreadQuickOpen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,18 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { asWinJsPromise } from 'vs/base/common/async';
import { IPickOptions, IInputOptions, IQuickInputService, IQuickInput } from 'vs/platform/quickinput/common/quickInput';
import { InputBoxOptions } from 'vscode';
import { ExtHostContext, MainThreadQuickOpenShape, ExtHostQuickOpenShape, MyQuickPickItems, MainContext, IExtHostContext, TransferQuickInput } from '../node/extHost.protocol';
import { ExtHostContext, MainThreadQuickOpenShape, ExtHostQuickOpenShape, TransferQuickPickItems, MainContext, IExtHostContext, TransferQuickInput, TransferQuickInputButton } from 'vs/workbench/api/node/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import URI from 'vs/base/common/uri';

@extHostNamedCustomer(MainContext.MainThreadQuickOpen)
export class MainThreadQuickOpen implements MainThreadQuickOpenShape {

private _proxy: ExtHostQuickOpenShape;
private _quickInputService: IQuickInputService;
private _doSetItems: (items: MyQuickPickItems[]) => any;
private _doSetItems: (items: TransferQuickPickItems[]) => any;
private _doSetError: (error: Error) => any;
private _contents: TPromise<MyQuickPickItems[]>;
private _contents: TPromise<TransferQuickPickItems[]>;
private _token: number = 0;

constructor(
Expand All @@ -35,7 +36,7 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape {
$show(options: IPickOptions): TPromise<number | number[]> {
const myToken = ++this._token;

this._contents = new TPromise<MyQuickPickItems[]>((c, e) => {
this._contents = new TPromise<TransferQuickPickItems[]>((c, e) => {
this._doSetItems = (items) => {
if (myToken === this._token) {
c(items);
Expand All @@ -57,7 +58,7 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape {
return undefined;
}, undefined, progress => {
if (progress) {
this._proxy.$onItemSelected((<MyQuickPickItems>progress).handle);
this._proxy.$onItemSelected((<TransferQuickPickItems>progress).handle);
}
});
} else {
Expand All @@ -68,13 +69,13 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape {
return undefined;
}, undefined, progress => {
if (progress) {
this._proxy.$onItemSelected((<MyQuickPickItems>progress).handle);
this._proxy.$onItemSelected((<TransferQuickPickItems>progress).handle);
}
});
}
}

$setItems(items: MyQuickPickItems[]): TPromise<any> {
$setItems(items: TransferQuickPickItems[]): TPromise<any> {
if (this._doSetItems) {
this._doSetItems(items);
}
Expand Down Expand Up @@ -125,10 +126,13 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape {
this._proxy.$onDidAccept(sessionId);
});
input.onDidChangeActive(items => {
this._proxy.$onDidChangeActive(sessionId, items.map(item => (item as MyQuickPickItems).handle));
this._proxy.$onDidChangeActive(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
});
input.onDidChangeSelection(items => {
this._proxy.$onDidChangeSelection(sessionId, items.map(item => (item as MyQuickPickItems).handle));
this._proxy.$onDidChangeSelection(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
});
input.onDidTriggerButton(button => {
this._proxy.$onDidTriggerButton(sessionId, (button as TransferQuickInputButton).handle);
});
session = input;
} else {
Expand All @@ -150,6 +154,15 @@ export class MainThreadQuickOpen implements MainThreadQuickOpenShape {
} else {
session.hide();
}
} else if (param === 'buttons') {
params.buttons.forEach(button => {
const iconPath = button.iconPath;
iconPath.dark = URI.revive(iconPath.dark);
if (iconPath.light) {
iconPath.light = URI.revive(iconPath.light);
}
});
session[param] = params[param];
} else {
session[param] = params[param];
}
Expand Down
22 changes: 11 additions & 11 deletions src/vs/workbench/api/node/extHost.protocol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import * as modes from 'vs/editor/common/modes';
import { IConfigurationData, ConfigurationTarget, IConfigurationModel } from 'vs/platform/configuration/common/configuration';
import { IConfig, IAdapterExecutable, ITerminalSettings } from 'vs/workbench/parts/debug/common/debug';

import { IQuickPickItem, IPickOptions } from 'vs/platform/quickinput/common/quickInput';
import { IQuickPickItem, IPickOptions, IQuickInputButton } from 'vs/platform/quickinput/common/quickInput';
import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles';
import { TextEditorCursorStyle } from 'vs/editor/common/config/editorOptions';
import { EndOfLine, TextEditorLineNumbersStyle } from 'vs/workbench/api/node/extHostTypes';
Expand Down Expand Up @@ -336,7 +336,11 @@ export interface MainThreadTerminalServiceShape extends IDisposable {
$sendProcessExit(terminalId: number, exitCode: number): void;
}

export interface MyQuickPickItems extends IQuickPickItem {
export interface TransferQuickPickItems extends IQuickPickItem {
handle: number;
}

export interface TransferQuickInputButton extends IQuickInputButton {
handle: number;
}

Expand All @@ -363,9 +367,9 @@ export interface TransferQuickPick extends BaseTransferQuickInput {

placeholder?: string;

commands?: TransferQuickInputCommand[];
buttons?: TransferQuickInputButton[];

items?: MyQuickPickItems[];
items?: TransferQuickPickItems[];

canSelectMany?: boolean;

Expand All @@ -386,21 +390,16 @@ export interface TransferInputBox extends BaseTransferQuickInput {

password?: boolean;

commands?: TransferQuickInputCommand[];
buttons?: TransferQuickInputButton[];

prompt?: string;

validationMessage?: string;
}

export interface TransferQuickInputCommand {
iconPath: { light: string; dark: string; };
tooltip?: string | undefined;
}

export interface MainThreadQuickOpenShape extends IDisposable {
$show(options: IPickOptions): TPromise<number | number[]>;
$setItems(items: MyQuickPickItems[]): TPromise<any>;
$setItems(items: TransferQuickPickItems[]): TPromise<any>;
$setError(error: Error): TPromise<any>;
$input(options: vscode.InputBoxOptions, validateInput: boolean): TPromise<string>;
$createOrUpdate(params: TransferQuickInput): TPromise<void>;
Expand Down Expand Up @@ -819,6 +818,7 @@ export interface ExtHostQuickOpenShape {
$onDidChangeActive(sessionId: number, handles: number[]): void;
$onDidChangeSelection(sessionId: number, handles: number[]): void;
$onDidAccept(sessionId: number): void;
$onDidTriggerButton(sessionId: number, handle: number): void;
}

export interface ShellLaunchConfigDto {
Expand Down
Loading

0 comments on commit f4b89e0

Please sign in to comment.