Skip to content

Commit e208fdb

Browse files
committed
refactor(NgEvent): code cleanup
1 parent f60ded1 commit e208fdb

File tree

2 files changed

+62
-76
lines changed

2 files changed

+62
-76
lines changed

lib/directive/ng_events.dart

+59-71
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
part of angular.directive;
22

3-
// NOTE(deboer): onXX functions are now typed as 'var' instead of 'Getter'
4-
// to work-around https://code.google.com/p/dart/issues/detail?id=13519
5-
63
/**
74
* Allows you to specify custom behavior for DOM UI events such as mouse,
85
* keyboard and touch events.
@@ -128,82 +125,73 @@ part of angular.directive;
128125
@Decorator(selector: '[ng-touchmove]', map: const {'ng-touchmove': '&onTouchMove'})
129126
@Decorator(selector: '[ng-touchstart]', map: const {'ng-touchstart': '&onTouchStart'})
130127
@Decorator(selector: '[ng-transitionend]', map: const {'ng-transitionend': '&onTransitionEnd'})
131-
132128
class NgEvent {
133-
// Is it better to use a map of listeners or have 29 properties on this
134-
// object? One would pretty much only assign to one or two of those
135-
// properties. I'm opting for the map since it's less boilerplate code.
136-
var listeners = new HashMap();
137-
final dom.Element element;
138-
final Scope scope;
129+
// Is it better to use a map of listeners or have 29 properties on this object? One would pretty
130+
// much only assign to one or two of those properties. I'm opting for the map since it's less
131+
// boilerplate code.
132+
var listeners = new HashMap<int, BoundExpression>();
133+
final dom.Element _element;
134+
final Scope _scope;
139135

140-
NgEvent(this.element, this.scope);
136+
NgEvent(this._element, this._scope);
141137

142-
// NOTE: Do not use the element.on['some_event'].listen(...) syntax. Doing so
143-
// has two downsides:
144-
// - it loses the event typing
145-
// - some DOM events may have multiple platform-dependent event names
146-
// under the covers. The standard Stream getters you will get the
147-
// platform specific event name automatically but you're on your own if
148-
// you use the on[] syntax. This also applies to $dom_addEventListener.
149-
// Ref: http://api.dartlang.org/docs/releases/latest/dart_html/Events.html
150-
initListener(var stream, var handler) {
138+
void _initListener(stream, BoundExpression handler) {
151139
int key = stream.hashCode;
152140
if (!listeners.containsKey(key)) {
153141
listeners[key] = handler;
154142
stream.listen((event) => handler({r"$event": event}));
155143
}
156144
}
157145

158-
set onAbort(value) => initListener(element.onAbort, value);
159-
set onBeforeCopy(value) => initListener(element.onBeforeCopy, value);
160-
set onBeforeCut(value) => initListener(element.onBeforeCut, value);
161-
set onBeforePaste(value) => initListener(element.onBeforePaste, value);
162-
set onBlur(value) => initListener(element.onBlur, value);
163-
set onChange(value) => initListener(element.onChange, value);
164-
set onClick(value) => initListener(element.onClick, value);
165-
set onContextMenu(value) => initListener(element.onContextMenu, value);
166-
set onCopy(value) => initListener(element.onCopy, value);
167-
set onCut(value) => initListener(element.onCut, value);
168-
set onDoubleClick(value) => initListener(element.onDoubleClick, value);
169-
set onDrag(value) => initListener(element.onDrag, value);
170-
set onDragEnd(value) => initListener(element.onDragEnd, value);
171-
set onDragEnter(value) => initListener(element.onDragEnter, value);
172-
set onDragLeave(value) => initListener(element.onDragLeave, value);
173-
set onDragOver(value) => initListener(element.onDragOver, value);
174-
set onDragStart(value) => initListener(element.onDragStart, value);
175-
set onDrop(value) => initListener(element.onDrop, value);
176-
set onError(value) => initListener(element.onError, value);
177-
set onFocus(value) => initListener(element.onFocus, value);
178-
set onFullscreenChange(value) => initListener(element.onFullscreenChange, value);
179-
set onFullscreenError(value) => initListener(element.onFullscreenError, value);
180-
set onInput(value) => initListener(element.onInput, value);
181-
set onInvalid(value) => initListener(element.onInvalid, value);
182-
set onKeyDown(value) => initListener(element.onKeyDown, value);
183-
set onKeyPress(value) => initListener(element.onKeyPress, value);
184-
set onKeyUp(value) => initListener(element.onKeyUp, value);
185-
set onLoad(value) => initListener(element.onLoad, value);
186-
set onMouseDown(value) => initListener(element.onMouseDown, value);
187-
set onMouseEnter(value) => initListener(element.onMouseEnter, value);
188-
set onMouseLeave(value) => initListener(element.onMouseLeave, value);
189-
set onMouseMove(value) => initListener(element.onMouseMove, value);
190-
set onMouseOut(value) => initListener(element.onMouseOut, value);
191-
set onMouseOver(value) => initListener(element.onMouseOver, value);
192-
set onMouseUp(value) => initListener(element.onMouseUp, value);
193-
set onMouseWheel(value) => initListener(element.onMouseWheel, value);
194-
set onPaste(value) => initListener(element.onPaste, value);
195-
set onReset(value) => initListener(element.onReset, value);
196-
set onScroll(value) => initListener(element.onScroll, value);
197-
set onSearch(value) => initListener(element.onSearch, value);
198-
set onSelect(value) => initListener(element.onSelect, value);
199-
set onSelectStart(value) => initListener(element.onSelectStart, value);
200-
// set onSpeechChange(value) => initListener(element.onSpeechChange, value);
201-
set onSubmit(value) => initListener(element.onSubmit, value);
202-
set onTouchCancel(value) => initListener(element.onTouchCancel, value);
203-
set onTouchEnd(value) => initListener(element.onTouchEnd, value);
204-
set onTouchEnter(value) => initListener(element.onTouchEnter, value);
205-
set onTouchLeave(value) => initListener(element.onTouchLeave, value);
206-
set onTouchMove(value) => initListener(element.onTouchMove, value);
207-
set onTouchStart(value) => initListener(element.onTouchStart, value);
208-
set onTransitionEnd(value) => initListener(element.onTransitionEnd, value);
146+
void set onAbort(value) => _initListener(_element.onAbort, value);
147+
void set onBeforeCopy(value) => _initListener(_element.onBeforeCopy, value);
148+
void set onBeforeCut(value) => _initListener(_element.onBeforeCut, value);
149+
void set onBeforePaste(value) => _initListener(_element.onBeforePaste, value);
150+
void set onBlur(value) => _initListener(_element.onBlur, value);
151+
void set onChange(value) => _initListener(_element.onChange, value);
152+
void set onClick(value) => _initListener(_element.onClick, value);
153+
void set onContextMenu(value) => _initListener(_element.onContextMenu, value);
154+
void set onCopy(value) => _initListener(_element.onCopy, value);
155+
void set onCut(value) => _initListener(_element.onCut, value);
156+
void set onDoubleClick(value) => _initListener(_element.onDoubleClick, value);
157+
void set onDrag(value) => _initListener(_element.onDrag, value);
158+
void set onDragEnd(value) => _initListener(_element.onDragEnd, value);
159+
void set onDragEnter(value) => _initListener(_element.onDragEnter, value);
160+
void set onDragLeave(value) => _initListener(_element.onDragLeave, value);
161+
void set onDragOver(value) => _initListener(_element.onDragOver, value);
162+
void set onDragStart(value) => _initListener(_element.onDragStart, value);
163+
void set onDrop(value) => _initListener(_element.onDrop, value);
164+
void set onError(value) => _initListener(_element.onError, value);
165+
void set onFocus(value) => _initListener(_element.onFocus, value);
166+
void set onFullscreenChange(value) => _initListener(_element.onFullscreenChange, value);
167+
void set onFullscreenError(value) => _initListener(_element.onFullscreenError, value);
168+
void set onInput(value) => _initListener(_element.onInput, value);
169+
void set onInvalid(value) => _initListener(_element.onInvalid, value);
170+
void set onKeyDown(value) => _initListener(_element.onKeyDown, value);
171+
void set onKeyPress(value) => _initListener(_element.onKeyPress, value);
172+
void set onKeyUp(value) => _initListener(_element.onKeyUp, value);
173+
void set onLoad(value) => _initListener(_element.onLoad, value);
174+
void set onMouseDown(value) => _initListener(_element.onMouseDown, value);
175+
void set onMouseEnter(value) => _initListener(_element.onMouseEnter, value);
176+
void set onMouseLeave(value) => _initListener(_element.onMouseLeave, value);
177+
void set onMouseMove(value) => _initListener(_element.onMouseMove, value);
178+
void set onMouseOut(value) => _initListener(_element.onMouseOut, value);
179+
void set onMouseOver(value) => _initListener(_element.onMouseOver, value);
180+
void set onMouseUp(value) => _initListener(_element.onMouseUp, value);
181+
void set onMouseWheel(value) => _initListener(_element.onMouseWheel, value);
182+
void set onPaste(value) => _initListener(_element.onPaste, value);
183+
void set onReset(value) => _initListener(_element.onReset, value);
184+
void set onScroll(value) => _initListener(_element.onScroll, value);
185+
void set onSearch(value) => _initListener(_element.onSearch, value);
186+
void set onSelect(value) => _initListener(_element.onSelect, value);
187+
void set onSelectStart(value) => _initListener(_element.onSelectStart, value);
188+
// void set onSpeechChange(value) => initListener(element.onSpeechChange, value);
189+
void set onSubmit(value) => _initListener(_element.onSubmit, value);
190+
void set onTouchCancel(value) => _initListener(_element.onTouchCancel, value);
191+
void set onTouchEnd(value) => _initListener(_element.onTouchEnd, value);
192+
void set onTouchEnter(value) => _initListener(_element.onTouchEnter, value);
193+
void set onTouchLeave(value) => _initListener(_element.onTouchLeave, value);
194+
void set onTouchMove(value) => _initListener(_element.onTouchMove, value);
195+
void set onTouchStart(value) => _initListener(_element.onTouchStart, value);
196+
void set onTransitionEnd(value) => _initListener(_element.onTransitionEnd, value);
209197
}

test/directive/ng_events_spec.dart

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ library ng_events_spec;
33
import '../_specs.dart';
44
import 'dart:html' as dom;
55

6-
void addTest(String name, [String eventType='MouseEvent', String eventName, exclusive=false]) {
7-
if (eventName == null) {
8-
eventName = name;
9-
}
6+
void addTest(String name, [String eventType='MouseEvent', String eventName, exclusive]) {
7+
if (eventName == null) eventName = name;
108

119
var describeBody = () {
1210
TestBed _;
@@ -21,7 +19,7 @@ void addTest(String name, [String eventType='MouseEvent', String eventName, excl
2119
});
2220
};
2321

24-
if (exclusive) {
22+
if (exclusive == true) {
2523
ddescribe('ng-$name', describeBody);
2624
} else {
2725
describe('ng-$name', describeBody);

0 commit comments

Comments
 (0)