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

indicate preview state in editor picker

上级 e8d94213
......@@ -106,6 +106,13 @@ export class QuickOpenEntry {
return null;
}
/**
* Extra CSS class name to add to the quick open entry to do custom styling of entries.
*/
public getExtraClass(): string {
return null;
}
/**
* Allows to reuse the same model while filtering. Hidden entries will not show up in the viewer.
*/
......@@ -402,6 +409,10 @@ export class QuickOpenEntryGroup extends QuickOpenEntry {
return this.entry ? this.entry.getHighlights() : super.getHighlights();
}
public getExtraClass(): string {
return this.entry ? this.entry.getExtraClass() : super.getExtraClass();
}
public isHidden(): boolean {
return this.entry ? this.entry.isHidden() : super.isHidden();
}
......@@ -463,6 +474,7 @@ class NoActionProvider implements IActionProvider {
export interface IQuickOpenEntryTemplateData {
container: HTMLElement;
entry: HTMLElement;
icon: HTMLSpanElement;
prefix: HTMLSpanElement;
label: HighlightedLabel;
......@@ -569,6 +581,7 @@ class Renderer implements IRenderer<QuickOpenEntry> {
return {
container,
entry,
icon,
prefix,
label,
......@@ -628,6 +641,14 @@ class Renderer implements IRenderer<QuickOpenEntry> {
if (entry instanceof QuickOpenEntry) {
let [labelHighlights, descriptionHighlights, detailHighlights] = entry.getHighlights();
// Extra Class
let extraClass = entry.getExtraClass();
if (extraClass) {
DOM.addClass(data.entry, extraClass);
} else {
data.entry.className = 'quick-open-entry';
}
// Icon
let iconClass = entry.getIcon() ? ('quick-open-entry-icon ' + entry.getIcon()) : '';
data.icon.className = iconClass;
......@@ -656,6 +677,7 @@ class Renderer implements IRenderer<QuickOpenEntry> {
data.actionBar.dispose();
data.actionBar = null;
data.container = null;
data.entry = null;
data.description.dispose();
data.description = null;
data.detail.dispose();
......
......@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import 'vs/css!./media/editorPicker';
import {TPromise} from 'vs/base/common/winjs.base';
import nls = require('vs/nls');
import labels = require('vs/base/common/labels');
......@@ -18,9 +19,10 @@ import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/edito
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
import {EditorInput, asFileEditorInput} from 'vs/workbench/common/editor';
import {IEditorGroup} from 'vs/workbench/common/editor/editorStacksModel';
import {IEditorGroup, IEditorStacksModel} from 'vs/workbench/common/editor/editorStacksModel';
export class EditorPickerEntry extends QuickOpenEntryGroup {
private stacks: IEditorStacksModel;
constructor(
private editor: EditorInput,
......@@ -28,6 +30,8 @@ export class EditorPickerEntry extends QuickOpenEntryGroup {
@IWorkbenchEditorService private editorService: IWorkbenchEditorService
) {
super();
this.stacks = editorService.getStacksModel();
}
public getPrefix(): string {
......@@ -60,6 +64,10 @@ export class EditorPickerEntry extends QuickOpenEntryGroup {
return this.editor.getDescription();
}
public getExtraClass(): string {
return this._group.isPreview(this.editor) ? 'editor-preview' : '';
}
public run(mode: Mode, context: IContext): boolean {
if (mode === Mode.OPEN) {
return this.runOpen(context);
......@@ -69,7 +77,7 @@ export class EditorPickerEntry extends QuickOpenEntryGroup {
}
private runOpen(context: IContext): boolean {
this.editorService.openEditor(this.editor, null, this.editorService.getStacksModel().positionOfGroup(this.group)).done(null, errors.onUnexpectedError);
this.editorService.openEditor(this.editor, null, this.stacks.positionOfGroup(this.group)).done(null, errors.onUnexpectedError);
return true;
}
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
.monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry.editor-preview {
font-style: italic;
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册