remove event emitter from button

This commit is contained in:
Joao Moreno 2017-11-16 21:06:48 +01:00
parent 8f812cd9b2
commit 7f673ae5fd
3 changed files with 12 additions and 10 deletions

View file

@ -6,13 +6,13 @@
'use strict';
import 'vs/css!./button';
import { EventEmitter } from 'vs/base/common/eventEmitter';
import DOM = require('vs/base/browser/dom');
import { Builder, $ } from 'vs/base/browser/builder';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode } from 'vs/base/common/keyCodes';
import { Color } from 'vs/base/common/color';
import { mixin } from 'vs/base/common/objects';
import Event, { Emitter } from 'vs/base/common/event';
export interface IButtonOptions extends IButtonStyles {
}
@ -30,7 +30,7 @@ const defaultOptions: IButtonStyles = {
buttonForeground: Color.white
};
export class Button extends EventEmitter {
export class Button {
private $el: Builder;
private options: IButtonOptions;
@ -40,11 +40,12 @@ export class Button extends EventEmitter {
private buttonForeground: Color;
private buttonBorder: Color;
private _onDidClick = new Emitter<any>();
readonly onDidClick: Event<any> = this._onDidClick.event;
constructor(container: Builder, options?: IButtonOptions);
constructor(container: HTMLElement, options?: IButtonOptions);
constructor(container: any, options?: IButtonOptions) {
super();
this.options = options || Object.create(null);
mixin(this.options, defaultOptions, false);
@ -64,14 +65,14 @@ export class Button extends EventEmitter {
return;
}
this.emit(DOM.EventType.CLICK, e);
this._onDidClick.fire(e);
});
this.$el.on(DOM.EventType.KEY_DOWN, (e) => {
let event = new StandardKeyboardEvent(e as KeyboardEvent);
let eventHandled = false;
if (this.enabled && event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) {
this.emit(DOM.EventType.CLICK, e);
this._onDidClick.fire(e);
eventHandled = true;
} else if (event.equals(KeyCode.Escape)) {
this.$el.domBlur();
@ -165,7 +166,5 @@ export class Button extends EventEmitter {
this.$el.dispose();
this.$el = null;
}
super.dispose();
}
}

View file

@ -56,7 +56,9 @@ export class EmptyView extends ViewsViewletPanel {
this.button = new Button(section);
attachButtonStyler(this.button, this.themeService);
this.button.addListener('click', () => {
// TODO@isidor: need to dispose this listener
this.button.onDidClick(() => {
const actionClass = this.contextService.getWorkbenchState() === WorkbenchState.WORKSPACE ? AddRootFolderAction : env.isMacintosh ? OpenFileFolderAction : OpenFolderAction;
const action = this.instantiationService.createInstance<string, string, IAction>(actionClass, actionClass.ID, actionClass.LABEL);
this.actionRunner.run(action).done(() => {

View file

@ -213,7 +213,8 @@ export class SearchWidget extends Widget {
buttonHoverBackground: SIDE_BAR_BACKGROUND
});
this.toggleReplaceButton.icon = 'toggle-replace-button collapse';
this.toggleReplaceButton.addListener('click', () => this.onToggleReplaceButton());
// TODO@joh need to dispose this listener eventually
this.toggleReplaceButton.onDidClick(() => this.onToggleReplaceButton());
this.toggleReplaceButton.getElement().title = nls.localize('search.replace.toggle.button.title', "Toggle Replace");
}