View Javadoc

1   /**********************************************
2    * Copyright (C) 2010-2011 Lukas Laag
3    * This file is part of lib-gwt-svg.
4    * 
5    * libgwtsvg is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU Lesser General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * libgwtsvg is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU Lesser General Public License for more details.
14   * 
15   * You should have received a copy of the GNU Lesser General Public License
16   * along with libgwtsvg.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  /*
19   * Copyright (c) 2004 World Wide Web Consortium,
20   *
21   * (Massachusetts Institute of Technology, European Research Consortium for
22   * Informatics and Mathematics, Keio University). All Rights Reserved. This
23   * work is distributed under the W3C(r) Software License [1] in the hope that
24   * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
25   * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26   *
27   * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
28   */
29  
30  package org.vectomatic.dom.svg;
31  
32  import org.vectomatic.dom.svg.events.ActivateEvent;
33  import org.vectomatic.dom.svg.events.ActivateHandler;
34  import org.vectomatic.dom.svg.events.FocusInEvent;
35  import org.vectomatic.dom.svg.events.FocusInHandler;
36  import org.vectomatic.dom.svg.events.FocusOutEvent;
37  import org.vectomatic.dom.svg.events.FocusOutHandler;
38  import org.vectomatic.dom.svg.events.HasDocumentHandlers;
39  import org.vectomatic.dom.svg.events.HasGraphicalHandlers;
40  import org.vectomatic.dom.svg.events.SVGZoomEvent;
41  import org.vectomatic.dom.svg.events.SVGZoomHandler;
42  import org.vectomatic.dom.svg.impl.SVGElement;
43  import org.vectomatic.dom.svg.impl.SVGSVGElement;
44  import org.vectomatic.dom.svg.itf.ISVGContainerElement;
45  import org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired;
46  import org.vectomatic.dom.svg.itf.ISVGFitToViewBox;
47  import org.vectomatic.dom.svg.itf.ISVGLangSpace;
48  import org.vectomatic.dom.svg.itf.ISVGLocatable;
49  import org.vectomatic.dom.svg.itf.ISVGStylable;
50  import org.vectomatic.dom.svg.itf.ISVGTests;
51  import org.vectomatic.dom.svg.itf.ISVGZoomAndPan;
52  import org.vectomatic.dom.svg.utils.DOMHelper;
53  import org.vectomatic.dom.svg.utils.SVGConstants;
54  
55  import com.google.gwt.core.client.JavaScriptException;
56  import com.google.gwt.dom.client.Element;
57  import com.google.gwt.dom.client.Node;
58  import com.google.gwt.dom.client.NodeList;
59  import com.google.gwt.dom.client.Style;
60  import com.google.gwt.dom.client.TagName;
61  import com.google.gwt.event.dom.client.ClickEvent;
62  import com.google.gwt.event.dom.client.ClickHandler;
63  import com.google.gwt.event.dom.client.DragEndEvent;
64  import com.google.gwt.event.dom.client.DragEndHandler;
65  import com.google.gwt.event.dom.client.DragEnterEvent;
66  import com.google.gwt.event.dom.client.DragEnterHandler;
67  import com.google.gwt.event.dom.client.DragEvent;
68  import com.google.gwt.event.dom.client.DragHandler;
69  import com.google.gwt.event.dom.client.DragLeaveEvent;
70  import com.google.gwt.event.dom.client.DragLeaveHandler;
71  import com.google.gwt.event.dom.client.DragOverEvent;
72  import com.google.gwt.event.dom.client.DragOverHandler;
73  import com.google.gwt.event.dom.client.DragStartEvent;
74  import com.google.gwt.event.dom.client.DragStartHandler;
75  import com.google.gwt.event.dom.client.DropEvent;
76  import com.google.gwt.event.dom.client.DropHandler;
77  import com.google.gwt.event.dom.client.LoadEvent;
78  import com.google.gwt.event.dom.client.LoadHandler;
79  import com.google.gwt.event.dom.client.MouseDownEvent;
80  import com.google.gwt.event.dom.client.MouseDownHandler;
81  import com.google.gwt.event.dom.client.MouseMoveEvent;
82  import com.google.gwt.event.dom.client.MouseMoveHandler;
83  import com.google.gwt.event.dom.client.MouseOutEvent;
84  import com.google.gwt.event.dom.client.MouseOutHandler;
85  import com.google.gwt.event.dom.client.MouseOverEvent;
86  import com.google.gwt.event.dom.client.MouseOverHandler;
87  import com.google.gwt.event.dom.client.MouseUpEvent;
88  import com.google.gwt.event.dom.client.MouseUpHandler;
89  import com.google.gwt.event.dom.client.ScrollEvent;
90  import com.google.gwt.event.dom.client.ScrollHandler;
91  import com.google.gwt.event.dom.client.TouchCancelEvent;
92  import com.google.gwt.event.dom.client.TouchCancelHandler;
93  import com.google.gwt.event.dom.client.TouchEndEvent;
94  import com.google.gwt.event.dom.client.TouchEndHandler;
95  import com.google.gwt.event.dom.client.TouchMoveEvent;
96  import com.google.gwt.event.dom.client.TouchMoveHandler;
97  import com.google.gwt.event.dom.client.TouchStartEvent;
98  import com.google.gwt.event.dom.client.TouchStartHandler;
99  import com.google.gwt.event.logical.shared.ResizeEvent;
100 import com.google.gwt.event.logical.shared.ResizeHandler;
101 import com.google.gwt.event.shared.HandlerRegistration;
102 
103 /**
104  * <p>A key interface definition is the {@link org.vectomatic.dom.svg.OMSVGSVGElement}
105  * interface, which is the interface that corresponds to the <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
106  * title='svg element specification'>svg</a> element. This interface contains
107  * various miscellaneous commonly-used utility methods, such as matrix operations
108  * and the ability to control the time of redraw on visual rendering devices.</p>
109  * <p>{@link org.vectomatic.dom.svg.OMSVGSVGElement} extends <code>ViewCSS</code>
110  * and <code>DocumentCSS</code> to provide access to the computed values of
111  * properties and the override style sheet as described in <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/"><cite>DOM
112  * Level 2 Style</cite></a> [<a href="refs.html#ref-DOM2STYLE">DOM2STYLE</a>].</p>
113  */
114 @TagName("svg")
115 public class OMSVGSVGElement extends OMSVGElement implements HasGraphicalHandlers, HasDocumentHandlers, ISVGTests, ISVGLangSpace, ISVGExternalResourcesRequired, ISVGStylable, ISVGLocatable, ISVGFitToViewBox, ISVGZoomAndPan, ISVGContainerElement {
116   public OMSVGSVGElement() {
117     this((SVGSVGElement)DOMHelper.createElementNS(DOMHelper.getCurrentDocument(), SVGConstants.SVG_NAMESPACE_URI, SVGConstants.SVG_SVG_TAG).cast());
118   }
119 
120   public OMSVGSVGElement(SVGSVGElement ot) {
121     super(ot);
122   }
123 
124   // Implementation of the svg::SVGSVGElement W3C IDL interface
125   /**
126    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getX()}
127    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
128    * title='svg element specification'>svg</a> element.
129    */
130   public final OMSVGAnimatedLength getX() {
131     return ((SVGSVGElement)ot).getX();
132   }
133   /**
134    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getY()}
135    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
136    * title='svg element specification'>svg</a> element.
137    */
138   public final OMSVGAnimatedLength getY() {
139     return ((SVGSVGElement)ot).getY();
140   }
141   /**
142    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getWidth()}
143    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
144    * title='svg element specification'>svg</a> element.
145    */
146   public final OMSVGAnimatedLength getWidth() {
147     return ((SVGSVGElement)ot).getWidth();
148   }
149   /**
150    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getHeight()}
151    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
152    * title='svg element specification'>svg</a> element.
153    */
154   public final OMSVGAnimatedLength getHeight() {
155     return ((SVGSVGElement)ot).getHeight();
156   }
157   /**
158    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getContentScriptType()}
159    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
160    * title='svg element specification'>svg</a> element.
161    */
162   public final String getContentScriptType() {
163     return ((SVGSVGElement)ot).getContentScriptType();
164   }
165   /**
166    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getContentScriptType()}
167    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
168    * title='svg element specification'>svg</a> element.
169    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
170    * to   change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
171    * attribute</a>.
172    */
173   public final void setContentScriptType(java.lang.String value) throws JavaScriptException {
174     ((SVGSVGElement)ot).setContentScriptType(value);
175   }
176   /**
177    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getContentStyleType()}
178    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
179    * title='svg element specification'>svg</a> element.
180    */
181   public final String getContentStyleType() {
182     return ((SVGSVGElement)ot).getContentStyleType();
183   }
184   /**
185    * Corresponds to attribute {@link org.vectomatic.dom.svg.OMSVGSVGElement#getContentStyleType()}
186    * on the given <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
187    * title='svg element specification'>svg</a> element.
188    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an attempt
189    * to   change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
190    * attribute</a>.
191    */
192   public final void setContentStyleType(java.lang.String value) throws JavaScriptException {
193     ((SVGSVGElement)ot).setContentStyleType(value);
194   }
195   /**
196    * <p>The position and size of the viewport (implicit or explicit) that corresponds
197    * to this <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
198    * element specification'>svg</a> element. When the user agent is actually
199    * rendering the content, then the position and size values represent the
200    * actual values when rendering. The position and size values are unitless
201    * values in the coordinate system of the parent element. If no parent element
202    * exists (i.e., <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
203    * title='svg element specification'>svg</a> element represents the root of
204    * the document tree), if this SVG document is embedded as part of another
205    * document (e.g., via the HTML <span class='element-name'>'object'</span>
206    * element), then the position and size are unitless values in the coordinate
207    * system of the parent document. (If the parent uses CSS or XSL layout, then
208    * unitless values represent pixel units for the current CSS or XSL viewport,
209    * as described in the CSS2 specification.) If the parent element does not
210    * have a coordinate system, then the user agent should provide reasonable
211    * default values for this attribute.</p> <p>The {@link org.vectomatic.dom.svg.OMSVGRect}
212    * object is <a href="types.html#ReadOnlyRect">read only</a>.</p>
213    */
214   public final OMSVGRect getViewport() {
215     return ((SVGSVGElement)ot).getViewport();
216   }
217   /**
218    * Size of a pixel units (as defined by CSS2) along the x-axis of the viewport,
219    * which represents a unit somewhere in the range of 70dpi to 120dpi, and,
220    * on systems that support this, might actually match the characteristics
221    * of the target medium. On systems where it is impossible to know the size
222    * of a pixel, a suitable default pixel size is provided.
223    */
224   public final float getPixelUnitToMillimeterX() {
225     return ((SVGSVGElement)ot).getPixelUnitToMillimeterX();
226   }
227   /**
228    * Corresponding size of a pixel unit along the y-axis of the viewport.
229    */
230   public final float getPixelUnitToMillimeterY() {
231     return ((SVGSVGElement)ot).getPixelUnitToMillimeterY();
232   }
233   /**
234    * User interface (UI) events in DOM Level 2 indicate the screen positions
235    * at which the given UI event occurred. When the user agent actually knows
236    * the physical size of a "screen unit", this attribute will express that
237    * information; otherwise, user agents will provide a suitable default value
238    * such as .28mm.
239    */
240   public final float getScreenPixelToMillimeterX() {
241     return ((SVGSVGElement)ot).getScreenPixelToMillimeterX();
242   }
243   /**
244    * Corresponding size of a screen pixel along the y-axis of the viewport.
245    */
246   public final float getScreenPixelToMillimeterY() {
247     return ((SVGSVGElement)ot).getScreenPixelToMillimeterY();
248   }
249   /**
250    * The initial view (i.e., before magnification and panning) of the current
251    * innermost SVG document fragment can be either the "standard" view (i.e.,
252    * based on attributes on the <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
253    * title='svg element specification'>svg</a> element such as <code>svg/viewBox</code>)
254    * or to a "custom" view (i.e., a hyperlink into a particular <a href='http://www.w3.org/TR/SVG11/linking.html#ViewElement'
255    * title='view element specification'>view</a> or other element - see <a href="linking.html#LinksIntoSVG">Linking
256    * into SVG content: URI fragments and SVG views</a>). If the initial view
257    * is the "standard" view, then this attribute is false. If the initial view
258    * is a "custom" view, then this attribute is true.
259    */
260   public final boolean getUseCurrentView() {
261     return ((SVGSVGElement)ot).getUseCurrentView();
262   }
263   /**
264    * <p>The definition of the initial view (i.e., before magnification and panning)
265    * of the current innermost SVG document fragment. The meaning depends on
266    * the situation:</p> <ul>   <li>     If the initial view was a "standard"
267    * view, then:     <ul>       <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
268    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
269    * and       {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
270    * within {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}
271    * will match the values for the corresponding DOM attributes       that are
272    * on SVGSVGElement directly</li>       <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()}
273    * and       {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()}
274    * within {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}
275    * will be null</li>     </ul>   </li>   <li>     If the initial view was
276    * a link into a <a href='http://www.w3.org/TR/SVG11/linking.html#ViewElement'
277    * title='view element specification'>view</a> element, then:     <ul>   
278    * <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
279    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
280    * and       {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
281    * within {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}
282    * will correspond to the corresponding attributes for the       given <a
283    * href='http://www.w3.org/TR/SVG11/linking.html#ViewElement' title='view
284    * element specification'>view</a> element</li>       <li>the values for {@link
285    * org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()} and       {@link
286    * org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()} within {@link
287    * org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}       will be
288    * null</li>     </ul>   </li>   <li>     If the initial view was a link into
289    * another element (i.e.,     other than a <a href='http://www.w3.org/TR/SVG11/linking.html#ViewElement'
290    * title='view element specification'>view</a>), then:     <ul>       <li>the
291    * values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
292    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
293    * and       {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
294    * within {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}
295    * will match the values for the corresponding DOM attributes       that are
296    * on SVGSVGElement directly for the closest ancestor       <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
297    * title='svg element specification'>svg</a> element</li>       <li>the values
298    * for {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()} within
299    * {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()} will be
300    * null</li>       <li>the {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()}
301    * within       {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}
302    * will represent the target of the       link</li>     </ul>   </li>   <li>
303    * If the initial view was a link into the SVG document fragment     using
304    * an SVG view specification fragment identifier (i.e.,     #svgView(...)),
305    * then:     <ul>       <li>the values for {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()},
306    * {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()},
307    * {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()},    
308    * {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getTransform()} and    
309    * {@link org.vectomatic.dom.svg.itf.ISVGViewSpec#getViewTarget()} within
310    * {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentView()}       will
311    * correspond to the values from the SVG view       specification fragment
312    * identifier</li>     </ul>   </li> </ul> <p>The object itself and its contents
313    * are both read only.</p>
314    */
315   public final OMSVGViewSpec getCurrentView() {
316     return ((SVGSVGElement)ot).getCurrentView();
317   }
318   /**
319    * On an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
320    * title='svg element specification'>svg</a> element, this attribute indicates
321    * the current scale factor relative to the initial view to take into account
322    * user magnification and panning operations, as described under <a href='interact.html#ZoomAndPanAttribute'>Magnification
323    * and panning</a>. DOM attributes {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentScale()}
324    * and {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentTranslate()}
325    * are equivalent to the 2x3 matrix [a b c d e f] = [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y].
326    * If "magnification" is enabled (i.e., <span class='attr-value'>zoomAndPan="magnify"</span>),
327    * then the effect is as if an extra transformation were placed at the outermost
328    * level on the SVG document fragment (i.e., outside the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
329    * title='svg element specification'>svg</a> element). <p>When accessed on
330    * an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
331    * element specification'>svg</a> element that is not an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
332    * title='svg element specification'>svg</a> element, it is undefined what
333    * behavior this attribute has.</p>
334    */
335   public final float getCurrentScale() {
336     return ((SVGSVGElement)ot).getCurrentScale();
337   }
338   /**
339    * On an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
340    * title='svg element specification'>svg</a> element, this attribute indicates
341    * the current scale factor relative to the initial view to take into account
342    * user magnification and panning operations, as described under <a href='interact.html#ZoomAndPanAttribute'>Magnification
343    * and panning</a>. DOM attributes {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentScale()}
344    * and {@link org.vectomatic.dom.svg.OMSVGSVGElement#getCurrentTranslate()}
345    * are equivalent to the 2x3 matrix [a b c d e f] = [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y].
346    * If "magnification" is enabled (i.e., <span class='attr-value'>zoomAndPan="magnify"</span>),
347    * then the effect is as if an extra transformation were placed at the outermost
348    * level on the SVG document fragment (i.e., outside the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
349    * title='svg element specification'>svg</a> element). <p>When accessed on
350    * an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
351    * element specification'>svg</a> element that is not an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
352    * title='svg element specification'>svg</a> element, it is undefined what
353    * behavior this attribute has.</p>
354    */
355   public final void setCurrentScale(float value) {
356     ((SVGSVGElement)ot).setCurrentScale(value);
357   }
358   /**
359    * On an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
360    * title='svg element specification'>svg</a> element, the corresponding translation
361    * factor that takes into account user "magnification". <p>When accessed on
362    * an <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
363    * element specification'>svg</a> element that is not an outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
364    * title='svg element specification'>svg</a> element, it is undefined what
365    * behavior this attribute has.</p>
366    */
367   public final OMSVGPoint getCurrentTranslate() {
368     return ((SVGSVGElement)ot).getCurrentTranslate();
369   }
370   /**
371    * Takes a time-out value which indicates that redraw shall not occur until:
372    * <ol>   <li>the corresponding unsuspendRedraw() call has been made,</li>
373    * <li>an unsuspendRedrawAll() call has been made, or</li>   <li>its timer
374    * has timed out.</li> </ol> <p>In environments that do not support interactivity
375    * (e.g., print media), then redraw shall not be suspended. Calls to suspendRedraw()
376    * and unsuspendRedraw() should, but need not be, made in balanced pairs.</p>
377    * <p>To suspend redraw actions as a collection of SVG DOM changes occur,
378    * precede the changes to the SVG DOM with a method call similar to:</p> <pre>suspendHandleID
379    * = suspendRedraw(maxWaitMilliseconds);</pre> <p>and follow the changes with
380    * a method call similar to:</p> <pre>unsuspendRedraw(suspendHandleID);</pre>
381    * <p>Note that multiple suspendRedraw calls can be used at once and that
382    * each such method call is treated independently of the other suspendRedraw
383    * method calls.</p>
384    * @param maxWaitMilliseconds The amount of time in milliseconds   to hold
385    * off before redrawing the device. Values greater than 60 seconds   will
386    * be truncated down to 60 seconds.
387    * @return A number which acts as a unique identifier for the given   suspendRedraw()
388    * call. This value must be passed as the parameter to the   corresponding
389    * unsuspendRedraw() method call.
390    */
391   public final int suspendRedraw(int maxWaitMilliseconds) {
392     return ((SVGSVGElement)ot).suspendRedraw(maxWaitMilliseconds);
393   }
394   /**
395    * Cancels a specified suspendRedraw() by providing a unique suspend handle
396    * ID that was returned by a previous suspendRedraw() call.
397    * @param suspendHandleID A number which acts as a unique identifier for 
398    * the desired suspendRedraw() call. The number supplied must be a value 
399    * returned from a previous call to suspendRedraw(). If an invalid   handle
400    * ID value is provided then the request to unsuspendRedraw() is   silently
401    * ignored.
402    */
403   public final void unsuspendRedraw(int suspendHandleID) {
404     ((SVGSVGElement)ot).unsuspendRedraw(suspendHandleID);
405   }
406   /**
407    * Cancels all currently active suspendRedraw() method calls. This method
408    * is most useful at the very end of a set of SVG DOM calls to ensure that
409    * all pending suspendRedraw() method calls have been cancelled.
410    */
411   public final void unsuspendRedrawAll() {
412     ((SVGSVGElement)ot).unsuspendRedrawAll();
413   }
414   /**
415    * In rendering environments supporting interactivity, forces the user agent
416    * to immediately redraw all regions of the viewport that require updating.
417    */
418   public final void forceRedraw() {
419     ((SVGSVGElement)ot).forceRedraw();
420   }
421   /**
422    * Suspends (i.e., pauses) all currently running animations that are defined
423    * within the SVG document fragment corresponding to this <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
424    * title='svg element specification'>svg</a> element, causing the animation
425    * clock corresponding to this document fragment to stand still until it is
426    * unpaused.
427    */
428   public final void pauseAnimations() {
429     ((SVGSVGElement)ot).pauseAnimations();
430   }
431   /**
432    * Unsuspends (i.e., unpauses) currently running animations that are defined
433    * within the SVG document fragment, causing the animation clock to continue
434    * from the time at which it was suspended.
435    */
436   public final void unpauseAnimations() {
437     ((SVGSVGElement)ot).unpauseAnimations();
438   }
439   /**
440    * Returns true if this SVG document fragment is in a paused state.
441    * @return Boolean indicating whether this SVG document fragment is in a 
442    * paused state.
443    */
444   public final boolean animationsPaused() {
445     return ((SVGSVGElement)ot).animationsPaused();
446   }
447   /**
448    * Returns the current time in seconds relative to the start time for the
449    * current SVG document fragment. If <span class="dom-method-name">getCurrentTime</span>
450    * is called before the document timeline has begun (for example, by script
451    * running in a <a href='http://www.w3.org/TR/SVG11/script.html#ScriptElement'
452    * title='script element specification'>script</a>  element before the document's
453    * <a href="interact.html#LoadEvent">SVGLoad</a> event is dispatched), then
454    * 0 is returned.
455    * @return The current time in seconds, or 0 if the document timeline has
456    * not yet begun.
457    */
458   public final float getCurrentTime() {
459     return ((SVGSVGElement)ot).getCurrentTime();
460   }
461   /**
462    * Adjusts the clock for this SVG document fragment, establishing a new current
463    * time. If <span class="dom-method-name">setCurrentTime</span> is called
464    * before the document timeline has begun (for example, by script running
465    * in a <a href='http://www.w3.org/TR/SVG11/script.html#ScriptElement' title='script
466    * element specification'>script</a> element before the document's <a href="interact.html#LoadEvent">SVGLoad</a>
467    * event is dispatched), then the value of <var>seconds</var> in the last
468    * invocation of the method gives the time that the document will seek to
469    * once the document timeline has begun.
470    * @param seconds The new current time in seconds relative to the start  
471    * time for the current SVG document fragment.
472    */
473   public final void setCurrentTime(float seconds) {
474     ((SVGSVGElement)ot).setCurrentTime(seconds);
475   }
476   /**
477    * Returns the list of graphics elements whose rendered content intersects
478    * the supplied rectangle. Each candidate graphics element is to be considered
479    * a match only if the same graphics element can be a <a href="interact.html#PointerEventsProperty">target
480    * of pointer events</a> as defined in <code>pointer-events</code> processing.
481    * @param rect The test rectangle. The values are in the <code>initial coordinate
482    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
483    * title='svg element specification'>svg</a> element.
484    * @param referenceElement If not null, then any intersected element that
485    * doesn't have the referenceElement as ancestor must not be included   in
486    * the returned NodeList.
487    * @return A list of Elements whose content intersects the supplied   rectangle.
488    * This {@link com.google.gwt.dom.client.NodeList} must be implemented identically
489    * to   the {@link com.google.gwt.dom.client.NodeList} interface as defined
490    * in DOM Level 2 Core   ([<a href="refs.html#ref-DOM2">DOM2</a>], section
491    * 1.2) with the   exception that the interface is not   <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#td-live">live</a>.
492    */
493   public final NodeList<? extends Node> getIntersectionList(OMSVGRect rect, OMSVGElement referenceElement) {
494     return ((SVGSVGElement)ot).getIntersectionList(rect, ((SVGElement)referenceElement.ot));
495   }
496   /**
497    * Returns the list of graphics elements whose rendered content is entirely
498    * contained within the supplied rectangle. Each candidate graphics element
499    * is to be considered a match only if the same graphics element can be a
500    * <a href="interact.html#PointerEventsProperty">target of pointer events</a>
501    * as defined in <code>pointer-events</code> processing.
502    * @param rect The test rectangle. The values are in the <code>initial coordinate
503    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
504    * title='svg element specification'>svg</a> element.
505    * @param referenceElement If not null, then any intersected element that
506    * doesn't have the referenceElement as ancestor must not be included   in
507    * the returned NodeList.
508    * @return A list of Elements whose content is enclosed by the supplied  
509    * rectangle.  This {@link com.google.gwt.dom.client.NodeList} must be implemented
510    * identically to   the {@link com.google.gwt.dom.client.NodeList} interface
511    * as defined in DOM Level 2 Core   ([<a href="refs.html#ref-DOM2">DOM2</a>],
512    * section 1.2) with the   exception that the interface is not   <a href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#td-live">live</a>.
513    */
514   public final NodeList<? extends Node> getEnclosureList(OMSVGRect rect, OMSVGElement referenceElement) {
515     return ((SVGSVGElement)ot).getEnclosureList(rect, ((SVGElement)referenceElement.ot));
516   }
517   /**
518    * Returns true if the rendered content of the given element intersects the
519    * supplied rectangle. Each candidate graphics element is to be considered
520    * a match only if the same graphics element can be a <a href="interact.html#PointerEventsProperty">target
521    * of pointer events</a> as defined in <code>pointer-events</code> processing.
522    * @param element The element on which to perform the given test.
523    * @param rect The test rectangle. The values are in the <code>initial coordinate
524    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
525    * title='svg element specification'>svg</a> element.
526    * @return True or false, depending on whether the given element intersects
527    * the supplied rectangle.
528    */
529   public final boolean checkIntersection(OMSVGElement element, OMSVGRect rect) {
530     return ((SVGSVGElement)ot).checkIntersection(((SVGElement)element.ot), rect);
531   }
532   /**
533    * Returns true if the rendered content of the given element is entirely contained
534    * within the supplied rectangle. Each candidate graphics element is to be
535    * considered a match only if the same graphics element can be a <a href="interact.html#PointerEventsProperty">target
536    * of pointer events</a> as defined in <code>pointer-events</code> processing.
537    * @param element The element on which to perform the given test.
538    * @param rect The test rectangle. The values are in the <code>initial coordinate
539    * system</code> for the current <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
540    * title='svg element specification'>svg</a> element.
541    * @return True or false, depending on whether the given element is enclosed
542    * by the supplied rectangle.
543    */
544   public final boolean checkEnclosure(OMSVGElement element, OMSVGRect rect) {
545     return ((SVGSVGElement)ot).checkEnclosure(((SVGElement)element.ot), rect);
546   }
547   /**
548    * Unselects any selected objects, including any selections of text strings
549    * and type-in bars.
550    */
551   public final void deselectAll() {
552     ((SVGSVGElement)ot).deselectAll();
553   }
554   /**
555    * Creates an {@link org.vectomatic.dom.svg.OMSVGNumber} object outside of
556    * any document trees. The object is initialized to a value of zero.
557    * @return An {@link org.vectomatic.dom.svg.OMSVGNumber} object.
558    */
559   public final OMSVGNumber createSVGNumber() {
560     return ((SVGSVGElement)ot).createSVGNumber();
561   }
562   /**
563    * Creates an {@link org.vectomatic.dom.svg.OMSVGLength} object outside of
564    * any document trees. The object is initialized to the value of 0 user units.
565    * @return An {@link org.vectomatic.dom.svg.OMSVGLength} object.
566    */
567   public final OMSVGLength createSVGLength() {
568     return ((SVGSVGElement)ot).createSVGLength();
569   }
570   /**
571    * Creates an {@link org.vectomatic.dom.svg.OMSVGAngle} object outside of
572    * any document trees. The object is initialized to the value 0 degrees (unitless).
573    * @return An {@link org.vectomatic.dom.svg.OMSVGAngle} object.
574    */
575   public final OMSVGAngle createSVGAngle() {
576     return ((SVGSVGElement)ot).createSVGAngle();
577   }
578   /**
579    * Creates an {@link org.vectomatic.dom.svg.OMSVGPoint} object outside of
580    * any document trees. The object is initialized to the point (0,0) in the
581    * user coordinate system.
582    * @return An {@link org.vectomatic.dom.svg.OMSVGPoint} object.
583    */
584   public final OMSVGPoint createSVGPoint() {
585     return ((SVGSVGElement)ot).createSVGPoint();
586   }
587   /**
588    * Creates an {@link org.vectomatic.dom.svg.OMSVGMatrix} object outside of
589    * any document trees. The object is initialized to the identity matrix.
590    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object.
591    */
592   public final OMSVGMatrix createSVGMatrix() {
593     return ((SVGSVGElement)ot).createSVGMatrix();
594   }
595   /**
596    * Creates an {@link org.vectomatic.dom.svg.OMSVGRect} object outside of any
597    * document trees. The object is initialized such that all values are set
598    * to 0 user units.
599    * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object.
600    */
601   public final OMSVGRect createSVGRect() {
602     return ((SVGSVGElement)ot).createSVGRect();
603   }
604   /**
605    * Creates an {@link org.vectomatic.dom.svg.OMSVGTransform} object outside
606    * of any document trees. The object is initialized to an identity matrix
607    * transform (SVG_TRANSFORM_MATRIX).
608    * @return An {@link org.vectomatic.dom.svg.OMSVGTransform} object.
609    */
610   public final OMSVGTransform createSVGTransform() {
611     return ((SVGSVGElement)ot).createSVGTransform();
612   }
613   /**
614    * <p xmlns:edit="http://xmlns.grorg.org/SVGT12NG/"> Creates an {@link org.vectomatic.dom.svg.OMSVGTransform}
615    * object outside of any document trees. The object is initialized to the
616    * given matrix transform (i.e., SVG_TRANSFORM_MATRIX).  The values from the
617    * parameter <var>matrix</var> are copied, the <var>matrix</var> parameter
618    * is not adopted as <a edit:format="expanded">SVGTransform::matrix</a>. </p>
619    * @param matrix The transform matrix.
620    * @return An {@link org.vectomatic.dom.svg.OMSVGTransform} object.
621    */
622   public final OMSVGTransform createSVGTransformFromMatrix(OMSVGMatrix matrix) {
623     return ((SVGSVGElement)ot).createSVGTransformFromMatrix(matrix);
624   }
625   /**
626    * Searches this SVG document fragment (i.e., the search is restricted to
627    * a subset of the document tree) for an Element whose id is given by <var>elementId</var>.
628    * If an Element is found, that Element is returned. If no such element exists,
629    * returns null. Behavior is not defined if more than one element has this
630    * id.
631    * @param elementId The unique id value for an element.
632    * @return The matching element.
633    */
634   public final OMElement getElementById(String elementId) {
635 	Element elt = ((SVGSVGElement)ot).getElementById(elementId);
636     return elt != null ? (OMElement) convert(elt) : null;
637   }
638 
639   // Implementation of the svg::SVGExternalResourcesRequired W3C IDL interface
640   /**
641    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
642    * on the given element. Note that the SVG DOM defines the attribute {@link
643    * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
644    * as being of type {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean}, whereas
645    * the SVG language definition says that {@link org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
646    * is not animated. Because the SVG language definition states that {@link
647    * org.vectomatic.dom.svg.itf.ISVGExternalResourcesRequired#getExternalResourcesRequired()}
648    * cannot be animated, the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getAnimVal()}
649    * will always be the same as the {@link org.vectomatic.dom.svg.OMSVGAnimatedBoolean#getBaseVal()}.
650    */
651   public final OMSVGAnimatedBoolean getExternalResourcesRequired() {
652     return ((SVGSVGElement)ot).getExternalResourcesRequired();
653   }
654 
655   // Implementation of the svg::SVGFitToViewBox W3C IDL interface
656   /**
657    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getViewBox()}
658    * on the given element.
659    */
660   public final OMSVGAnimatedRect getViewBox() {
661     return ((SVGSVGElement)ot).getViewBox();
662   }
663   /**
664    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGFitToViewBox#getPreserveAspectRatio()}
665    * on the given element.
666    */
667   public final OMSVGAnimatedPreserveAspectRatio getPreserveAspectRatio() {
668     return ((SVGSVGElement)ot).getPreserveAspectRatio();
669   }
670 
671   // Implementation of the svg::SVGLangSpace W3C IDL interface
672   /**
673    * Corresponds to attribute <code>xml:lang</code> on the given element.
674    */
675   public final String getXmllang() {
676     return ((SVGSVGElement)ot).getXmllang();
677   }
678   /**
679    * Corresponds to attribute <code>xml:lang</code> on the given element.
680    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an   attempt
681    * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
682    * attribute</a>.
683    */
684   public final void setXmllang(java.lang.String value) throws JavaScriptException {
685     ((SVGSVGElement)ot).setXmllang(value);
686   }
687   /**
688    * Corresponds to attribute <code>xml:space</code> on the given element.
689    */
690   public final String getXmlspace() {
691     return ((SVGSVGElement)ot).getXmlspace();
692   }
693   /**
694    * Corresponds to attribute <code>xml:space</code> on the given element.
695    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an   attempt
696    * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
697    * attribute</a>.
698    */
699   public final void setXmlspace(java.lang.String value) throws JavaScriptException {
700     ((SVGSVGElement)ot).setXmlspace(value);
701   }
702 
703   // Implementation of the svg::SVGLocatable W3C IDL interface
704   /**
705    * The element which established the current viewport. Often, the nearest
706    * ancestor <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement' title='svg
707    * element specification'>svg</a> element. Null if the current element is
708    * the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
709    * title='svg element specification'>svg</a> element.
710    */
711   public final OMSVGElement getNearestViewportElement() {
712     SVGElement elt = ((SVGSVGElement)ot).getNearestViewportElement();
713     return elt != null ? (OMSVGElement)convert(elt) : null;
714   }
715   /**
716    * The farthest ancestor <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
717    * title='svg element specification'>svg</a> element. Null if the current
718    * element is the outermost <a href='http://www.w3.org/TR/SVG11/struct.html#SVGElement'
719    * title='svg element specification'>svg</a> element.
720    */
721   public final OMSVGElement getFarthestViewportElement() {
722     SVGElement elt = ((SVGSVGElement)ot).getFarthestViewportElement();
723     return elt != null ? (OMSVGElement)convert(elt) : null;
724   }
725   /**
726    * Returns the tight bounding box in current user space (i.e., after application
727    * of the <code>transform</code> attribute, if any) on the geometry of all
728    * contained graphics elements, exclusive of stroking, clipping, masking and
729    * filter effects). Note that getBBox must return the actual bounding box
730    * at the time the method was called, even in case the element has not yet
731    * been rendered.
732    * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object that defines
733    * the bounding box.
734    */
735   public final OMSVGRect getBBox() {
736     return ((SVGSVGElement)ot).getBBox();
737   }
738   /**
739    * Returns the transformation matrix from current user units (i.e., after
740    * application of the <code>transform</code> attribute, if any) to the viewport
741    * coordinate system for the {@link org.vectomatic.dom.svg.itf.ISVGLocatable#getNearestViewportElement()}.
742    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines
743    * the CTM.
744    */
745   public final OMSVGMatrix getCTM() {
746     return ((SVGSVGElement)ot).getCTM();
747   }
748   /**
749    * Returns the transformation matrix from current user units (i.e., after
750    * application of the <code>transform</code> attribute, if any) to the parent
751    * user agent's notice of a "pixel". For display devices, ideally this represents
752    * a physical screen pixel. For other devices or environments where physical
753    * pixel sizes are not known, then an algorithm similar to the CSS2 definition
754    * of a "pixel" can be used instead.  Note that null is returned if this element
755    * is not hooked into the document tree. This method would have been more
756    * aptly named as <code>getClientCTM</code>, but the name <code>getScreenCTM</code>
757    * is kept for historical reasons.
758    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines
759    * the given   transformation matrix.
760    */
761   public final OMSVGMatrix getScreenCTM() {
762     return ((SVGSVGElement)ot).getScreenCTM();
763   }
764   /**
765    * Returns the transformation matrix from the user coordinate system on the
766    * current element (after application of the <code>transform</code> attribute,
767    * if any) to the user coordinate system on parameter <var>element</var> (after
768    * application of its <code>transform</code> attribute, if any).
769    * @param element The target element.
770    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object that defines
771    * the transformation.
772    * @throws SVGException(SVG_MATRIX_NOT_INVERTABLE) Raised if the currently
773    * defined transformation matrices make it impossible to compute the   given
774    * matrix (e.g., because one of the transformations is singular).
775    */
776   public final OMSVGMatrix getTransformToElement(OMSVGElement element) throws JavaScriptException {
777     return ((SVGSVGElement)ot).getTransformToElement(((SVGElement)element.ot));
778   }
779 
780   // Implementation of the svg::SVGTests W3C IDL interface
781   /**
782    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredFeatures()}
783    * on the given element.
784    */
785   public final OMSVGStringList getRequiredFeatures() {
786     return ((SVGSVGElement)ot).getRequiredFeatures();
787   }
788   /**
789    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getRequiredExtensions()}
790    * on the given element.
791    */
792   public final OMSVGStringList getRequiredExtensions() {
793     return ((SVGSVGElement)ot).getRequiredExtensions();
794   }
795   /**
796    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGTests#getSystemLanguage()}
797    * on the given element.
798    */
799   public final OMSVGStringList getSystemLanguage() {
800     return ((SVGSVGElement)ot).getSystemLanguage();
801   }
802   /**
803    * Returns true if the user agent supports the given extension, specified
804    * by a URI.
805    * @param extension The name of the extension, expressed as a URI.
806    * @return True or false, depending on whether the given extension is   supported.
807    */
808   public final boolean hasExtension(String extension) {
809     return ((SVGSVGElement)ot).hasExtension(extension);
810   }
811 
812   // Implementation of the svg::SVGZoomAndPan W3C IDL interface
813   /**
814    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
815    * on the given element. The value must be one of the SVG_ZOOMANDPAN_ constants
816    * defined on this interface.
817    */
818   public final short getZoomAndPan() {
819     return ((SVGSVGElement)ot).getZoomAndPan();
820   }
821   /**
822    * Corresponds to attribute {@link org.vectomatic.dom.svg.itf.ISVGZoomAndPan#getZoomAndPan()}
823    * on the given element. The value must be one of the SVG_ZOOMANDPAN_ constants
824    * defined on this interface.
825    * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) Raised on an   attempt
826    * to change the value of a <a href="svgdom.html#ReadOnlyNodes">read only
827    * attribute</a>.
828    */
829   public final void setZoomAndPan(short value) throws JavaScriptException {
830     ((SVGSVGElement)ot).setZoomAndPan(value);
831   }
832 
833   @Override
834   public final HandlerRegistration addClickHandler(ClickHandler handler) {
835     return addDomHandler(handler, ClickEvent.getType());
836   }
837   @Override
838   public final HandlerRegistration addDragEndHandler(DragEndHandler handler) {
839     return addDomHandler(handler, DragEndEvent.getType());
840   }
841   @Override
842   public final HandlerRegistration addDragEnterHandler(DragEnterHandler handler) {
843     return addDomHandler(handler, DragEnterEvent.getType());
844   }
845   @Override
846   public final HandlerRegistration addDragHandler(DragHandler handler) {
847     return addDomHandler(handler, DragEvent.getType());
848   }
849   @Override
850   public final HandlerRegistration addDragLeaveHandler(DragLeaveHandler handler) {
851     return addDomHandler(handler, DragLeaveEvent.getType());
852   }
853   @Override
854   public final HandlerRegistration addDragOverHandler(DragOverHandler handler) {
855     return addDomHandler(handler, DragOverEvent.getType());
856   }
857   @Override
858   public final HandlerRegistration addDragStartHandler(DragStartHandler handler) {
859     return addDomHandler(handler, DragStartEvent.getType());
860   }
861   @Override
862   public final HandlerRegistration addDropHandler(DropHandler handler) {
863     return addDomHandler(handler, DropEvent.getType());
864   }
865   @Override
866   public final HandlerRegistration addLoadHandler(LoadHandler handler) {
867     return addDomHandler(handler, LoadEvent.getType());
868   }
869   @Override
870   public final HandlerRegistration addMouseDownHandler(MouseDownHandler handler) {
871     return addDomHandler(handler, MouseDownEvent.getType());
872   }
873   @Override
874   public final HandlerRegistration addMouseMoveHandler(MouseMoveHandler handler) {
875     return addDomHandler(handler, MouseMoveEvent.getType());
876   }
877   @Override
878   public final HandlerRegistration addMouseOutHandler(MouseOutHandler handler) {
879     return addDomHandler(handler, MouseOutEvent.getType());
880   }
881   @Override
882   public final HandlerRegistration addMouseOverHandler(MouseOverHandler handler) {
883     return addDomHandler(handler, MouseOverEvent.getType());
884   }
885   @Override
886   public final HandlerRegistration addMouseUpHandler(MouseUpHandler handler) {
887     return addDomHandler(handler, MouseUpEvent.getType());
888   }
889   @Override
890   public final HandlerRegistration addScrollHandler(ScrollHandler handler) {
891     return addDomHandler(handler, ScrollEvent.getType());
892   }
893   @Override
894   public final HandlerRegistration addTouchCancelHandler(TouchCancelHandler handler) {
895     return addDomHandler(handler, TouchCancelEvent.getType());
896   }
897   @Override
898   public final HandlerRegistration addTouchEndHandler(TouchEndHandler handler) {
899     return addDomHandler(handler, TouchEndEvent.getType());
900   }
901   @Override
902   public final HandlerRegistration addTouchMoveHandler(TouchMoveHandler handler) {
903     return addDomHandler(handler, TouchMoveEvent.getType());
904   }
905   @Override
906   public final HandlerRegistration addTouchStartHandler(TouchStartHandler handler) {
907     return addDomHandler(handler, TouchStartEvent.getType());
908   }
909   @Override
910   public final HandlerRegistration addResizeHandler(ResizeHandler handler) {
911     return addHandler(handler, ResizeEvent.getType());
912   }
913   @Override
914   public final HandlerRegistration addActivateHandler(ActivateHandler handler) {
915     return addDomHandler(handler, ActivateEvent.getType());
916   }
917   @Override
918   public final HandlerRegistration addFocusInHandler(FocusInHandler handler) {
919     return addDomHandler(handler, FocusInEvent.getType());
920   }
921   @Override
922   public final HandlerRegistration addFocusOutHandler(FocusOutHandler handler) {
923     return addDomHandler(handler, FocusOutEvent.getType());
924   }
925   @Override
926   public final HandlerRegistration addSVGZoomHandler(SVGZoomHandler handler) {
927     return addDomHandler(handler, SVGZoomEvent.getType());
928   }
929   // Helper methods
930   /**
931    * Creates an {@link org.vectomatic.dom.svg.OMSVGNumber} object outside of
932    * any document trees. The object is initialized to the specified value.
933    * @param value the value to use for initialization
934    * @return An {@link org.vectomatic.dom.svg.OMSVGNumber} object.
935    */
936   public final OMSVGNumber createSVGNumber(float value) {
937 	OMSVGNumber number = createSVGNumber();
938 	number.setValue(value);
939     return number;
940   }
941   /**
942    * Creates an {@link org.vectomatic.dom.svg.OMSVGLength} object outside of
943    * any document trees. The object is initialized to the specified value
944    * and unit type.
945    * @param unitType the unit type to use for initialization
946    * @param valueInSpecifiedUnits the value to use for initialization, in the specified units
947    * @return An {@link org.vectomatic.dom.svg.OMSVGLength} object.
948    */
949   public final OMSVGLength createSVGLength(short unitType, float valueInSpecifiedUnits) {
950 	OMSVGLength length = ((SVGSVGElement)ot).createSVGLength();
951 	length.newValueSpecifiedUnits(unitType, valueInSpecifiedUnits);
952 	return length;
953   }
954   /**
955    * Creates an {@link org.vectomatic.dom.svg.OMSVGLength} object outside of
956    * any document trees. The object is initialized to the specified value
957    * and unit type.
958    * @param unitType the unit type to use for initialization
959    * @param valueInSpecifiedUnits the value to use for initialization, in the specified units
960    * @return An {@link org.vectomatic.dom.svg.OMSVGLength} object.
961    */
962   public final OMSVGLength createSVGLength(Style.Unit unitType, float valueInSpecifiedUnits) {
963 	return createSVGLength(OMSVGLength.unitToCode(unitType), valueInSpecifiedUnits);
964   }
965   /**
966    * Creates an {@link org.vectomatic.dom.svg.OMSVGLength} object outside of
967    * any document trees. The object is initialized to the specified length.
968    * @param l the length to use for initialization
969    * @return An {@link org.vectomatic.dom.svg.OMSVGLength} object.
970    */
971   public final OMSVGLength createSVGLength(OMSVGLength l) {
972 	return createSVGLength(l.getUnitType(), l.getValueInSpecifiedUnits());
973   }
974   /**
975    * Creates an {@link org.vectomatic.dom.svg.OMSVGAngle} object outside of
976    * any document trees. The object is initialized to the specified value
977    * and unit type.
978    * @param unitType the unit type to use for initialization
979    * @param valueInSpecifiedUnits the value to use for initialization, in the specified units
980    * @return An {@link org.vectomatic.dom.svg.OMSVGAngle} object.
981    */
982   public final OMSVGAngle createSVGAngle(short unitType, float valueInSpecifiedUnits) {
983 	OMSVGAngle angle = ((SVGSVGElement)ot).createSVGAngle();
984 	angle.newValueSpecifiedUnits(unitType, valueInSpecifiedUnits);
985 	return angle;
986   }
987   /**
988    * Creates an {@link org.vectomatic.dom.svg.OMSVGAngle} object outside of
989    * any document trees. The object is initialized to the specified angle.
990    * @param a the angle to use for initialization
991    * @return An {@link org.vectomatic.dom.svg.OMSVGAngle} object.
992    */
993   public final OMSVGAngle createSVGAngle(OMSVGAngle a) {
994 	return createSVGAngle(a.getUnitType(), a.getValueInSpecifiedUnits());
995   }
996   /**
997    * Creates an {@link org.vectomatic.dom.svg.OMSVGPoint} object outside of
998    * any document trees. The object is initialized to the specified coordinates.
999    * @param x the X coordinate to use for initialization
1000    * @param y the Y coordinate to use for initialization
1001    * @return An {@link org.vectomatic.dom.svg.OMSVGPoint} object.
1002    */
1003   public final OMSVGPoint createSVGPoint(float x, float y) {
1004 	OMSVGPoint point = ((SVGSVGElement)ot).createSVGPoint();
1005 	point.setX(x);
1006 	point.setY(y);
1007 	return point;
1008   }
1009   /**
1010    * Creates an {@link org.vectomatic.dom.svg.OMSVGPoint} object outside of
1011    * any document trees. The object is initialized to the specified point.
1012    * @param p the point to use for initialization
1013    * @return An {@link org.vectomatic.dom.svg.OMSVGPoint} object.
1014    */
1015   public final OMSVGPoint createSVGPoint(OMSVGPoint p) {
1016 	return createSVGPoint(p.getX(), p.getY());
1017   }
1018   /**
1019    * Creates an {@link org.vectomatic.dom.svg.OMSVGMatrix} object outside of
1020    * any document trees. The object is initialized to the specified components.
1021    * @param a the A component to use for initialization
1022    * @param b the B component to use for initialization
1023    * @param c the C component to use for initialization
1024    * @param d the D component to use for initialization
1025    * @param e the E component to use for initialization
1026    * @param f the F component to use for initialization
1027    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object.
1028    */
1029   public final OMSVGMatrix createSVGMatrix(float a, float b, float c, float d, float e, float f) {
1030 	OMSVGMatrix matrix = ((SVGSVGElement)ot).createSVGMatrix();
1031 	matrix.setA(a);
1032 	matrix.setB(b);
1033 	matrix.setC(c);
1034 	matrix.setD(d);
1035 	matrix.setE(e);
1036 	matrix.setF(f);
1037 	return matrix;
1038   }
1039   /**
1040    * Creates an {@link org.vectomatic.dom.svg.OMSVGMatrix} object outside of
1041    * any document trees. The object is initialized to the specified matrix.
1042    * @param m the matrix to use for initialization
1043    * @return An {@link org.vectomatic.dom.svg.OMSVGMatrix} object.
1044    */
1045   public final OMSVGMatrix createSVGMatrix(OMSVGMatrix m) {
1046 	return createSVGMatrix(m.getA(), m.getB(), m.getC(), m.getD(), m.getE(), m.getF());
1047   }
1048   /**
1049    * Creates an {@link org.vectomatic.dom.svg.OMSVGRect} object outside of
1050    * any document trees. The object is initialized to the specified coordinates
1051    * and size.
1052    * @param x the X coordinate to use for initialization
1053    * @param y the Y coordinate to use for initialization
1054    * @param width the width to use for initialization
1055    * @param height the height to use for initialization
1056    * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object.
1057    */
1058   public final OMSVGRect createSVGRect(float x, float y, float width, float height) {
1059 	OMSVGRect rect = ((SVGSVGElement)ot).createSVGRect();
1060 	rect.setX(x);
1061 	rect.setY(y);
1062 	rect.setWidth(width);
1063 	rect.setHeight(height);
1064 	return rect;
1065   }
1066   /**
1067    * Creates an {@link org.vectomatic.dom.svg.OMSVGRect} object outside of
1068    * any document trees. The object is initialized to the specified rectangle.
1069    * @param rect the rect to use for initialization
1070    * @return An {@link org.vectomatic.dom.svg.OMSVGRect} object.
1071    */
1072   public final OMSVGRect createSVGRect(OMSVGRect rect) {
1073 	return createSVGRect(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());
1074   }
1075   /**
1076    * Sets the base value for the height of this {@link org.vectomatic.dom.svg.OMSVGSVGElement}
1077    * to the specified value and unit type.
1078    * @param unitType the unit type in which the height is specified
1079    * @param height the height in the specified units
1080    */
1081   public final void setHeight(short unitType, float height) {
1082 	getHeight().getBaseVal().newValueSpecifiedUnits(unitType, height);
1083   }
1084   /**
1085    * Sets the base value for the height of this {@link org.vectomatic.dom.svg.OMSVGSVGElement}
1086    * to the specified value and unit type.
1087    * @param unitType the unit type in which the height is specified
1088    * @param height the height in the specified units
1089    */
1090   public final void setHeight(com.google.gwt.dom.client.Style.Unit unitType, float height) {
1091 	getHeight().getBaseVal().newValueSpecifiedUnits(unitType, height);
1092   }
1093   /**
1094    * Sets the base value for the viewbox of this {@link org.vectomatic.dom.svg.OMSVGSVGElement}
1095    * to the specified rectangle.
1096    * @param rect the rectangle used to specify the viewbox
1097    */
1098   public final void setViewBox(OMSVGRect rect) {
1099 	setViewBox(rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight());
1100   }
1101   /**
1102    * Sets the base value for the viewbox of this {@link org.vectomatic.dom.svg.OMSVGSVGElement}
1103    * to the specified coordinates and size.
1104    * @param x the X coordinate to use for the viewbox
1105    * @param y the Y coordinate to use for the viewbox
1106    * @param width the width to use for the viewbox
1107    * @param height the height to use for the viewbox
1108    */
1109   public final void setViewBox(float x, float y, float width, float height) {
1110 	if (!((SVGSVGElement)ot).hasAttribute(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE)) {
1111 		StringBuilder builder = new StringBuilder();
1112 		builder.append(x);
1113 		builder.append(" ");
1114 		builder.append(y);
1115 		builder.append(" ");
1116 		builder.append(width);
1117 		builder.append(" ");
1118 		builder.append(height);
1119 		((SVGSVGElement)ot).setAttribute(SVGConstants.SVG_VIEW_BOX_ATTRIBUTE, builder.toString());
1120 		return;
1121 	}
1122 	OMSVGRect viewBox = getViewBox().getBaseVal();
1123 	viewBox.setX(x);
1124 	viewBox.setY(y);
1125 	viewBox.setWidth(width);
1126 	viewBox.setHeight(height);
1127   }
1128   /**
1129    * Sets the base value for the width of this {@link org.vectomatic.dom.svg.OMSVGSVGElement}
1130    * to the specified value and unit type.
1131    * @param unitType the unit type in which the width is specified
1132    * @param width the width in the specified units
1133    */
1134   public final void setWidth(short unitType, float width) {
1135 	getWidth().getBaseVal().newValueSpecifiedUnits(unitType, width);
1136   }
1137   /**
1138    * Sets the base value for the width of this {@link org.vectomatic.dom.svg.OMSVGSVGElement}
1139    * to the specified value and unit type.
1140    * @param unitType the unit type in which the width is specified
1141    * @param width the width in the specified units
1142    */
1143   public final void setWidth(com.google.gwt.dom.client.Style.Unit unitType, float width) {
1144 	getWidth().getBaseVal().newValueSpecifiedUnits(unitType, width);
1145   }
1146 }