提交 be5d59a7 编写于 作者: S Sandeep Somavarapu

Return view in openView API

上级 cc5c1030
......@@ -27,6 +27,7 @@ import { PanelView, IPanelViewOptions, IPanelOptions, Panel } from 'vs/base/brow
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IPartService } from 'vs/workbench/services/part/common/partService';
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
import { IView } from 'vs/workbench/common/views';
export interface IPanelColors extends IColorMapping {
dropBackground?: ColorIdentifier;
......@@ -41,7 +42,7 @@ export interface IViewletPanelOptions extends IPanelOptions {
title: string;
}
export abstract class ViewletPanel extends Panel {
export abstract class ViewletPanel extends Panel implements IView {
private static AlwaysShowActionsConfig = 'workbench.view.alwaysShowHeaderActions';
......
......@@ -7,7 +7,7 @@ import 'vs/css!./media/views';
import { Disposable } from 'vs/base/common/lifecycle';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { TPromise } from 'vs/base/common/winjs.base';
import { IViewsService, ViewsRegistry, IViewsViewlet, ViewContainer, IViewDescriptor, IViewContainersRegistry, Extensions as ViewContainerExtensions, TEST_VIEW_CONTAINER_ID } from 'vs/workbench/common/views';
import { IViewsService, ViewsRegistry, IViewsViewlet, ViewContainer, IViewDescriptor, IViewContainersRegistry, Extensions as ViewContainerExtensions, TEST_VIEW_CONTAINER_ID, IView } from 'vs/workbench/common/views';
import { Registry } from 'vs/platform/registry/common/platform';
import { ViewletRegistry, Extensions as ViewletExtensions } from 'vs/workbench/browser/viewlet';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
......@@ -173,11 +173,6 @@ class ViewDescriptorCollection extends Disposable {
}
}
export interface IView {
viewDescriptor: IViewDescriptor;
visible: boolean;
}
export interface IViewState {
visible: boolean;
collapsed: boolean;
......@@ -510,7 +505,7 @@ export class ViewsService extends Disposable implements IViewsService {
this._register(Registry.as<ViewletRegistry>(ViewletExtensions.Viewlets).onDidRegister(viewlet => this.viewletService.setViewletEnablement(viewlet.id, this.storageService.getBoolean(`viewservice.${viewlet.id}.enablement`, StorageScope.GLOBAL, viewlet.id !== TEST_VIEW_CONTAINER_ID))));
}
openView(id: string, focus: boolean): TPromise<void> {
openView(id: string, focus: boolean): TPromise<IView> {
const viewDescriptor = ViewsRegistry.getView(id);
if (viewDescriptor) {
const viewletDescriptor = this.viewletService.getViewlet(viewDescriptor.container.id);
......
......@@ -13,7 +13,7 @@ import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
import { firstIndex } from 'vs/base/common/arrays';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { IViewDescriptor, IViewsViewlet, IViewContainersRegistry, Extensions as ViewContainerExtensions } from 'vs/workbench/common/views';
import { IViewDescriptor, IViewsViewlet, IViewContainersRegistry, Extensions as ViewContainerExtensions, IView } from 'vs/workbench/common/views';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
......@@ -198,7 +198,7 @@ export abstract class ViewContainerViewlet extends PanelViewlet implements IView
.then(() => void 0);
}
openView(id: string, focus?: boolean): TPromise<void> {
openView(id: string, focus?: boolean): TPromise<IView> {
if (focus) {
this.focus();
}
......@@ -207,11 +207,9 @@ export abstract class ViewContainerViewlet extends PanelViewlet implements IView
this.toggleViewVisibility(id);
}
view = this.getView(id);
if (view) {
view.setExpanded(true);
view.focus();
}
return TPromise.as(null);
view.setExpanded(true);
view.focus();
return TPromise.as(view);
}
movePanel(from: ViewletPanel, to: ViewletPanel): void {
......
......@@ -194,9 +194,15 @@ export const ViewsRegistry: IViewsRegistry = new class implements IViewsRegistry
}
};
export interface IView {
readonly id: string;
}
export interface IViewsViewlet extends IViewlet {
openView(id: string, focus?: boolean): TPromise<void>;
openView(id: string, focus?: boolean): TPromise<IView>;
}
......@@ -205,7 +211,7 @@ export const IViewsService = createDecorator<IViewsService>('viewsService');
export interface IViewsService {
_serviceBrand: any;
openView(id: string, focus?: boolean): TPromise<void>;
openView(id: string, focus?: boolean): TPromise<IView>;
}
// Custom views
......
......@@ -57,7 +57,7 @@ import { ThrottledDelayer } from 'vs/base/common/async';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { IPartService } from 'vs/workbench/services/part/common/partService';
import { IViewDescriptorRef, PersistentContributableViewsModel, IAddedViewDescriptorRef } from 'vs/workbench/browser/parts/views/views';
import { IViewDescriptor, IViewsViewlet } from 'vs/workbench/common/views';
import { IViewDescriptor, IViewsViewlet, IView } from 'vs/workbench/common/views';
import { IPanelDndController, Panel } from 'vs/base/browser/ui/splitview/panelview';
export interface ISpliceEvent<T> {
......@@ -1473,14 +1473,18 @@ export class SCMViewlet extends PanelViewlet implements IViewModel, IViewsViewle
return super.isSingleView() && this.repositoryPanels.length + this.contributedViews.visibleViewDescriptors.length === 1;
}
openView(id: string, focus?: boolean): TPromise<void> {
this.contributedViews.setVisible(id, true);
const panel = this.panels.filter(panel => panel instanceof ViewletPanel && panel.id === id)[0];
if (panel) {
panel.setExpanded(true);
panel.focus();
openView(id: string, focus?: boolean): TPromise<IView> {
if (focus) {
this.focus();
}
return TPromise.as(null);
let panel = this.panels.filter(panel => panel instanceof ViewletPanel && panel.id === id)[0];
if (!panel) {
this.contributedViews.setVisible(id, true);
}
panel = this.panels.filter(panel => panel instanceof ViewletPanel && panel.id === id)[0];
panel.setExpanded(true);
panel.focus();
return TPromise.as(panel);
}
hide(repository: ISCMRepository): void {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册