提交 b99fad3a 编写于 作者: S SteVen Batten

more fixes from merge

上级 703ba640
......@@ -17,7 +17,7 @@ import * as DOM from 'vs/base/browser/dom';
import * as types from 'vs/base/common/types';
import { EventType, Gesture } from 'vs/base/browser/touch';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { KeyCode, KeyMod, KeyCodeUtils } from 'vs/base/common/keyCodes';
import { IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview';
import { Event, Emitter } from 'vs/base/common/event';
......@@ -43,6 +43,8 @@ export class BaseActionItem implements IActionItem {
public _context: any;
public _action: IAction;
static MNEMONIC_REGEX: RegExp = /&&(.)/g;
private _actionRunner: IActionRunner;
constructor(context: any, action: IAction, protected options?: IBaseActionItemOptions) {
......@@ -167,12 +169,14 @@ export class BaseActionItem implements IActionItem {
public focus(): void {
if (this.builder) {
this.builder.domFocus();
this.builder.addClass('focused');
}
}
public blur(): void {
if (this.builder) {
this.builder.domBlur();
this.builder.removeClass('focused');
}
}
......@@ -273,7 +277,9 @@ export class ActionItem extends BaseActionItem {
public _updateLabel(): void {
if (this.options.label) {
this.$e.text(this.getAction().label);
let label = this.getAction().label;
label = label.replace(BaseActionItem.MNEMONIC_REGEX, '<u>$1</u>');
this.$e.innerHtml(label);
}
}
......@@ -372,6 +378,9 @@ export class ActionBar implements IActionRunner {
// Items
public items: IActionItem[];
private mnemonics: {
[index: number]: IAction;
} = {};
private focusedItem: number;
private focusTracker: DOM.IFocusTracker;
......@@ -446,6 +455,8 @@ export class ActionBar implements IActionRunner {
this.focusNext();
} else if (event.equals(KeyCode.Escape)) {
this.cancel();
} else if (this.mnemonics[event.keyCode]) {
this.run(this.mnemonics[event.keyCode]);
} else if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) {
// Nothing, just staying out of the else branch
} else {
......@@ -487,7 +498,7 @@ export class ActionBar implements IActionRunner {
this.actionsList = document.createElement('ul');
this.actionsList.className = 'actions-container';
if (this.options.isMenu) {
this.actionsList.setAttribute('role', 'menubar');
this.actionsList.setAttribute('role', 'menu');
} else {
this.actionsList.setAttribute('role', 'toolbar');
}
......@@ -558,6 +569,15 @@ export class ActionBar implements IActionRunner {
return this.domNode;
}
private _addMnemonic(action: IAction): void {
let matches = BaseActionItem.MNEMONIC_REGEX.exec(action.label);
if (matches && matches.length === 2) {
let mnemonic = matches[1];
this.mnemonics[KeyCodeUtils.fromString(mnemonic)] = action;
}
}
public push(arg: IAction | IAction[], options: IActionOptions = {}): void {
const actions: IAction[] = !Array.isArray(arg) ? [arg] : arg;
......@@ -575,6 +595,8 @@ export class ActionBar implements IActionRunner {
e.stopPropagation();
});
this._addMnemonic(action);
let item: IActionItem = null;
if (this.options.actionItemProvider) {
......@@ -808,4 +830,4 @@ export class SelectActionItem extends BaseActionItem {
super.dispose();
}
}
}
\ No newline at end of file
......@@ -18,6 +18,7 @@ export interface IMenuOptions {
actionItemProvider?: IActionItemProvider;
actionRunner?: IActionRunner;
getKeyBinding?: (action: IAction) => ResolvedKeybinding;
ariaLabel?: string;
}
export class Menu {
......@@ -27,9 +28,11 @@ export class Menu {
constructor(container: HTMLElement, actions: IAction[], options: IMenuOptions = {}) {
addClass(container, 'monaco-menu-container');
container.setAttribute('role', 'presentation');
let menuContainer = document.createElement('div');
addClass(menuContainer, 'monaco-menu');
menuContainer.setAttribute('role', 'presentation');
container.appendChild(menuContainer);
this.actionBar = new ActionBar(menuContainer, {
......@@ -37,10 +40,11 @@ export class Menu {
actionItemProvider: options.actionItemProvider,
context: options.context,
actionRunner: options.actionRunner,
isMenu: true
isMenu: true,
ariaLabel: options.ariaLabel
});
this.actionBar.push(actions, { icon: true, label: true });
this.actionBar.push(actions, { icon: true, label: true, isMenu: true });
}
public get onDidCancel(): Event<void> {
......
......@@ -56,7 +56,6 @@ export class Menubar {
private nativeTabMenuItems: Electron.MenuItem[];
private menubarMenus: IMenubarData = {};
private menubarWindowId: number;
constructor(
@IUpdateService private updateService: IUpdateService,
......@@ -136,7 +135,6 @@ export class Menubar {
updateMenu(menus: IMenubarData, windowId: number) {
this.menubarMenus = menus;
this.menubarWindowId = windowId;
this.scheduleUpdateMenu();
}
......
......@@ -104,9 +104,9 @@ export class WorkbenchLayout extends Disposable implements IVerticalSashLayoutPr
this.restorePreviousState();
// Create layout sashes
this.sashXOne = new Sash(this.workbenchContainer, this, { baseSize: 5 });
this.sashXTwo = new Sash(this.workbenchContainer, this, { baseSize: 5 });
this.sashY = new Sash(this.workbenchContainer, this, { baseSize: 4, orientation: Orientation.HORIZONTAL });
this.sashXOne = new Sash(this.workbenchContainer, this);
this.sashXTwo = new Sash(this.workbenchContainer, this);
this.sashY = new Sash(this.workbenchContainer, this, { orientation: Orientation.HORIZONTAL });
this.onMaximizeChange(false);
......
......@@ -42,7 +42,6 @@
}
.menubar-menu-items-holder {
/* display: none; */
position: absolute;
left: 0px;
opacity: 1;
......
......@@ -1084,6 +1084,21 @@ export class Workbench extends Disposable implements IPartService {
// Notifications Alerts
this._register(this.instantiationService.createInstance(NotificationsAlerts, this.notificationService.model));
// Notifications Status
const notificationsStatus = this.instantiationService.createInstance(NotificationsStatus, this.notificationService.model);
// Eventing
this._register(this.notificationsCenter.onDidChangeVisibility(() => {
// Update status
notificationsStatus.update(this.notificationsCenter.isVisible);
// Update toasts
this.notificationsToasts.update(this.notificationsCenter.isVisible);
// Register commands
registerNotificationCommands(this.notificationsCenter, this.notificationsToasts);
}));
}
private _onTitleBarVisibilityChange: Emitter<void> = new Emitter<void>();
......
......@@ -958,11 +958,16 @@ export class TestWindowService implements IWindowService {
public _serviceBrand: any;
onDidChangeFocus: Event<boolean> = new Emitter<boolean>().event;
onDidChangeMaximize: Event<boolean>;
isFocused(): TPromise<boolean> {
return TPromise.as(false);
}
isMaximized(): TPromise<boolean> {
return TPromise.as(false);
}
getConfiguration(): IWindowConfiguration {
return Object.create(null);
}
......@@ -1027,6 +1032,18 @@ export class TestWindowService implements IWindowService {
return TPromise.as(void 0);
}
maximizeWindow(): TPromise<void> {
return TPromise.as(void 0);
}
unmaximizeWindow(): TPromise<void> {
return TPromise.as(void 0);
}
minimizeWindow(): TPromise<void> {
return TPromise.as(void 0);
}
openWindow(paths: string[], options?: { forceNewWindow?: boolean, forceReuseWindow?: boolean, forceOpenWorkspaceAsFile?: boolean }): TPromise<void> {
return TPromise.as(void 0);
}
......@@ -1104,6 +1121,8 @@ export class TestWindowsService implements IWindowsService {
onWindowOpen: Event<number>;
onWindowFocus: Event<number>;
onWindowBlur: Event<number>;
onWindowMaximize: Event<number>;
onWindowUnmaximize: Event<number>;
isFocused(windowId: number): TPromise<boolean> {
return TPromise.as(false);
......@@ -1189,6 +1208,10 @@ export class TestWindowsService implements IWindowsService {
return TPromise.as(void 0);
}
minimizeWindow(windowId: number): TPromise<void> {
return TPromise.as(void 0);
}
unmaximizeWindow(windowId: number): TPromise<void> {
return TPromise.as(void 0);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册