提交 15b00390 编写于 作者: J Johannes Rieken

breadcrumbs - selecting a folder opens next picker

上级 fe974a45
......@@ -232,6 +232,10 @@ export class BreadcrumbsWidget {
this._onDidSelectItem.fire({ type: 'select', item: this._items[this._selectedItemIdx], node: this._nodes[this._selectedItemIdx], payload });
}
getItems(): ReadonlyArray<BreadcrumbsItem> {
return this._items;
}
setItems(items: BreadcrumbsItem[]): void {
let prefix = commonPrefixLength(this._items, items, (a, b) => a.equals(b));
let removed = this._items.splice(prefix, this._items.length - prefix, ...items.slice(prefix));
......
......@@ -6,36 +6,35 @@
'use strict';
import * as dom from 'vs/base/browser/dom';
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
import { BreadcrumbsItem, BreadcrumbsWidget, IBreadcrumbsItemEvent } from 'vs/base/browser/ui/breadcrumbs/breadcrumbsWidget';
import { IconLabel } from 'vs/base/browser/ui/iconLabel/iconLabel';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { dispose, IDisposable, combinedDisposable } from 'vs/base/common/lifecycle';
import { isEqual, basenameOrAuthority } from 'vs/base/common/resources';
import URI from 'vs/base/common/uri';
import { combinedDisposable, dispose, IDisposable } from 'vs/base/common/lifecycle';
import { Schemas } from 'vs/base/common/network';
import { basenameOrAuthority, isEqual } from 'vs/base/common/resources';
import 'vs/css!./media/breadcrumbscontrol';
import { ICodeEditor, isCodeEditor } from 'vs/editor/browser/editorBrowser';
import { Range } from 'vs/editor/common/core/range';
import { symbolKindToCssClass } from 'vs/editor/common/modes';
import { OutlineElement, OutlineGroup, OutlineModel, TreeElement } from 'vs/editor/contrib/documentSymbols/outlineModel';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
import { FileKind, IFileService } from 'vs/platform/files/common/files';
import { IConstructorSignature1, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
import { attachBreadcrumbsStyler } from 'vs/platform/theme/common/styler';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { FileLabel } from 'vs/workbench/browser/labels';
import { BreadcrumbsConfig, IBreadcrumbsService } from 'vs/workbench/browser/parts/editor/breadcrumbs';
import { BreadcrumbElement, EditorBreadcrumbsModel, FileElement } from 'vs/workbench/browser/parts/editor/breadcrumbsModel';
import { BreadcrumbsFilePicker, BreadcrumbsOutlinePicker, BreadcrumbsPicker } from 'vs/workbench/browser/parts/editor/breadcrumbsPicker';
import { EditorGroupView } from 'vs/workbench/browser/parts/editor/editorGroupView';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { IEditorGroupsService } from 'vs/workbench/services/group/common/editorGroupsService';
import { IBreadcrumbsService, BreadcrumbsConfig } from 'vs/workbench/browser/parts/editor/breadcrumbs';
import { symbolKindToCssClass } from 'vs/editor/common/modes';
import { BreadcrumbsPicker, BreadcrumbsFilePicker, BreadcrumbsOutlinePicker } from 'vs/workbench/browser/parts/editor/breadcrumbsPicker';
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
import { Schemas } from 'vs/base/common/network';
class Item extends BreadcrumbsItem {
......@@ -245,7 +244,7 @@ export class BreadcrumbsControl {
// reveal the item
this._widget.setFocused(undefined);
this._widget.setSelection(undefined);
this._revealInEditor(element);
this._revealInEditor(event, element);
return;
}
......@@ -271,9 +270,7 @@ export class BreadcrumbsControl {
this._contextViewService.hideContextView();
this._widget.setFocused(undefined);
this._widget.setSelection(undefined);
if (data) {
this._revealInEditor(data);
}
this._revealInEditor(event, data);
});
this._breadcrumbsPickerShowing = true;
this._updateCkBreadcrumbsActive();
......@@ -292,16 +289,21 @@ export class BreadcrumbsControl {
this._ckBreadcrumbsActive.set(value);
}
private _revealInEditor(data: any): void {
if (URI.isUri(data)) {
// open new editor
this._editorService.openEditor({ resource: data });
} else if (data instanceof FileElement) {
//
this._editorService.openEditor({ resource: data.uri });
private _revealInEditor(event: IBreadcrumbsItemEvent, data: any): void {
if (data instanceof FileElement) {
if (data.isFile) {
// open file in editor
this._editorService.openEditor({ resource: data.uri });
} else {
// show next picker
let items = this._widget.getItems();
let idx = items.indexOf(event.item);
this._widget.setFocused(items[idx + 1]);
this._widget.setSelection(items[idx + 1], BreadcrumbsControl.Payload_Pick);
}
} else if (data instanceof OutlineElement) {
//
// open symbol in editor
let model = OutlineModel.get(data);
this._editorService.openEditor({
resource: model.textModel.uri,
......
......@@ -225,7 +225,7 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
let [first] = e.selection;
let stat = first as IFileStat;
if (stat && !stat.isDirectory) {
this._onDidPickElement.fire(stat.resource);
this._onDidPickElement.fire(new FileElement(stat.resource, true));
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册