From 32018e28c1d1fd8af66914e5f3588b774d4328c6 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 15 Feb 2018 07:48:42 +0100 Subject: [PATCH] notifications - better status bar alignment --- .../typescript/src/utils/projectStatus.ts | 2 +- .../typescript/src/utils/versionStatus.ts | 2 +- src/vs/platform/statusbar/common/statusbar.ts | 5 +++++ .../parts/editor/editor.contribution.ts | 2 +- .../browser/parts/editor/resourceViewer.ts | 2 +- .../notifications/notificationsStatus.ts | 2 +- .../browser/parts/statusbar/statusbarPart.ts | 19 +++++++++++-------- .../electron-browser/feedback.contribution.ts | 2 +- 8 files changed, 22 insertions(+), 14 deletions(-) diff --git a/extensions/typescript/src/utils/projectStatus.ts b/extensions/typescript/src/utils/projectStatus.ts index 60e49c4715d..186c1437ced 100644 --- a/extensions/typescript/src/utils/projectStatus.ts +++ b/extensions/typescript/src/utils/projectStatus.ts @@ -33,7 +33,7 @@ class ExcludeHintItem { constructor( private readonly telemetryReporter: TelemetryReporter ) { - this._item = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); + this._item = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 98 /* to the right of typescript version status (99) */); this._item.command = 'js.projectStatus.command'; } diff --git a/extensions/typescript/src/utils/versionStatus.ts b/extensions/typescript/src/utils/versionStatus.ts index 69871458646..07169f8046f 100644 --- a/extensions/typescript/src/utils/versionStatus.ts +++ b/extensions/typescript/src/utils/versionStatus.ts @@ -14,7 +14,7 @@ export default class VersionStatus { constructor( private readonly normalizePath: (resource: vscode.Uri) => string | null ) { - this.versionBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); + this.versionBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 99 /* to the right of editor status (100) */); this.onChangeEditorSub = vscode.window.onDidChangeActiveTextEditor(this.showHideStatus, this); } diff --git a/src/vs/platform/statusbar/common/statusbar.ts b/src/vs/platform/statusbar/common/statusbar.ts index a7287a62e9f..0ed9b624962 100644 --- a/src/vs/platform/statusbar/common/statusbar.ts +++ b/src/vs/platform/statusbar/common/statusbar.ts @@ -51,6 +51,11 @@ export interface IStatusbarEntry { * An optional extension ID if this entry is provided from an extension. */ extensionId?: string; + + /** + * An optional CSS class for the status bar item. + */ + class?: string; } export interface IStatusbarService { diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index 71ddec696bf..1f25b18bdce 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -209,7 +209,7 @@ Registry.as(EditorInputExtensions.EditorInputFactor // Register Editor Status const statusBar = Registry.as(StatusExtensions.Statusbar); -statusBar.registerStatusbarItem(new StatusbarItemDescriptor(EditorStatus, StatusbarAlignment.RIGHT, 100 /* High Priority */)); +statusBar.registerStatusbarItem(new StatusbarItemDescriptor(EditorStatus, StatusbarAlignment.RIGHT, 100 /* towards the left of the right hand side */)); // Register Status Actions const registry = Registry.as(ActionExtensions.WorkbenchActions); diff --git a/src/vs/workbench/browser/parts/editor/resourceViewer.ts b/src/vs/workbench/browser/parts/editor/resourceViewer.ts index 363eccbb995..8daf9d05d72 100644 --- a/src/vs/workbench/browser/parts/editor/resourceViewer.ts +++ b/src/vs/workbench/browser/parts/editor/resourceViewer.ts @@ -322,7 +322,7 @@ class ZoomStatusbarItem extends Themable implements IStatusbarItem { } Registry.as(Extensions.Statusbar).registerStatusbarItem( - new StatusbarItemDescriptor(ZoomStatusbarItem, StatusbarAlignment.RIGHT, 101) + new StatusbarItemDescriptor(ZoomStatusbarItem, StatusbarAlignment.RIGHT, 101 /* to the left of editor status (100) */) ); interface ImageState { diff --git a/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts b/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts index 9ffe83981c4..ce4b0e34aa7 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsStatus.ts @@ -50,7 +50,7 @@ export class NotificationsStatus { text: `$(megaphone) ${notificationsCount}`, command: TOGGLE_NOTFICATIONS_CENTER_COMMAND_ID, tooltip: localize('notifications', "{0} notifications", notificationsCount) - }, StatusbarAlignment.RIGHT, Number.MIN_VALUE); + }, StatusbarAlignment.RIGHT, -1000 /* towards the far end of the right hand side */); } } diff --git a/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts b/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts index b694e1d7efe..7a5d327e979 100644 --- a/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts +++ b/src/vs/workbench/browser/parts/statusbar/statusbarPart.ts @@ -6,7 +6,6 @@ 'use strict'; import 'vs/css!./media/statusbarpart'; -import dom = require('vs/base/browser/dom'); import nls = require('vs/nls'); import { toErrorMessage } from 'vs/base/common/errorMessage'; import { TPromise } from 'vs/base/common/winjs.base'; @@ -31,6 +30,7 @@ import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/ import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { isThemeColor } from 'vs/editor/common/editorCommon'; import { Color } from 'vs/base/common/color'; +import { addClass, EventHelper } from 'vs/base/browser/dom'; export class StatusbarPart extends Part implements IStatusbarService { @@ -151,12 +151,12 @@ export class StatusbarPart extends Part implements IStatusbarService { private doCreateStatusItem(alignment: StatusbarAlignment, priority: number = 0): HTMLElement { const el = document.createElement('div'); - dom.addClass(el, 'statusbar-item'); + addClass(el, 'statusbar-item'); if (alignment === StatusbarAlignment.RIGHT) { - dom.addClass(el, 'right'); + addClass(el, 'right'); } else { - dom.addClass(el, 'left'); + addClass(el, 'left'); } $(el).setProperty(StatusbarPart.PRIORITY_PROP, priority); @@ -206,10 +206,9 @@ export class StatusbarPart extends Part implements IStatusbarService { let manageExtensionAction: ManageExtensionAction; class StatusBarEntryItem implements IStatusbarItem { - private entry: IStatusbarEntry; constructor( - entry: IStatusbarEntry, + private entry: IStatusbarEntry, @ICommandService private commandService: ICommandService, @IInstantiationService private instantiationService: IInstantiationService, @IMessageService private messageService: IMessageService, @@ -227,7 +226,11 @@ class StatusBarEntryItem implements IStatusbarItem { public render(el: HTMLElement): IDisposable { let toDispose: IDisposable[] = []; - dom.addClass(el, 'statusbar-entry'); + addClass(el, 'statusbar-entry'); + + if (this.entry.class) { + addClass(el, this.entry.class); + } // Text Container let textContainer: HTMLElement; @@ -264,7 +267,7 @@ class StatusBarEntryItem implements IStatusbarItem { // Context Menu if (this.entry.extensionId) { $(textContainer).on('contextmenu', e => { - dom.EventHelper.stop(e, true); + EventHelper.stop(e, true); this.contextMenuService.showContextMenu({ getAnchor: () => el, diff --git a/src/vs/workbench/parts/feedback/electron-browser/feedback.contribution.ts b/src/vs/workbench/parts/feedback/electron-browser/feedback.contribution.ts index 1386c6629fb..9f8b1102649 100644 --- a/src/vs/workbench/parts/feedback/electron-browser/feedback.contribution.ts +++ b/src/vs/workbench/parts/feedback/electron-browser/feedback.contribution.ts @@ -14,7 +14,7 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'v Registry.as(Extensions.Statusbar).registerStatusbarItem(new StatusbarItemDescriptor( FeedbackStatusbarItem, StatusbarAlignment.RIGHT, - -100 /* Low Priority */ + -100 /* towards the end of the right hand side */ )); // Configuration: Workbench -- GitLab