Skip to content

Commit 249da81

Browse files
committed
grid - move EditorPosition to exthost
1 parent 41d65ec commit 249da81

15 files changed

Lines changed: 76 additions & 78 deletions

File tree

src/vs/platform/editor/common/editor.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -128,22 +128,3 @@ export interface ITextEditorOptions extends IEditorOptions {
128128
*/
129129
revealInCenterIfOutsideViewport?: boolean;
130130
}
131-
132-
//#region TODO@grid obsolete
133-
134-
/**
135-
* Possible locations for opening an editor.
136-
*/
137-
export enum Position {
138-
139-
/** Opens the editor in the first position replacing the input currently showing */
140-
ONE = 0,
141-
142-
/** Opens the editor in the second position replacing the input currently showing */
143-
TWO = 1,
144-
145-
/** Opens the editor in the third most position replacing the input currently showing */
146-
THREE = 2
147-
}
148-
149-
//#endregion

src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { ExtHostContext, ExtHostDocumentsAndEditorsShape, IModelAddedData, IText
1313
import { MainThreadTextEditor } from './mainThreadEditor';
1414
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
1515
import { IEditorGroupsService } from 'vs/workbench/services/group/common/editorGroupsService';
16-
import { Position as EditorPosition } from 'vs/platform/editor/common/editor';
16+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1717
import { IEditor } from 'vs/workbench/common/editor';
1818
import { extHostCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
1919
import { MainThreadDocuments } from 'vs/workbench/api/electron-browser/mainThreadDocuments';

src/vs/workbench/api/electron-browser/mainThreadEditors.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
*--------------------------------------------------------------------------------------------*/
55
'use strict';
66

7+
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
8+
import { IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor';
9+
import { localize } from 'vs/nls';
710
import { disposed } from 'vs/base/common/errors';
811
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
912
import { equals as objectEquals } from 'vs/base/common/objects';
@@ -15,7 +18,8 @@ import { IRange } from 'vs/editor/common/core/range';
1518
import { ISelection } from 'vs/editor/common/core/selection';
1619
import { IDecorationOptions, IDecorationRenderOptions, ILineChange } from 'vs/editor/common/editorCommon';
1720
import { ISingleEditOperation } from 'vs/editor/common/model';
18-
import { ITextEditorOptions, Position as EditorPosition } from 'vs/platform/editor/common/editor';
21+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
22+
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
1923
import { IApplyEditsOptions, ITextEditorConfigurationUpdate, IUndoStopOptions, TextEditorRevealType, WorkspaceEditDto, reviveWorkspaceEditDto } from 'vs/workbench/api/node/extHost.protocol';
2024
import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService';
2125
import { IEditorGroupsService } from 'vs/workbench/services/group/common/editorGroupsService';
@@ -127,7 +131,7 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
127131
});
128132
}
129133

