From 723c9734d91aedb252c928e541b2a6f474d2ff15 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Sun, 29 Oct 2017 13:59:24 -0700 Subject: [PATCH] Move workspace rec related logic to its own view --- .../electron-browser/extensionsViews.ts | 60 ++++++++++--------- .../media/extensionsViewlet.css | 1 - 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts index a469dd5480f..4e371089dad 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts @@ -20,7 +20,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { ICommandService } from 'vs/platform/commands/common/commands'; -import { append, $, toggleClass, addClass } from 'vs/base/browser/dom'; +import { append, $, toggleClass } from 'vs/base/browser/dom'; import { PagedList } from 'vs/base/browser/ui/list/listPaging'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { Delegate, Renderer } from 'vs/workbench/parts/extensions/browser/extensionsList'; @@ -47,15 +47,15 @@ export class ExtensionsListView extends ViewsViewletPanel { private messageBox: HTMLElement; private extensionsList: HTMLElement; private badge: CountBadge; - private listActionBar: HTMLElement; + protected badgeContainer: HTMLElement; private list: PagedList; constructor( private options: IViewletViewOptions, - @IMessageService private messageService: IMessageService, + @IMessageService protected messageService: IMessageService, @IKeybindingService keybindingService: IKeybindingService, @IContextMenuService contextMenuService: IContextMenuService, - @IInstantiationService private instantiationService: IInstantiationService, + @IInstantiationService protected instantiationService: IInstantiationService, @IListService private listService: IListService, @IThemeService private themeService: IThemeService, @IContextKeyService private contextKeyService: IContextKeyService, @@ -76,23 +76,8 @@ export class ExtensionsListView extends ViewsViewletPanel { const titleDiv = append(container, $('div.title')); append(titleDiv, $('span')).textContent = this.options.name; - this.listActionBar = append(container, $('.list-actionbar-container')); - const actionbar = new ActionBar(this.listActionBar, { - animated: false - }); - actionbar.addListener(EventType.RUN, ({ error }) => error && this.messageService.show(Severity.Error, error)); - const installAllAction = this.instantiationService.createInstance(InstallWorkspaceRecommendedExtensionsAction, InstallWorkspaceRecommendedExtensionsAction.ID, InstallWorkspaceRecommendedExtensionsAction.LABEL); - const configureWorkspaceFolderAction = this.instantiationService.createInstance(ConfigureWorkspaceFolderRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction.ID, ConfigureWorkspaceFolderRecommendedExtensionsAction.LABEL); - - installAllAction.class = 'octicon octicon-cloud-download'; - configureWorkspaceFolderAction.class = 'octicon octicon-pencil'; - - actionbar.push([installAllAction], { icon: true, label: false }); - actionbar.push([configureWorkspaceFolderAction], { icon: true, label: false }); - - this.disposables.push(actionbar); - - this.badge = new CountBadge(append(container, $('.count-badge-wrapper'))); + this.badgeContainer = append(container, $('.count-badge-wrapper')); + this.badge = new CountBadge(this.badgeContainer); this.disposables.push(attachBadgeStyler(this.badge, this.themeService)); } @@ -130,15 +115,8 @@ export class ExtensionsListView extends ViewsViewletPanel { } async show(query: string): TPromise> { - addClass(this.listActionBar, 'hidden'); const model = await this.query(query); this.setModel(model); - - if (ExtensionsListView.isWorkspaceRecommendedExtensionsQuery(query)) { - this.setExpanded(model.length > 0); - toggleClass(this.listActionBar, 'hidden', model.length === 0); - } - return model; } @@ -576,8 +554,32 @@ export class RecommendedExtensionsView extends ExtensionsListView { export class WorkspaceRecommendedExtensionsView extends ExtensionsListView { + renderHeader(container: HTMLElement): void { + super.renderHeader(container); + + const listActionBar = $('.list-actionbar-container'); + container.insertBefore(listActionBar, this.badgeContainer); + + const actionbar = new ActionBar(listActionBar, { + animated: false + }); + actionbar.addListener(EventType.RUN, ({ error }) => error && this.messageService.show(Severity.Error, error)); + const installAllAction = this.instantiationService.createInstance(InstallWorkspaceRecommendedExtensionsAction, InstallWorkspaceRecommendedExtensionsAction.ID, InstallWorkspaceRecommendedExtensionsAction.LABEL); + const configureWorkspaceFolderAction = this.instantiationService.createInstance(ConfigureWorkspaceFolderRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction.ID, ConfigureWorkspaceFolderRecommendedExtensionsAction.LABEL); + + installAllAction.class = 'octicon octicon-cloud-download'; + configureWorkspaceFolderAction.class = 'octicon octicon-pencil'; + + actionbar.push([installAllAction], { icon: true, label: false }); + actionbar.push([configureWorkspaceFolderAction], { icon: true, label: false }); + + this.disposables.push(actionbar); + } + async show(query: string): TPromise> { - return super.show('@recommended:workspace'); + let model = await super.show('@recommended:workspace'); + this.setExpanded(model.length > 0); + return model; } showRecommendedLabel() { diff --git a/src/vs/workbench/parts/extensions/electron-browser/media/extensionsViewlet.css b/src/vs/workbench/parts/extensions/electron-browser/media/extensionsViewlet.css index cad1e5d635b..8dddc2a69fd 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/media/extensionsViewlet.css +++ b/src/vs/workbench/parts/extensions/electron-browser/media/extensionsViewlet.css @@ -37,7 +37,6 @@ margin-right: 10px; } -.extensions-viewlet > .extensions .list-actionbar-container.hidden, .extensions-viewlet > .extensions .list-actionbar-container .monaco-action-bar .action-item.disabled { display: none; } -- GitLab