home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 July / CA07.iso / Multimedija / QuickTimeInstaller.exe / AppleApplicationSupport.msi / WebKit.resources_inspector_Object.js < prev    next >
Encoding:
Text File  |  2010-03-15  |  3.2 KB  |  83 lines

  1. /*
  2.  * Copyright (C) 2008 Apple Inc. All Rights Reserved.
  3.  *
  4.  * Redistribution and use in source and binary forms, with or without
  5.  * modification, are permitted provided that the following conditions
  6.  * are met:
  7.  * 1. Redistributions of source code must retain the above copyright
  8.  *    notice, this list of conditions and the following disclaimer.
  9.  * 2. Redistributions in binary form must reproduce the above copyright
  10.  *    notice, this list of conditions and the following disclaimer in the
  11.  *    documentation and/or other materials provided with the distribution.
  12.  *
  13.  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
  14.  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  15.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  16.  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
  17.  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  18.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  19.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  20.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  21.  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  22.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  23.  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24.  */
  25.  
  26. WebInspector.Object = function() {
  27. }
  28.  
  29. WebInspector.Object.prototype = {
  30.     addEventListener: function(eventType, listener, thisObject) {
  31.         if (!("_listeners" in this))
  32.             this._listeners = {};
  33.         if (!(eventType in this._listeners))
  34.             this._listeners[eventType] = [];
  35.         this._listeners[eventType].push({ thisObject: thisObject, listener: listener });
  36.     },
  37.  
  38.     removeEventListener: function(eventType, listener, thisObject) {
  39.         if (!("_listeners" in this) || !(eventType in this._listeners))
  40.             return;
  41.         var listeners = this._listeners[eventType];
  42.         for (var i = 0; i < listeners.length; ++i) {
  43.             if (listener && listeners[i].listener === listener && listeners[i].thisObject === thisObject)
  44.                 listeners.splice(i, 1);
  45.             else if (!listener && thisObject && listeners[i].thisObject === thisObject)
  46.                 listeners.splice(i, 1);
  47.         }
  48.  
  49.         if (!listeners.length)
  50.             delete this._listeners[eventType];
  51.     },
  52.  
  53.     dispatchEventToListeners: function(eventType) {
  54.         if (!("_listeners" in this) || !(eventType in this._listeners))
  55.             return;
  56.  
  57.         var stoppedPropagation = false;
  58.  
  59.         function stopPropagation()
  60.         {
  61.             stoppedPropagation = true;
  62.         }
  63.  
  64.         function preventDefault()
  65.         {
  66.             this.defaultPrevented = true;
  67.         }
  68.  
  69.         var event = {target: this, type: eventType, defaultPrevented: false};
  70.         event.stopPropagation = stopPropagation.bind(event);
  71.         event.preventDefault = preventDefault.bind(event);
  72.  
  73.         var listeners = this._listeners[eventType];
  74.         for (var i = 0; i < listeners.length; ++i) {
  75.             listeners[i].listener.call(listeners[i].thisObject, event);
  76.             if (stoppedPropagation)
  77.                 break;
  78.         }
  79.  
  80.         return event.defaultPrevented;
  81.     }
  82. }
  83.