130-
$tryShowEditor(id: string, position: EditorPosition): TPromise<void> {
134+
$tryShowEditor(id: string, position?: EditorPosition): TPromise<void> {
131135
let mainThreadEditor = this._documentsAndEditors.getEditor(id);
132136
if (mainThreadEditor) {
133137
let model = mainThreadEditor.getModel();
@@ -241,6 +245,36 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
241245
}
242246
}
243247

248+
// --- commands
249+
250+
CommandsRegistry.registerCommand('_workbench.open', function (accessor: ServicesAccessor, args: [URI, IEditorOptions, EditorPosition]) {
251+
const editorService = accessor.get(IEditorService);
252+
const editorGroupService = accessor.get(IEditorGroupsService);
253+
254+
const [resource, options, position] = args;
255+
256+
return editorService.openEditor({ resource, options }, findEditorGroup(editorGroupService, position)).then(() => void 0);
257+
});
258+
259+
CommandsRegistry.registerCommand('_workbench.diff', function (accessor: ServicesAccessor, args: [URI, URI, string, string, IEditorOptions, EditorPosition]) {
260+
const editorService = accessor.get(IEditorService);
261+
const editorGroupService = accessor.get(IEditorGroupsService);
262+
263+
let [leftResource, rightResource, label, description, options, position] = args;
264+
265+
if (!options || typeof options !== 'object') {
266+
options = {
267+
preserveFocus: false
268+
};
269+
}
270+
271+
if (!label) {
272+
label = localize('diffLeftRightLabel', "{0} ⟷ {1}", leftResource.toString(true), rightResource.toString(true));
273+
}
274+
275+
return editorService.openEditor({ leftResource, rightResource, label, description, options }, findEditorGroup(editorGroupService, position)).then(() => void 0);
276+
});
277+
244278
export function findEditorGroup(editorGroupService: IEditorGroupsService, position?: EditorPosition): GroupIdentifier {
245279
if (typeof position !== 'number') {
246280
return ACTIVE_GROUP; // prefer active group when position is undefined

src/vs/workbench/api/electron-browser/mainThreadWebview.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import URI, { UriComponents } from 'vs/base/common/uri';
88
import { TPromise } from 'vs/base/common/winjs.base';
99
import { localize } from 'vs/nls';
1010
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
11-
import { Position } from 'vs/platform/editor/common/editor';
11+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1212
import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
1313
import { IOpenerService } from 'vs/platform/opener/common/opener';
1414
import { ExtHostContext, ExtHostWebviewsShape, IExtHostContext, MainContext, MainThreadWebviewsShape, WebviewPanelHandle } from 'vs/workbench/api/node/extHost.protocol';
@@ -69,7 +69,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
6969
handle: WebviewPanelHandle,
7070
viewType: string,
7171
title: string,
72-
showOptions: { viewColumn: Position, preserveFocus: boolean },
72+
showOptions: { viewColumn: EditorPosition | null, preserveFocus: boolean },
7373
options: WebviewInputOptions,
7474
extensionLocation: UriComponents
7575
): void {
@@ -104,7 +104,7 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
104104
webview.html = value;
105105
}
106106

107-
$reveal(handle: WebviewPanelHandle, viewColumn: Position | null, preserveFocus: boolean): void {
107+
$reveal(handle: WebviewPanelHandle, viewColumn: EditorPosition | null, preserveFocus: boolean): void {
108108
const webview = this.getWebview(handle);
109109
if (webview.isDisposed()) {
110110
return;

src/vs/workbench/api/node/apiCommands.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import URI from 'vs/base/common/uri';
88
import * as vscode from 'vscode';
99
import * as typeConverters from 'vs/workbench/api/node/extHostTypeConverters';
1010
import { CommandsRegistry, ICommandService, ICommandHandler } from 'vs/platform/commands/common/commands';
11-
import { Position as EditorPosition, ITextEditorOptions } from 'vs/platform/editor/common/editor';
11+
import { ITextEditorOptions } from 'vs/platform/editor/common/editor';
12+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1213

1314
// -----------------------------------------------------------------
1415
// The following commands are registered on both sides separately.
@@ -70,21 +71,21 @@ export class OpenAPICommand {
7071
public static ID = 'vscode.open';
7172
public static execute(executor: ICommandsExecutor, resource: URI, columnOrOptions?: vscode.ViewColumn | vscode.TextDocumentShowOptions): Thenable<any> {
7273
let options: ITextEditorOptions;
73-
let column: EditorPosition;
74+
let position: EditorPosition;
7475

7576
if (columnOrOptions) {
7677
if (typeof columnOrOptions === 'number') {
77-
column = typeConverters.ViewColumn.from(columnOrOptions);
78+
position = typeConverters.ViewColumn.from(columnOrOptions);
7879
} else {
7980
options = typeConverters.TextEditorOptions.from(columnOrOptions);
80-
column = typeConverters.ViewColumn.from(columnOrOptions.viewColumn);
81+
position = typeConverters.ViewColumn.from(columnOrOptions.viewColumn);
8182
}
8283
}
8384

8485
return executor.executeCommand('_workbench.open', [
8586
resource,
8687
options,
87-
column
88+
position
8889
]);
8990
}
9091
}

src/vs/workbench/api/node/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Severity from 'vs/base/common/severity';
1313
import { TPromise } from 'vs/base/common/winjs.base';
1414

1515
import { IMarkerData } from 'vs/platform/markers/common/markers';
16-
import { Position as EditorPosition } from 'vs/platform/editor/common/editor';
16+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1717
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
1818
import { StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
1919
import { ITelemetryInfo } from 'vs/platform/telemetry/common/telemetry';

src/vs/workbench/api/node/extHostTextEditors.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { TextEditorSelectionChangeKind } from './extHostTypes';
1111
import * as TypeConverters from './extHostTypeConverters';
1212
import { TextEditorDecorationType, ExtHostTextEditor } from './extHostTextEditor';
1313
import { ExtHostDocumentsAndEditors } from './extHostDocumentsAndEditors';
14-
import { Position as EditorPosition } from 'vs/platform/editor/common/editor';
14+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1515
import { MainContext, MainThreadTextEditorsShape, ExtHostEditorsShape, ITextDocumentShowOptions, ITextEditorPositionData, IMainContext, WorkspaceEditDto, IEditorPropertiesChangeData } from './extHost.protocol';
1616
import * as vscode from 'vscode';
1717

@@ -73,7 +73,7 @@ export class ExtHostEditors implements ExtHostEditorsShape {
7373
};
7474
} else {
7575
options = {
76-
position: EditorPosition.ONE,
76+
position: 0 as EditorPosition,
7777
preserveFocus: false
7878
};
7979
}

src/vs/workbench/api/node/extHostTypeConverters.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
import * as modes from 'vs/editor/common/modes';
88
import * as types from './extHostTypes';
9-
import { Position as EditorPosition, ITextEditorOptions } from 'vs/platform/editor/common/editor';
9+
import { ITextEditorOptions } from 'vs/platform/editor/common/editor';
10+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1011
import { IDecorationOptions } from 'vs/editor/common/editorCommon';
1112
import { EndOfLineSequence } from 'vs/editor/common/model';
1213
import * as vscode from 'vscode';
@@ -157,13 +158,13 @@ export namespace DiagnosticSeverity {
157158

158159
export namespace ViewColumn {
159160
export function from(column?: vscode.ViewColumn): EditorPosition {
160-
let editorColumn = EditorPosition.ONE;
161+
let editorColumn = 0;
161162
if (typeof column !== 'number') {
162163
// stick with ONE
163164
} else if (column === <number>types.ViewColumn.Two) {
164-
editorColumn = EditorPosition.TWO;
165+
editorColumn = 1;
165166
} else if (column === <number>types.ViewColumn.Three) {
166-
editorColumn = EditorPosition.THREE;
167+
editorColumn = 2;
167168
} else if (column === <number>types.ViewColumn.Active) {
168169
editorColumn = undefined;
169170
}
@@ -174,11 +175,11 @@ export namespace ViewColumn {
174175
if (typeof position !== 'number') {
175176
return undefined;
176177
}
177-
if (position === EditorPosition.ONE) {
178+
if (position === 0) {
178179
return <number>types.ViewColumn.One;
179-
} else if (position === EditorPosition.TWO) {
180+
} else if (position === 1) {
180181
return <number>types.ViewColumn.Two;
181-
} else if (position === EditorPosition.THREE) {
182+
} else if (position === 2) {
182183
return <number>types.ViewColumn.Three;
183184
}
184185
return undefined;

src/vs/workbench/api/node/extHostWebview.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { MainContext, MainThreadWebviewsShape, IMainContext, ExtHostWebviewsShap
77
import * as vscode from 'vscode';
88
import { Event, Emitter } from 'vs/base/common/event';
99
import * as typeConverters from 'vs/workbench/api/node/extHostTypeConverters';
10-
import { Position } from 'vs/platform/editor/common/editor';
10+
import { EditorPosition } from 'vs/workbench/api/shared/editor';
1111
import { TPromise } from 'vs/base/common/winjs.base';
1212
import { Disposable } from './extHostTypes';
1313
import URI from 'vs/base/common/uri';
@@ -248,7 +248,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
248248
}
249249
}
250250

251-
$onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, visible: boolean, position: Position): void {
251+
$onDidChangeWebviewPanelViewState(handle: WebviewPanelHandle, visible: boolean, position: EditorPosition): void {
252252
const panel = this.getWebviewPanel(handle);
253253
if (panel) {
254254
const viewColumn = typeConverters.ViewColumn.to(position);
@@ -274,7 +274,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
274274
viewType: string,
275275
title: string,
276276
state: any,
277-
position: Position,
277+
position: EditorPosition,
278278
options: vscode.WebviewOptions & vscode.WebviewPanelOptions
279279
): Thenable<void> {
280280
const serializer = this._serializers.get(viewType);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
'use strict';
7+
8+
// TODO@api this was previously a hardcoded list of editor positions (ONE, TWO, THREE)
9+
// that with the introduction of grid editor feature is now unbounded. This should be
10+
// revisited when the grid functionality is exposed to extensions
11+
export type EditorPosition = number;

0 commit comments

Comments
 (0)