diff --git a/src/vs/workbench/browser/parts/editor/editorPart.ts b/src/vs/workbench/browser/parts/editor/editorPart.ts index a3801eac18a4bef0d87574cdc775b4f3034f254a..c18e9e63133d93b050bc203519a1153d0d2ddb36 100644 --- a/src/vs/workbench/browser/parts/editor/editorPart.ts +++ b/src/vs/workbench/browser/parts/editor/editorPart.ts @@ -26,7 +26,7 @@ import {EventType as WorkbenchEventType, EditorEvent} from 'vs/workbench/common/ import {IEditorRegistry, Extensions as EditorExtensions, BaseEditor, EditorDescriptor} from 'vs/workbench/browser/parts/editor/baseEditor'; import {EditorInput, EditorOptions, TextEditorOptions} from 'vs/workbench/common/editor'; import {BaseTextEditor} from 'vs/workbench/browser/parts/editor/textEditor'; -import {SideBySideEditorControl, Rochade} from 'vs/workbench/browser/parts/editor/sideBySideEditorControl'; +import {SideBySideEditorControl, Rochade, ISideBySideEditorControl} from 'vs/workbench/browser/parts/editor/sideBySideEditorControl'; import {WorkbenchProgressService} from 'vs/workbench/services/progress/browser/progressService'; import {EditorArrangement} from 'vs/workbench/services/editor/common/editorService'; import {IEditorPart} from 'vs/workbench/services/editor/browser/editorService'; @@ -60,7 +60,7 @@ interface IEditorState { */ export class EditorPart extends Part implements IEditorPart { private dimension: Dimension; - private sideBySideControl: SideBySideEditorControl; + private sideBySideControl: ISideBySideEditorControl; private memento: any; private stacksModel: EditorStacksModel; diff --git a/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts b/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts index 37a6630e75ceba249378971d8627889048b732a0..dec0756da4da4f68eca0fa633fba6aa52dda4213 100644 --- a/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts +++ b/src/vs/workbench/browser/parts/editor/sideBySideEditorControl.ts @@ -49,10 +49,39 @@ interface IEditorActions { secondary: IAction[]; } +export interface ISideBySideEditorControl { + + onEditorFocusChange: Event; + + show(editor: BaseEditor, container: Builder, position: Position, preserveActive: boolean, widthRatios?: number[]): void; + hide(editor: BaseEditor, container: Builder, position: Position, layoutAndRochade: boolean): Rochade; + + setActive(editor: BaseEditor): void; + + getActiveEditor(): BaseEditor; + getActivePosition(): Position; + + move(from: Position, to: Position): void; + + isDragging(): boolean; + setLoading(position: Position, input: EditorInput): void; + getProgressBar(position: Position): ProgressBar; + layout(dimension: Dimension): void; + layout(position: Position): void; + + updateEditorTitleArea(): void; + clearTitle(position: Position): void; + + arrangeEditors(arrangement: EditorArrangement): void; + + getWidthRatios(): number[]; + dispose(): void; +} + /** * Helper class to manage multiple side by side editors for the editor part. */ -export class SideBySideEditorControl implements IVerticalSashLayoutProvider { +export class SideBySideEditorControl implements ISideBySideEditorControl, IVerticalSashLayoutProvider { private static MIN_EDITOR_WIDTH = 170; private static EDITOR_TITLE_HEIGHT = 35; @@ -265,18 +294,7 @@ export class SideBySideEditorControl implements IVerticalSashLayoutProvider { } private getVisibleEditorCount(): number { - let c = 0; - this.visibleEditors.forEach((editor) => { - if (editor) { - c++; - } - }); - - return c; - } - - private indexOf(editor: BaseEditor): number { - return this.visibleEditors.indexOf(editor); + return this.visibleEditors.filter(v => !!v).length; } private trackFocus(editor: BaseEditor, position: Position): void { @@ -301,7 +319,7 @@ export class SideBySideEditorControl implements IVerticalSashLayoutProvider { // Update active editor and position if (this.lastActiveEditor !== editor) { - this.doSetActive(editor, this.indexOf(editor)); + this.doSetActive(editor, this.visibleEditors.indexOf(editor)); // Automatically maximize this position if it has min editor width if (this.containerWidth[this.lastActivePosition] === SideBySideEditorControl.MIN_EDITOR_WIDTH) {