change way we handle event.target expressions.  Now we wrap all events with a 
BrowserEvent.  This probably needs revisiting again


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/b7f109fa
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/b7f109fa
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/b7f109fa

Branch: refs/heads/develop
Commit: b7f109fa3acfab85162852c1ed6625ef40fb1997
Parents: 24205c9
Author: Alex Harui <aha...@apache.org>
Authored: Fri Apr 3 16:09:53 2015 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Fri Apr 3 16:09:53 2015 -0700

----------------------------------------------------------------------
 .../org/apache/flex/core/HTMLElementWrapper.js  |  34 ++++-
 .../src/org/apache/flex/events/BrowserEvent.js  | 139 +++++++++++++++++++
 .../src/org/apache/flex/events/DragEvent.js     |   3 +-
 .../src/org/apache/flex/events/ElementEvents.js |  47 +++++++
 .../FlexJS/src/org/apache/flex/events/Event.js  |  22 ---
 .../org/apache/flex/events/EventDispatcher.js   |  16 +--
 6 files changed, 223 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7f109fa/frameworks/js/FlexJS/src/org/apache/flex/core/HTMLElementWrapper.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/core/HTMLElementWrapper.js 
b/frameworks/js/FlexJS/src/org/apache/flex/core/HTMLElementWrapper.js
index 0b1d19d..01dbfdf 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/HTMLElementWrapper.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/HTMLElementWrapper.js
@@ -16,6 +16,7 @@ goog.provide('org_apache_flex_core_HTMLElementWrapper');
 
 goog.require('org_apache_flex_core_IBeadModel');
 goog.require('org_apache_flex_core_IStrand');
+goog.require('org_apache_flex_events_BrowserEvent');
 goog.require('org_apache_flex_events_EventDispatcher');
 goog.require('org_apache_flex_utils_Language');
 
@@ -127,4 +128,35 @@ 
org_apache_flex_core_HTMLElementWrapper.prototype.removeBead = function(bead) {
   }
 
   return null;
-};
\ No newline at end of file
+};
+
+
+/**
+ * @type {function((goog.events.Listener|null), (Object|null)):boolean}
+ */
+org_apache_flex_core_HTMLElementWrapper.googFireListener = null;
+
+/**
+ * Fires a listener with a set of arguments
+ *
+ * @param {goog.events.Listener} listener The listener object to call.
+ * @param {Object} eventObject The event object to pass to the listener.
+ * @return {boolean} Result of listener.
+ */
+org_apache_flex_core_HTMLElementWrapper.fireListenerOverride = 
function(listener, eventObject) {
+  var e = new org_apache_flex_events_BrowserEvent();
+  e.wrappedEvent = eventObject;
+  return org_apache_flex_core_HTMLElementWrapper.googFireListener(listener, e);
+};
+
+
+org_apache_flex_core_HTMLElementWrapper.installOverride = function() {
+  org_apache_flex_core_HTMLElementWrapper.googFireListener =
+      goog.events.fireListener;
+  goog.events.fireListener = 
org_apache_flex_core_HTMLElementWrapper.fireListenerOverride;
+};
+
+       
+org_apache_flex_core_HTMLElementWrapper.installedOverride =
+    org_apache_flex_core_HTMLElementWrapper.installOverride();
+       

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7f109fa/frameworks/js/FlexJS/src/org/apache/flex/events/BrowserEvent.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/events/BrowserEvent.js 
b/frameworks/js/FlexJS/src/org/apache/flex/events/BrowserEvent.js
new file mode 100644
index 0000000..454c6ee
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/events/BrowserEvent.js
@@ -0,0 +1,139 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+goog.provide('org_apache_flex_events_BrowserEvent');
+
+goog.require('goog.events.BrowserEvent');
+//goog.require('org_apache_flex_events_Event');
+
+
+
+/**
+ * @constructor
+ * @extends {org_apache_flex_events_Event}
+ */
+org_apache_flex_events_BrowserEvent = function() {
+//  org_apache_flex_events_BrowserEvent.base(this, 'constructor');
+
+};
+//goog.inherits(org_apache_flex_events_BrowserEvent,
+//    org_apache_flex_events_Event);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_BrowserEvent.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'BrowserEvent',
+                qName: 'org_apache_flex_events_BrowserEvent' }] };
+
+
+/**
+ * @type {?goog.events.BrowserEvent}
+ */
+org_apache_flex_events_BrowserEvent.prototype.wrappedEvent = null;
+
+
+/**
+ */
+org_apache_flex_events_BrowserEvent.prototype.preventDefault = function() {
+  this.wrappedEvent.preventDefault();
+}
+
+Object.defineProperties(org_apache_flex_events_BrowserEvent.prototype, {
+    'currentTarget': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       var o = this.wrappedEvent.currentTarget;
+                       if (o.flexjs_wrapper)
+                         return o.flexjs_wrapper;
+                       return o;
+               }
+       },
+       'button': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.button;
+               }
+       },
+       'charCode': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.charCode;
+               }
+       },
+       'clientX': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.clientX;
+               }
+       },
+       'clientY': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.clientY;
+               }
+       },
+       'keyCode': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.keyCode;
+               }
+       },
+       'offsetX': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.offsetX;
+               }
+       },
+       'offsetY': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.offsetY;
+               }
+       },
+       'screenX': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.screenX;
+               }
+       },
+       'screenY': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       return this.wrappedEvent.screenY;
+               }
+       },
+       'relatedTarget': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       var o = this.wrappedEvent.relatedTarget;
+                       if (o.flexjs_wrapper)
+                         return o.flexjs_wrapper;
+                       return o;
+               }
+       },
+    'target': {
+               /** @this {org_apache_flex_events_BrowserEvent} */
+               get: function() {
+                       var o = this.wrappedEvent.target;
+                       if (o.flexjs_wrapper)
+                         return o.flexjs_wrapper;
+                       return o;
+               }
+       }
+});
+
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7f109fa/frameworks/js/FlexJS/src/org/apache/flex/events/DragEvent.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/events/DragEvent.js 
b/frameworks/js/FlexJS/src/org/apache/flex/events/DragEvent.js
index a75791f..e33feda 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/events/DragEvent.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/events/DragEvent.js
@@ -15,6 +15,7 @@
 goog.provide('org_apache_flex_events_DragEvent');
 
 goog.require('goog.events.BrowserEvent');
