提交 4f335d86 编写于 作者: B Benjamin Pasero

move supportsSplitEditor to editor input and let it return true by default

上级 2dbc938c
......@@ -131,14 +131,6 @@ export abstract class BaseEditor extends Panel implements IEditor {
return this._position;
}
/**
* Controls if the editor shows an action to split the input of the editor to the side. Subclasses should override
* if they are capable of showing the same editor input side by side.
*/
public supportsSplitEditor(): boolean {
return false;
}
public dispose(): void {
this._input = null;
this._options = null;
......
......@@ -7,7 +7,6 @@
import {TPromise} from 'vs/base/common/winjs.base';
import nls = require('vs/nls');
import {Action} from 'vs/base/common/actions';
import {BaseEditor} from 'vs/workbench/browser/parts/editor/baseEditor';
import {EditorInput, getUntitledOrFileResource, TextEditorOptions, EditorOptions, IEditorIdentifier} from 'vs/workbench/common/editor';
import {QuickOpenEntryGroup} from 'vs/base/parts/quickopen/browser/quickOpenModel';
import {EditorQuickOpenEntry, EditorQuickOpenEntryGroup, IEditorQuickOpenEntry, QuickOpenAction} from 'vs/workbench/browser/quickopen';
......@@ -49,7 +48,7 @@ export class SplitEditorAction extends Action {
}
// Return if the editor to split does not support split editing
if (!(<BaseEditor>editorToSplit).supportsSplitEditor()) {
if (editorToSplit.input instanceof EditorInput && !(<EditorInput>editorToSplit.input).supportsSplitEditor()) {
return TPromise.as(true);
}
......@@ -215,7 +214,7 @@ export abstract class BaseFocusSideGroupAction extends Action {
}
// Require the reference editor to be visible and supporting split editor
if (referenceEditor && (<BaseEditor>referenceEditor).supportsSplitEditor()) {
if (referenceEditor && (<EditorInput>referenceEditor.input).supportsSplitEditor()) {
return this.editorService.openEditor(referenceEditor.input, null, this.getTargetEditorSide());
}
......
......@@ -261,10 +261,6 @@ export class IFrameEditor extends BaseEditor {
setTimeout(() => this.reload(true));
}
public supportsSplitEditor(): boolean {
return true;
}
/**
* Reloads the contents of the iframe in this editor by reapplying the input.
*/
......
......@@ -10,9 +10,8 @@ import {prepareActions} from 'vs/workbench/browser/actionBarRegistry';
import errors = require('vs/base/common/errors');
import arrays = require('vs/base/common/arrays');
import {Builder, $} from 'vs/base/browser/builder';
import {IEditorGroup} from 'vs/workbench/common/editor';
import {IEditorGroup, EditorInput} from 'vs/workbench/common/editor';
import DOM = require('vs/base/browser/dom');
import {BaseEditor} from 'vs/workbench/browser/parts/editor/baseEditor';
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';
......@@ -153,8 +152,6 @@ export class NoTabsTitleControl extends TitleControl {
const isPinned = group.isPinned(group.activeEditor);
const isActive = this.stacks.isActive(group);
const position = this.stacks.positionOfGroup(group);
const control = this.editorService.getVisibleEditors()[position];
// Pinned state
if (isPinned) {
......@@ -194,7 +191,7 @@ export class NoTabsTitleControl extends TitleControl {
// Update Editor Actions Toolbar
const editorActions = this.getEditorActions(group);
const primaryEditorActions = prepareActions(editorActions.primary);
if (isActive && control instanceof BaseEditor && control.supportsSplitEditor()) {
if (isActive && editor instanceof EditorInput && editor.supportsSplitEditor()) {
primaryEditorActions.push(this.splitEditorAction);
}
primaryEditorActions.push(this.closeEditorAction);
......
......@@ -162,10 +162,6 @@ export class StringEditor extends BaseTextEditor {
}
}
public supportsSplitEditor(): boolean {
return true;
}
public clearInput(): void {
// Keep editor view state in settings to restore when coming back
......
......@@ -13,7 +13,7 @@ import errors = require('vs/base/common/errors');
import {Builder} from 'vs/base/browser/builder';
import {BaseEditor, IEditorInputActionContext} from 'vs/workbench/browser/parts/editor/baseEditor';
import {RunOnceScheduler} from 'vs/base/common/async';
import {IEditorStacksModel, IEditorGroup} from 'vs/workbench/common/editor';
import {IEditorStacksModel, IEditorGroup, EditorInput} from 'vs/workbench/common/editor';
import {EventType as BaseEventType} from 'vs/base/common/events';
import {IActionItem, ActionsOrientation, Separator} from 'vs/base/browser/ui/actionbar/actionbar';
import {ToolBar} from 'vs/base/browser/ui/toolbar/toolbar';
......@@ -208,8 +208,7 @@ export abstract class TitleControl {
}
protected getGroupActions(group: IEditorGroup): IToolbarActions {
const position = this.stacks.positionOfGroup(group);
const editor = this.editorService.getVisibleEditors()[position];
const editor = group.activeEditor;
const primary: IAction[] = [];
const isOverflowing = group.count > 1;
......@@ -241,7 +240,7 @@ export abstract class TitleControl {
}
// Splitting
if (editor && editor instanceof BaseEditor && editor.supportsSplitEditor()) {
if (editor instanceof EditorInput && editor.supportsSplitEditor()) {
primary.push(this.splitEditorAction);
}
......
......@@ -121,6 +121,13 @@ export abstract class EditorInput extends EventEmitter implements IEditorInput {
this.dispose();
}
/**
* Subclasses can set this to false if it does not make sense to split the editor input.
*/
public supportsSplitEditor(): boolean {
return true;
}
/**
* Returns true if this input is identical to the otherInput.
*/
......
......@@ -153,6 +153,10 @@ export class DiffEditorInput extends BaseDiffEditorInput {
});
}
public supportsSplitEditor(): boolean {
return false;
}
public matches(otherInput: any): boolean {
if (super.matches(otherInput) === true) {
return true;
......
......@@ -27,8 +27,4 @@ export class BinaryFileEditor extends BaseBinaryResourceEditor {
public getTitle(): string {
return this.getInput() ? this.getInput().getName() : nls.localize('binaryFileEditor', "Binary File Viewer");
}
public supportsSplitEditor(): boolean {
return true; // yes, we can!
}
}
\ No newline at end of file
......@@ -272,10 +272,6 @@ export class TextFileEditor extends BaseTextEditor {
return options;
}
public supportsSplitEditor(): boolean {
return true; // yes, we can!
}
/**
* Saves the text editor view state under the given key.
*/
......
......@@ -68,10 +68,6 @@ export class HtmlPreviewPart extends BaseEditor {
super.dispose();
}
public supportsSplitEditor(): boolean {
return true;
}
public createEditor(parent: Builder): void {
this._container = document.createElement('div');
this._container.style.paddingLeft = '20px';
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册