mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-10 16:58:55 -05:00
add a setting to enable showing tabs
This commit is contained in:
@@ -26,6 +26,7 @@ import {BinaryResourceDiffEditor} from 'vs/workbench/browser/parts/editor/binary
|
||||
import {IEditorGroupService} from 'vs/workbench/services/group/common/groupService';
|
||||
import {IFrameEditor} from 'vs/workbench/browser/parts/editor/iframeEditor';
|
||||
import {IFrameEditorInput} from 'vs/workbench/common/editor/iframeEditorInput';
|
||||
import {IConfigurationRegistry, Extensions as ConfigurationExtensions} from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import {ChangeEncodingAction, ChangeEOLAction, ChangeModeAction, EditorStatus} from 'vs/workbench/browser/parts/editor/editorStatus';
|
||||
import {IWorkbenchActionRegistry, Extensions as ActionExtensions} from 'vs/workbench/common/actionRegistry';
|
||||
import {Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor} from 'vs/workbench/browser/actionBarRegistry';
|
||||
@@ -393,4 +394,20 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(OpenPreviousEditorFrom
|
||||
registry.registerWorkbenchAction(new SyncActionDescriptor(ClearEditorHistoryAction, ClearEditorHistoryAction.ID, ClearEditorHistoryAction.LABEL), 'Clear Editor History');
|
||||
registry.registerWorkbenchAction(new SyncActionDescriptor(RemoveFromEditorHistoryAction, RemoveFromEditorHistoryAction.ID, RemoveFromEditorHistoryAction.LABEL), 'Remove From Editor History');
|
||||
registry.registerWorkbenchAction(new SyncActionDescriptor(QuickOpenNavigateNextAction, QuickOpenNavigateNextAction.ID, QuickOpenNavigateNextAction.LABEL, navigateKeybinding(false), KbExpr.has('inQuickOpen')), 'Navigate Next in Quick Open');
|
||||
registry.registerWorkbenchAction(new SyncActionDescriptor(QuickOpenNavigatePreviousAction, QuickOpenNavigatePreviousAction.ID, QuickOpenNavigatePreviousAction.LABEL, navigateKeybinding(true), KbExpr.has('inQuickOpen'), KeybindingsRegistry.WEIGHT.workbenchContrib(50)), 'Navigate Previous in Quick Open');
|
||||
registry.registerWorkbenchAction(new SyncActionDescriptor(QuickOpenNavigatePreviousAction, QuickOpenNavigatePreviousAction.ID, QuickOpenNavigatePreviousAction.LABEL, navigateKeybinding(true), KbExpr.has('inQuickOpen'), KeybindingsRegistry.WEIGHT.workbenchContrib(50)), 'Navigate Previous in Quick Open');
|
||||
|
||||
// Configuration
|
||||
let configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'workbench',
|
||||
'order': 7,
|
||||
'title': nls.localize('workbenchConfigurationTitle', "Workbench configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'workbench.showTabs': {
|
||||
'type': 'boolean',
|
||||
'description': nls.localize('showTabs', "Controls if opened editors should show in tabs or not."),
|
||||
'default': false
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -23,16 +23,15 @@ import {IEditorGroupService} from 'vs/workbench/services/group/common/groupServi
|
||||
import {IEventService} from 'vs/platform/event/common/event';
|
||||
import {IMessageService} from 'vs/platform/message/common/message';
|
||||
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
|
||||
import {IConfigurationService} from 'vs/platform/configuration/common/configuration';
|
||||
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
|
||||
import {IKeybindingService} from 'vs/platform/keybinding/common/keybindingService';
|
||||
import {IDisposable, dispose} from 'vs/base/common/lifecycle';
|
||||
import {TabsTitleControl} from 'vs/workbench/browser/parts/editor/tabsTitleControl';
|
||||
import {NoTabsTitleControl} from 'vs/workbench/browser/parts/editor/noTabsTitleControl';
|
||||
import {IEditorStacksModel, IStacksModelChangeEvent} from 'vs/workbench/common/editor';
|
||||
import {IEditorStacksModel, IStacksModelChangeEvent, IWorkbenchEditorConfiguration} from 'vs/workbench/common/editor';
|
||||
import {ITitleAreaControl} from 'vs/workbench/browser/parts/editor/titleControl';
|
||||
|
||||
const useTabs = true;
|
||||
|
||||
export enum Rochade {
|
||||
NONE,
|
||||
CENTER_TO_LEFT,
|
||||
@@ -123,6 +122,7 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti
|
||||
@ITelemetryService private telemetryService: ITelemetryService,
|
||||
@IContextMenuService private contextMenuService: IContextMenuService,
|
||||
@IEventService private eventService: IEventService,
|
||||
@IConfigurationService private configurationService: IConfigurationService,
|
||||
@IKeybindingService private keybindingService: IKeybindingService,
|
||||
@IInstantiationService private instantiationService: IInstantiationService
|
||||
) {
|
||||
@@ -153,6 +153,26 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti
|
||||
|
||||
private registerListeners(): void {
|
||||
this.toDispose.push(this.stacks.onModelChanged(e => this.onStacksChanged(e)));
|
||||
this.toDispose.push(this.configurationService.onDidUpdateConfiguration(e => this.onConfigurationUpdated(e.config)));
|
||||
}
|
||||
|
||||
private onConfigurationUpdated(configuration: IWorkbenchEditorConfiguration): void {
|
||||
POSITIONS.forEach(position => {
|
||||
const titleControl = this.titleAreaControl[position];
|
||||
if (titleControl) {
|
||||
const usingTabs = (titleControl instanceof TabsTitleControl);
|
||||
const useTabs = configuration.workbench.showTabs;
|
||||
if (usingTabs !== useTabs) {
|
||||
|
||||
// Dispose old
|
||||
titleControl.dispose();
|
||||
this.titleContainer[position].empty();
|
||||
|
||||
// Create new
|
||||
this.createTitleControl(position);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private onStacksChanged(e: IStacksModelChangeEvent): void {
|
||||
@@ -714,10 +734,8 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti
|
||||
this.titleContainer[position] = $(this.containers[position]).div({ 'class': 'title' });
|
||||
this.hookTitleDragListener(position);
|
||||
|
||||
this.titleAreaControl[position] = useTabs ? this.instantiationService.createInstance(TabsTitleControl) : this.instantiationService.createInstance(NoTabsTitleControl);
|
||||
this.titleAreaControl[position].create($(this.titleContainer[position]));
|
||||
this.titleAreaControl[position].setContext(this.stacks.groupAt(position));
|
||||
this.titleAreaControl[position].refresh(true);
|
||||
// Title Control
|
||||
this.createTitleControl(position);
|
||||
});
|
||||
|
||||
// Progress Bars per position
|
||||
@@ -732,6 +750,15 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti
|
||||
}
|
||||
}
|
||||
|
||||
private createTitleControl(position: Position): void {
|
||||
const useTabs = !!this.configurationService.getConfiguration<IWorkbenchEditorConfiguration>().workbench.showTabs;
|
||||
|
||||
this.titleAreaControl[position] = useTabs ? this.instantiationService.createInstance(TabsTitleControl) : this.instantiationService.createInstance(NoTabsTitleControl);
|
||||
this.titleAreaControl[position].create($(this.titleContainer[position]));
|
||||
this.titleAreaControl[position].setContext(this.stacks.groupAt(position));
|
||||
this.titleAreaControl[position].refresh(true);
|
||||
}
|
||||
|
||||
private hookTitleDragListener(position: Position): void {
|
||||
let wasDragged = false;
|
||||
|
||||
|
||||
@@ -661,4 +661,10 @@ export interface IEditorContext extends IEditorIdentifier {
|
||||
event: any;
|
||||
}
|
||||
|
||||
export type GroupIdentifier = number;
|
||||
export type GroupIdentifier = number;
|
||||
|
||||
export interface IWorkbenchEditorConfiguration {
|
||||
workbench: {
|
||||
showTabs: boolean;
|
||||
};
|
||||
}
|
||||
@@ -41,7 +41,7 @@ if (platform.isWindows || platform.isLinux) {
|
||||
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'window',
|
||||
'order': 6,
|
||||
'order': 8,
|
||||
'title': nls.localize('windowConfigurationTitle', "Window configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
@@ -72,7 +72,7 @@ configurationRegistry.registerConfiguration({
|
||||
// Configuration: Update
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'update',
|
||||
'order': 10,
|
||||
'order': 15,
|
||||
'title': nls.localize('updateConfigurationTitle', "Update configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
|
||||
@@ -38,7 +38,7 @@ KeybindingsRegistry.registerCommandRule({
|
||||
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'emmet',
|
||||
'order': 7,
|
||||
'order': 6,
|
||||
'title': nls.localize('emmetConfigurationTitle', "Emmet configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
|
||||
@@ -161,7 +161,7 @@ let configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExt
|
||||
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'files',
|
||||
'order': 7,
|
||||
'order': 9,
|
||||
'title': nls.localize('filesConfigurationTitle', "Files configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
@@ -234,7 +234,7 @@ configurationRegistry.registerConfiguration({
|
||||
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'explorer',
|
||||
'order': 8,
|
||||
'order': 10,
|
||||
'title': nls.localize('explorerConfigurationTitle', "File Explorer configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
|
||||
@@ -509,7 +509,7 @@ export function registerContributions(): void {
|
||||
var configurationRegistry = <confregistry.IConfigurationRegistry>platform.Registry.as(confregistry.Extensions.Configuration);
|
||||
configurationRegistry.registerConfiguration({
|
||||
id: 'git',
|
||||
order: 10,
|
||||
order: 15,
|
||||
title: nls.localize('gitConfigurationTitle', "Git configuration"),
|
||||
type: 'object',
|
||||
properties: {
|
||||
|
||||
@@ -166,7 +166,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(ShowAllSymbolsAction,
|
||||
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
|
||||
configurationRegistry.registerConfiguration({
|
||||
'id': 'search',
|
||||
'order': 10,
|
||||
'order': 13,
|
||||
'title': nls.localize('searchConfigurationTitle', "Search configuration"),
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
|
||||
@@ -145,7 +145,7 @@ export class RequestService extends BaseRequestService {
|
||||
let confRegistry = <IConfigurationRegistry>platform.Registry.as(Extensions.Configuration);
|
||||
confRegistry.registerConfiguration({
|
||||
id: 'http',
|
||||
order: 9,
|
||||
order: 15,
|
||||
title: nls.localize('httpConfigurationTitle', "HTTP configuration"),
|
||||
type: 'object',
|
||||
properties: {
|
||||
|
||||
Reference in New Issue
Block a user