+goog.require('org_apache_flex_events_ElementEvents');
 goog.require('org_apache_flex_events_EventDispatcher');
 
 
@@ -132,7 +133,7 @@ org_apache_flex_events_DragEvent.DRAG_DROP = 'dragDrop';
  * @return {boolean}
  */
 org_apache_flex_events_DragEvent.installDragEventMixin = function() {
-  var o = org_apache_flex_events_EventDispatcher.elementEvents;
+  var o = org_apache_flex_events_ElementEvents.elementEvents;
   o['dragEnd'] = 1;
   o['dragMove'] = 1;
   return true;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7f109fa/frameworks/js/FlexJS/src/org/apache/flex/events/ElementEvents.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/events/ElementEvents.js 
b/frameworks/js/FlexJS/src/org/apache/flex/events/ElementEvents.js
new file mode 100644
index 0000000..315b105
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/events/ElementEvents.js
@@ -0,0 +1,47 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+goog.provide('org_apache_flex_events_ElementEvents');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_events_ElementEvents = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_events_ElementEvents.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ElementEvents',
+                qName: 'org_apache_flex_events_ElementEvents' }] };
+
+
+/**
+ * @type {Object}
+ */
+org_apache_flex_events_ElementEvents.elementEvents = {
+  'mouseover': 1,
+  'mouseout': 1,
+  'mouseup': 1,
+  'mousedown': 1,
+  'mousemove': 1,
+  'rollover': 1,
+  'rollout': 1
+};
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7f109fa/frameworks/js/FlexJS/src/org/apache/flex/events/Event.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/events/Event.js 
b/frameworks/js/FlexJS/src/org/apache/flex/events/Event.js
index 876c015..73ecdd0 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/events/Event.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/events/Event.js
@@ -69,25 +69,3 @@ org_apache_flex_events_Event.prototype.type = '';
 org_apache_flex_events_Event.prototype.init = function(type) {
   this.type = type;
 };
-
-
-Object.defineProperties(org_apache_flex_events_Event.prototype, {
-    'type': {
-        /** @this {org_apache_flex_events_Event} */
-        get: function() {
-            return this.type;
-        }
-    },
-    'target': {
-        /** @this {org_apache_flex_events_Event} */
-        get: function() {
-            return this.target;
-        }
-    },
-    'currentTarget': {
-        /** @this {org_apache_flex_events_Event} */
-        get: function() {
-            return this.currentTarget;
-        }
-    }
-});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b7f109fa/frameworks/js/FlexJS/src/org/apache/flex/events/EventDispatcher.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/events/EventDispatcher.js 
b/frameworks/js/FlexJS/src/org/apache/flex/events/EventDispatcher.js
index e1e2fb7..9f66ef7 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/events/EventDispatcher.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/events/EventDispatcher.js
@@ -15,6 +15,7 @@
 goog.provide('org_apache_flex_events_EventDispatcher');
 
 goog.require('goog.events.EventTarget');
+goog.require('org_apache_flex_events_ElementEvents');
 goog.require('org_apache_flex_events_IEventDispatcher');
 
 
@@ -59,7 +60,7 @@ 
org_apache_flex_events_EventDispatcher.prototype.addEventListener =
       this.element.nodeName.toLowerCase() !== 'div' &&
       this.element.nodeName.toLowerCase() !== 'body') {
     source = this.element;
-  } else if (org_apache_flex_events_EventDispatcher.elementEvents[type]) {
+  } else if (org_apache_flex_events_ElementEvents.elementEvents[type]) {
     // mouse and keyboard events also dispatch off the element.
     source = this.element;
   }
@@ -68,16 +69,3 @@ 
org_apache_flex_events_EventDispatcher.prototype.addEventListener =
 };
 
 
-/**
- * @type {Object}
- */
-org_apache_flex_events_EventDispatcher.elementEvents = {
-  'mouseover': 1,
-  'mouseout': 1,
-  'mouseup': 1,
-  'mousedown': 1,
-  'mousemove': 1,
-  'rollover': 1,
-  'rollout': 1
-};
-

Reply via email to