You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-commits@xmlgraphics.apache.org by Apache Wiki <wi...@apache.org> on 2006/11/24 05:52:30 UTC

[Xmlgraphics-batik Wiki] Update of "CustomJavaScriptEvents" by CameronMcCormack

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Xmlgraphics-batik Wiki" for change notification.

The following page has been changed by CameronMcCormack:
http://wiki.apache.org/xmlgraphics-batik/CustomJavaScriptEvents

The comment on the change is:
DOM Level 3 Events are now much simpler

------------------------------------------------------------------------------
- = Custom JavaScript Events =
+ deleted
  
- '''Note that this information is out of date, and that Batik has been since updated to match the current
- [http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-CustomEvent DOM Level 3 Events working draft], which specifies a much simpler !CustomEvent interface.  Objects implementing !CustomEvent can be obtained by calling Document.createEvent("!CustomEvent"), and values
- can then be associated with it by assigning to the 'detail' attribute.'''
- 
- According to the DOM Level 3 Events note, custom event objects must implement the !CustomEvent interface.
- Two extra methods beyond those defined in !CustomEvent must be implemented, though.  The first is resumePropagation,
- which is needed to cause the event to continue propagation after stopPropagation or stopImmediatePropagation
- has been called.  The second is cloneEventObject, which is needed to create a copy of the custom event object
- when the event is retargetted under sXBL processing.
- 
- Here is an example of an SVG document that uses a custom event object:
- 
- {{{
- <?xml version="1.0"?>
- 
- <svg xmlns="http://www.w3.org/2000/svg"
-      xmlns:ev="http://www.w3.org/2001/xml-events"
-      xmlns:xbl="http://www.w3.org/2004/xbl"
-      xmlns:ex="http://example.org/test"
-      version="1.2" width="400" height="400">
- 
-   <script>
-     // -- CustomEvent --------------------------------------------------------
- 
-     CustomEvent.prototype = new Object();
-     CustomEvent.prototype.constructor = CustomEvent;
-     CustomEvent.superclass = Object.prototype;
- 
-     function CustomEvent(propertyNames) {
-       this.propagationStopped = false;
-       this.immediatePropagationStopped = false;
-       this.defaultPrevented = false;
-       this.propertyNames = propertyNames;
-     }
- 
-     CustomEvent.prototype.initEvent = function(type, canBubbleArg,
-                                                cancelableArg) {
-       this.type = type;
-       this.bubbles = canBubbleArg;
-       this.cancelable = cancelableArg;
-     };
- 
-     CustomEvent.prototype.initEventNS = function(namespaceURI, type,
-                                                  canBubbleArg, cancelableArg) {
-       this.namespaceURI = namespaceURI;
-       this.type = type;
-       this.bubbles = canBubbleArg;
-       this.cancelable = cancelableArg;
-     };
- 
-     CustomEvent.prototype.stopPropagation = function() {
-       this.propagationStopped = true;
-     };
- 
-     CustomEvent.prototype.stopImmediatePropagation = function() {
-       this.immediatePropagationStopped = true;
-     };
- 
-     CustomEvent.prototype.preventDefault = function() {
-       this.defaultPrevented = true;
-     };
- 
-     CustomEvent.prototype.isDefaultPrevented = function() {
-       return this.defaultPrevented;
-     };
- 
-     CustomEvent.prototype.setDispatchState = function(t, phase) {
-       this.currentTarget = t;
-       this.eventPhase = phase;
-     };
- 
-     CustomEvent.prototype.isPropagationStopped = function() {
-       return this.propagationStopped;
-     };
- 
-     CustomEvent.prototype.isImmediatePropagationStopped = function() {
-       return this.immediatePropagationStopped;
-     };
- 
-     CustomEvent.prototype.resumePropagation = function() {
-       this.propagationStopped = false;
-       this.immediatePropagationStopped = false;
-     };
- 
-     CustomEvent.prototype.cloneEventObject = function() {
-       var evt = new CustomEvent(this.propertyNames);
-       if (this.propertyNames) {
-         for (var i in this.propertyNames) {
-           evt[this.propertyNames[i]] = this[this.propertyNames[i]];
-         }
-       }
-       return evt;
-     };
-   </script>
- 
-   <xbl:xbl>
-     <xbl:definition element="ex:test">
-       <xbl:template>
-         <circle cx="200" cy="200" r="100" fill="red">
-           <handler ev:event="click">
-             var testEvt = new CustomEvent(["messageString"]);
-             testEvt.initEventNS
-               ("http://example.org/test", "message", true, true);
-             testEvt.messageString = "hello";
-             evt.target.dispatchEvent(testEvt);
-           </handler>
-           <handler ev:event="ex:message">
-             var s = "circle: " + evt.messageString;
-             if (evt.originalEvent) {
-               s += " (not original)";
-             }
-             window.alert(s);
-           </handler>
-         </circle>
-       </xbl:template>
-     </xbl:definition>
-   </xbl:xbl>
- 
-   <ex:test/>
- 
-   <handler ev:event="ex:message">
-     var s = "svg: " + evt.messageString;
-     if (evt.originalEvent) {
-       s += " (not original)";
-     }
-     window.alert(s);
-   </handler>
- </svg>
- }}}
-