提交 66e66600 编写于 作者: B Benjamin Pasero

quick access - prepare for merge to master

上级 7edc0a4e
......@@ -129,10 +129,6 @@ type Visibilities = {
class QuickInput extends Disposable implements IQuickInput {
private readonly onDidTriggerButtonEmitter = this._register(new Emitter<IQuickInputButton>());
private readonly onDidHideEmitter = this._register(new Emitter<void>());
private readonly onDisposeEmitter = this._register(new Emitter<void>());
private _title: string | undefined;
private _description: string | undefined;
private _steps: number | undefined;
......@@ -144,6 +140,9 @@ class QuickInput extends Disposable implements IQuickInput {
private _ignoreFocusOut = false;
private _buttons: IQuickInputButton[] = [];
private buttonsUpdated = false;
private readonly onDidTriggerButtonEmitter = this._register(new Emitter<IQuickInputButton>());
private readonly onDidHideEmitter = this._register(new Emitter<void>());
private readonly onDisposeEmitter = this._register(new Emitter<void>());
protected readonly visibleDisposables = this._register(new DisposableStore());
......
......@@ -145,10 +145,7 @@ export class QuickInputEditorContribution implements IEditorContribution {
readonly widget = new QuickInputEditorWidget(this.editor);
constructor(private editor: ICodeEditor, @IQuickInputService quickInputService: IQuickInputService) {
// TODO@ben remove me - only for testing
once(editor.onDidFocusEditorText)(() => quickInputService.quickAccess.show(''));
}
constructor(private editor: ICodeEditor) { }
dispose(): void {
this.widget.dispose();
......
......@@ -6,17 +6,15 @@
import * as nls from 'vs/nls';
import { Action } from 'vs/base/common/actions';
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
import { IQuickInputService, IQuickPick, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { ContextKeyExpr, RawContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { ICommandHandler, CommandsRegistry } from 'vs/platform/commands/common/commands';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { Disposable } from 'vs/base/common/lifecycle';
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle';
import { Registry } from 'vs/platform/registry/common/platform';
import { IQuickAccessProvider, IQuickAccessRegistry, Extensions as QuickInputExtensions } from 'vs/platform/quickinput/common/quickAccess';
import { CancellationToken } from 'vs/base/common/cancellation';
const inQuickOpenKey = 'inQuickOpen';
export const InQuickOpenContextKey = new RawContextKey<boolean>(inQuickOpenKey, false);
......@@ -167,8 +165,6 @@ export class LegacyQuickInputQuickOpenController extends Disposable {
super();
this.registerListeners();
setTimeout(() => this.quickInputService.quickAccess.show('?'), 0);
}
private registerListeners(): void {
......@@ -207,30 +203,3 @@ export class LegacyQuickInputQuickOpenController extends Disposable {
}
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(LegacyQuickInputQuickOpenController, LifecyclePhase.Ready);
class SampleQuickAccessProvider implements IQuickAccessProvider {
provide(picker: IQuickPick<IQuickPickItem>, token: CancellationToken): IDisposable {
picker.items = [
{ label: 'Hello World' },
{ label: 'Lorem Ipsum' },
{ label: 'Something Else' }
];
return Disposable.None;
}
}
const quickAccessRegistry = Registry.as<IQuickAccessRegistry>(QuickInputExtensions.Quickaccess);
[''/*, '>', '@', ':', 'edt', 'edt active', 'edt mru', 'view'*/].forEach(prefix => {
const provider = {
ctor: SampleQuickAccessProvider,
prefix,
helpEntries: [{ description: `Sample Provider with prefix ${prefix}`, needsEditor: prefix === '@' || prefix === ':' }]
};
if (!prefix) {
quickAccessRegistry.defaultProvider = provider;
} else {
quickAccessRegistry.registerQuickAccessProvider(provider);
}
});
......@@ -8,15 +8,29 @@ import { IQuickAccessRegistry, Extensions } from 'vs/platform/quickinput/common/
import { Registry } from 'vs/platform/registry/common/platform';
import { HelpQuickAccessProvider } from 'vs/platform/quickinput/browser/helpQuickAccess';
import { ViewQuickAccessProvider, VIEW_QUICK_ACCESS_PREFIX } from 'vs/workbench/contrib/quickaccess/browser/viewQuickAccess';
import { QUICK_ACCESS_COMMAND_ID } from 'vs/workbench/contrib/quickaccess/browser/quickAccessCommands';
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess).registerQuickAccessProvider({
const helpQuickAccessProvider = {
ctor: HelpQuickAccessProvider,
prefix: '?',
helpEntries: [{ description: localize('helpQuickAccess', "Show all Quick Access Providers"), needsEditor: false }]
});
};
Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess).registerQuickAccessProvider(helpQuickAccessProvider);
Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess).defaultProvider = helpQuickAccessProvider;
Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess).registerQuickAccessProvider({
ctor: ViewQuickAccessProvider,
prefix: VIEW_QUICK_ACCESS_PREFIX,
helpEntries: [{ description: localize('viewQuickAccess', "Open View"), needsEditor: false }]
});
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
command: {
id: QUICK_ACCESS_COMMAND_ID, title: {
value: localize('openQuickAccess', "Open Quick Access"), original: 'Open Quick Access'
},
category: localize('quickAccess', "Quick Access")
}
});
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
export const QUICK_ACCESS_COMMAND_ID = 'workbench.action.openQuickAccess';
CommandsRegistry.registerCommand({
id: QUICK_ACCESS_COMMAND_ID,
handler: async function (accessor: ServicesAccessor, prefix: string | null = null) {
const quickInputService = accessor.get(IQuickInputService);
quickInputService.quickAccess.show(typeof prefix === 'string' ? prefix : undefined);
},
description: {
description: `Quick access`,
args: [{
name: 'prefix',
schema: {
'type': 'string'
}
}]
}
});
......@@ -83,6 +83,7 @@ suite('QuickAccess', () => {
}
}
const defaultProviderDescriptor = { ctor: TestProvider1, prefix: '', helpEntries: [] };
const providerDescriptor1 = { ctor: TestProvider1, prefix: 'test', helpEntries: [] };
const providerDescriptor2 = { ctor: TestProvider2, prefix: 'test something', helpEntries: [] };
const providerDescriptor3 = { ctor: TestProvider3, prefix: 'default', helpEntries: [] };
......@@ -95,6 +96,8 @@ suite('QuickAccess', () => {
test('registry', () => {
const registry = (Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess));
registry.defaultProvider = defaultProviderDescriptor;
const initialSize = registry.getQuickAccessProviders().length;
const disposable = registry.registerQuickAccessProvider(providerDescriptor1);
......
......@@ -102,12 +102,12 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { IDiffEditor } from 'vs/editor/common/editorCommon';
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { QuickInputService } from 'vs/workbench/services/quickinput/browser/quickInputService';
import { IListService } from 'vs/platform/list/browser/listService';
export import TestTextResourcePropertiesService = CommonWorkbenchTestServices.TestTextResourcePropertiesService;
export import TestContextService = CommonWorkbenchTestServices.TestContextService;
export import TestStorageService = CommonWorkbenchTestServices.TestStorageService;
export import TestWorkingCopyService = CommonWorkbenchTestServices.TestWorkingCopyService;
import { IListService } from 'vs/platform/list/browser/listService';
export function createFileEditorInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput {
return instantiationService.createInstance(FileEditorInput, resource, undefined, undefined);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册