提交 32018e28 编写于 作者: B Benjamin Pasero

notifications - better status bar alignment

上级 f208dc52
......@@ -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';
}
......
......@@ -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);
}
......
......@@ -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 {
......
......@@ -209,7 +209,7 @@ Registry.as<IEditorInputFactoryRegistry>(EditorInputExtensions.EditorInputFactor
// Register Editor Status
const statusBar = Registry.as<IStatusbarRegistry>(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<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions);
......
......@@ -322,7 +322,7 @@ class ZoomStatusbarItem extends Themable implements IStatusbarItem {
}
Registry.as<IStatusbarRegistry>(Extensions.Statusbar).registerStatusbarItem(
new StatusbarItemDescriptor(ZoomStatusbarItem, StatusbarAlignment.RIGHT, 101)
new StatusbarItemDescriptor(ZoomStatusbarItem, StatusbarAlignment.RIGHT, 101 /* to the left of editor status (100) */)
);
interface ImageState {
......
......@@ -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 */);
}
}
......
......@@ -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,
......
......@@ -14,7 +14,7 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'v
Registry.as<IStatusbarRegistry>(Extensions.Statusbar).registerStatusbarItem(new StatusbarItemDescriptor(
FeedbackStatusbarItem,
StatusbarAlignment.RIGHT,
-100 /* Low Priority */
-100 /* towards the end of the right hand side */
));
// Configuration: Workbench
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册