You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/08/19 09:18:54 UTC

svn commit: r987045 - in /shindig/trunk/features/src/main/javascript/features: core.util/util.js rpc/wpm.transport.js tabs/tabs.js views/views.js

Author: lindner
Date: Thu Aug 19 07:18:54 2010
New Revision: 987045

URL: http://svn.apache.org/viewvc?rev=987045&view=rev
Log:
Patch from Javier Pedemonte | add gadgets.util.attachBrowserEvent() and gadgets.util.removeBrowserEvent()

Modified:
    shindig/trunk/features/src/main/javascript/features/core.util/util.js
    shindig/trunk/features/src/main/javascript/features/rpc/wpm.transport.js
    shindig/trunk/features/src/main/javascript/features/tabs/tabs.js
    shindig/trunk/features/src/main/javascript/features/views/views.js

Modified: shindig/trunk/features/src/main/javascript/features/core.util/util.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/core.util/util.js?rev=987045&r1=987044&r2=987045&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/core.util/util.js (original)
+++ shindig/trunk/features/src/main/javascript/features/core.util/util.js Thu Aug 19 07:18:54 2010
@@ -326,6 +326,44 @@ gadgets['util'] = function() {
     'unescapeString' : function(str) {
       if (!str) return str;
       return str.replace(/&#([0-9]+);/g, unescapeEntity);
+    },
+
+
+    /**
+     * Attach an event listener to given DOM element (Not a gadget standard)
+     * 
+     * @param {object} elem  DOM element on which to attach event.
+     * @param {string} eventName  Event type to listen for.
+     * @param {function} callback  Invoked when specified event occurs.
+     * @param {boolean} useCapture  If true, initiates capture.
+     */
+    'attachBrowserEvent': function(elem, eventName, callback, useCapture) {
+      if (typeof elem.addEventListener != 'undefined') {
+        elem.addEventListener(eventName, callback, useCapture);
+      } else if (typeof elem.attachEvent != 'undefined') {
+        elem.attachEvent('on' + eventName, callback);
+      } else {
+        gadgets.warn("cannot attachBrowserEvent: " + eventName);
+      }
+    },
+
+    /**
+     * Remove event listener. (Shindig internal implementation only)
+     * 
+     * @param {object} elem  DOM element from which to remove event.
+     * @param {string} eventName  Event type to remove.
+     * @param {function} callback  Listener to remove.
+     * @param {boolean} useCapture  Specifies whether listener being removed was added with
+     *                              capture enabled.
+     */
+    'removeBrowserEvent': function(elem, eventName, callback, useCapture) {
+      if (elem.removeEventListener) {
+        elem.removeEventListener(eventName, callback, useCapture);
+      } else if (elem.detachEvent){
+        elem.detachEvent('on' + eventName, callback);
+      } else {
+        gadgets.warn("cannot removeBrowserEvent: " + eventName);
+      }
     }
   };
 }();

Modified: shindig/trunk/features/src/main/javascript/features/rpc/wpm.transport.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/rpc/wpm.transport.js?rev=987045&r1=987044&r2=987045&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/rpc/wpm.transport.js (original)
+++ shindig/trunk/features/src/main/javascript/features/rpc/wpm.transport.js Thu Aug 19 07:18:54 2010
@@ -63,13 +63,7 @@ gadgets.rpctx.wpm = function() {
       };
  
       // Set up native postMessage handler.
-      if (typeof window.addEventListener != 'undefined') { 
-          window.addEventListener('message', onmessage, false); 
-      } else if (typeof window.attachEvent != 'undefined') { 
-          window.attachEvent('onmessage', onmessage); 
-      } else {
-          gadgets.warn("wpm init failure");
-      }
+      gadgets.util.attachBrowserEvent(window, 'message', onmessage, false);
 
       ready('..', true);  // Immediately ready to send to parent.
       return true;

Modified: shindig/trunk/features/src/main/javascript/features/tabs/tabs.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/tabs/tabs.js?rev=987045&r1=987044&r2=987045&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/tabs/tabs.js (original)
+++ shindig/trunk/features/src/main/javascript/features/tabs/tabs.js Thu Aug 19 07:18:54 2010
@@ -448,11 +448,7 @@ gadgets.TabSet.prototype.createTabTable_
     var adjustNavigationFn = function() {
       me.adjustNavigation_();
     };
-    if (window.addEventListener) {
-      window.addEventListener('resize', adjustNavigationFn, false);
-    } else if (window.attachEvent) {
-      window.attachEvent('onresize', adjustNavigationFn);
-    }
+    gadgets.util.attachBrowserEvent(window, "resize", adjustNavigationFn, false);
   }
 
   this.navTable_ = navTable;

Modified: shindig/trunk/features/src/main/javascript/features/views/views.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/views/views.js?rev=987045&r1=987044&r2=987045&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/views/views.js (original)
+++ shindig/trunk/features/src/main/javascript/features/views/views.js Thu Aug 19 07:18:54 2010
@@ -115,11 +115,7 @@ gadgets.views = function() {
     currentView = supportedViews[urlParams.view] || supportedViews["default"];
 
     if (conf.rewriteLinks) {
-      if (document.attachEvent) {
-        document.attachEvent("onclick", forceNavigate);
-      } else {
-        document.addEventListener("click", forceNavigate, false);
-      }
+      gadgets.util.attachBrowserEvent(document, "click", forceNavigate, false);
     }
   }