提交 5e9b9ae6 编写于 作者: B Benjamin Pasero

wip

上级 bac26893
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/* Title Actions */
.monaco-workbench > .part.editor > .content > .one-editor-container > .title .title-actions {
display: flex;
flex: initial;
}
.monaco-workbench > .part.editor > .content > .one-editor-container .title.inactive .title-actions {
opacity: 0.5;
}
.monaco-workbench > .part.editor > .content > .one-editor-container > .title .title-actions .action-label {
display: block;
height: 35px;
width: 28px;
background-size: 16px;
background-position: center center;
background-repeat: no-repeat;
}
.monaco-workbench > .part.editor > .content > .one-editor-container > .title .title-actions .action-label .label {
display: none;
}
.monaco-workbench > .part.editor > .content > .one-editor-container > .title .title-actions .editor-group-toolbar {
padding-left: 4px;
background-color: rgba(128, 128, 128, 0.2);
}
\ No newline at end of file
......@@ -26,7 +26,7 @@ import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
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 {NoTabsTitleControl} from 'vs/workbench/browser/parts/editor/noTabsTitleControl';
import {TabsTitleControl} from 'vs/workbench/browser/parts/editor/tabsTitleControl';
import {IEditorStacksModel} from 'vs/workbench/common/editor';
import {ITitleAreaControl} from 'vs/workbench/browser/parts/editor/titleControl';
......@@ -699,7 +699,7 @@ export class SideBySideEditorControl implements ISideBySideEditorControl, IVerti
this.titleContainer[position] = $(this.containers[position]).div({ 'class': 'title' });
this.hookTitleDragListener(position);
this.titleAreaControl[position] = this.instantiationService.createInstance(NoTabsTitleControl);
this.titleAreaControl[position] = this.instantiationService.createInstance(TabsTitleControl);
this.titleAreaControl[position].create($(this.titleContainer[position]));
this.titleAreaControl[position].setContext(this.stacks.groupAt(position));
});
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import 'vs/css!./media/tabstitle';
import {prepareActions} from 'vs/workbench/browser/actionBarRegistry';
import arrays = require('vs/base/common/arrays');
import {Builder, $} from 'vs/base/browser/builder';
import {IEditorGroup} from 'vs/workbench/common/editor';
import {ToolBar} from 'vs/base/browser/ui/toolbar/toolbar';
import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService';
import {IContextMenuService} from 'vs/platform/contextview/browser/contextView';
import {IEditorGroupService} from 'vs/workbench/services/group/common/groupService';
import {IMessageService} from 'vs/platform/message/common/message';
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {IKeybindingService} from 'vs/platform/keybinding/common/keybindingService';
import {TitleControl} from 'vs/workbench/browser/parts/editor/titleControl';
export class TabsTitleControl extends TitleControl {
private titleContainer: Builder;
private groupActionsToolbar: ToolBar;
private currentPrimaryGroupActionIds: string[];
private currentSecondaryGroupActionIds: string[];
constructor(
@IContextMenuService contextMenuService: IContextMenuService,
@IInstantiationService instantiationService: IInstantiationService,
@IWorkbenchEditorService editorService: IWorkbenchEditorService,
@IEditorGroupService editorGroupService: IEditorGroupService,
@IKeybindingService keybindingService: IKeybindingService,
@ITelemetryService telemetryService: ITelemetryService,
@IMessageService messageService: IMessageService
) {
super(contextMenuService, instantiationService, editorService, editorGroupService, keybindingService, telemetryService, messageService);
this.currentPrimaryGroupActionIds = [];
this.currentSecondaryGroupActionIds = [];
}
public setContext(group: IEditorGroup): void {
super.setContext(group);
this.groupActionsToolbar.context = { group };
}
public create(parent: Builder): void {
this.titleContainer = $(parent);
// Group Actions Container
parent.div({
'class': 'title-actions'
}, (div) => {
// Editor actions
this.groupActionsToolbar = this.doCreateToolbar(div);
this.groupActionsToolbar.getContainer().addClass('editor-group-toolbar');
});
}
public refresh(): void {
if (!this.context) {
return;
}
const group = this.context;
const editor = group.activeEditor;
if (!editor) {
this.groupActionsToolbar.setActions([], [])();
this.currentPrimaryGroupActionIds = [];
this.currentSecondaryGroupActionIds = [];
return; // return early if we are being closed
}
// Update Group Actions Toolbar
const groupActions = this.getGroupActions(group);
const primaryGroupActions = prepareActions(groupActions.primary);
const secondaryGroupActions = prepareActions(groupActions.secondary);
const primaryGroupActionIds = primaryGroupActions.map(a => a.id);
const secondaryGroupActionIds = secondaryGroupActions.map(a => a.id);
if (!arrays.equals(primaryGroupActionIds, this.currentPrimaryGroupActionIds) || !arrays.equals(secondaryGroupActionIds, this.currentSecondaryGroupActionIds)) {
this.groupActionsToolbar.setActions(primaryGroupActions, secondaryGroupActions)();
this.currentPrimaryGroupActionIds = primaryGroupActionIds;
this.currentSecondaryGroupActionIds = secondaryGroupActionIds;
}
}
public dispose(): void {
super.dispose();
// Toolbars
this.groupActionsToolbar.dispose();
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册