提交 b904d13d 编写于 作者: B Benjamin Pasero

allow to always show a pick entry even when the user searches (for #5073)

上级 c815f7e3
......@@ -289,13 +289,13 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
// Model
let model = new QuickOpenModel();
let entries = picks.map((e) => {
let entries = picks.map(e => {
let entry = (<IPickOpenEntryItem>e);
if (entry.height && entry.render) {
return new PickOpenItem(entry.label, entry.description, entry.height, entry.render.bind(entry), () => progress(e));
return new PickOpenItem(entry.label, entry.description, entry.height, entry.render.bind(entry), () => progress(e), entry.alwaysShow);
}
return new PickOpenEntry(entry.label, entry.description, entry.detail, () => progress(e), entry.separator && entry.separator.border, entry.separator && entry.separator.label);
return new PickOpenEntry(entry.label, entry.description, entry.detail, () => progress(e), entry.separator && entry.separator.border, entry.separator && entry.separator.label, entry.alwaysShow);
});
if (picks.length === 0) {
......@@ -346,7 +346,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
// Reset filtering
if (!value) {
entries.forEach((e) => {
entries.forEach(e => {
e.setHighlights(null);
e.setHidden(false);
});
......@@ -354,12 +354,12 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
// Filter by value
else {
entries.forEach((entry) => {
entries.forEach(entry => {
let labelHighlights = filters.matchesFuzzy(value, entry.getLabel());
let descriptionHighlights = options.matchOnDescription && filters.matchesFuzzy(value, entry.getDescription());
let detailHighlights = options.matchOnDetail && entry.getDetail() && filters.matchesFuzzy(value, entry.getDetail());
if (labelHighlights || descriptionHighlights || detailHighlights) {
if (entry.shouldAlwaysShow() || labelHighlights || descriptionHighlights || detailHighlights) {
entry.setHighlights(labelHighlights, descriptionHighlights, detailHighlights);
entry.setHidden(false);
} else {
......@@ -441,7 +441,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
this.previousValue = prefix;
let promiseCompletedOnHide = new TPromise<void>((c) => {
let promiseCompletedOnHide = new TPromise<void>(c => {
this.promisesToCompleteOnHide.push(c);
});
......@@ -660,13 +660,13 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
// Resolve all default handlers
let resolvePromises: TPromise<QuickOpenHandler>[] = [];
defaultHandlers.forEach((defaultHandler) => {
defaultHandlers.forEach(defaultHandler => {
resolvePromises.push(this.resolveHandler(defaultHandler));
});
return TPromise.join(resolvePromises).then((resolvedHandlers: QuickOpenHandler[]) => {
let resultPromises: TPromise<void>[] = [];
resolvedHandlers.forEach((resolvedHandler) => {
resolvedHandlers.forEach(resolvedHandler => {
// Return early if the handler can not run in the current environment
let canRun = resolvedHandler.canRun();
......@@ -675,7 +675,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
}
// Receive Results from Handler and apply
resultPromises.push(resolvedHandler.getResults(value).then((result) => {
resultPromises.push(resolvedHandler.getResults(value).then(result => {
if (this.currentResultToken === currentResultToken) {
let handlerResults = result && result.entries;
......@@ -788,7 +788,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
}
// Receive Results from Handler and apply
return resolvedHandler.getResults(value).then((result) => {
return resolvedHandler.getResults(value).then(result => {
if (this.currentResultToken === currentResultToken) {
if (!result || !result.entries.length) {
const model = new QuickOpenModel([new PlaceholderQuickOpenEntry(resolvedHandler.getEmptyLabel(value))]);
......@@ -891,7 +891,15 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
private description: string;
private detail: string;
constructor(label: string, description?: string, detail?: string, private onPreview?: () => void, private hasSeparator?: boolean, private separatorLabel?: string) {
constructor(
label: string,
description?: string,
detail?: string,
private onPreview?: () => void,
private hasSeparator?: boolean,
private separatorLabel?: string,
private alwaysShow?: boolean
) {
super(label);
this.description = description;
......@@ -918,6 +926,10 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
return this.separatorLabel;
}
public shouldAlwaysShow(): boolean {
return this.alwaysShow;
}
public run(mode: Mode, context: IEntryRunContext): boolean {
if (mode === Mode.OPEN) {
this._shouldRunWithContext = context;
......@@ -936,7 +948,14 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
class PickOpenItem extends QuickOpenEntryItem {
private _shouldRunWithContext: IEntryRunContext;
constructor(private label: string, private description: string, private height: number, private renderFn: (tree: ITree, container: HTMLElement, previousCleanupFn: IElementCallback) => IElementCallback, private onPreview?: () => void) {
constructor(
private label: string,
private description: string,
private height: number,
private renderFn: (tree: ITree, container: HTMLElement, previousCleanupFn: IElementCallback) => IElementCallback,
private onPreview?: () => void,
private alwaysShow?: boolean
) {
super();
}
......@@ -960,6 +979,10 @@ class PickOpenItem extends QuickOpenEntryItem {
return this.description;
}
public shouldAlwaysShow(): boolean {
return this.alwaysShow;
}
public run(mode: Mode, context: IEntryRunContext): boolean {
if (mode === Mode.OPEN) {
this._shouldRunWithContext = context;
......
......@@ -71,6 +71,7 @@ class SelectThemeAction extends Action {
id: 'themes.findmore',
label: localize('findMore', "Find more in the Marketplace..."),
separator: { border: true },
alwaysShow: true,
run
});
}
......
......@@ -15,6 +15,7 @@ export interface IPickOpenEntry {
description?: string;
detail?: string;
separator?: ISeparator;
alwaysShow?: boolean;
run?: (context: IEntryRunContext) => void;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册