Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012 Google Inc.
   * 
   * 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.
  */
 package elemental.js.dom;
 
 
 
 import java.util.Date;

A base class containing all of the IDL interfaces which are shared between disjoint type hierarchies. Because of the GWT compiler SingleJsoImpl restriction that only a single JavaScriptObject may implement a given interface, we hoist all of the explicit mixin classes into a base JSO used by all of elemental.
 
   protected JsElementalMixinBase() {}
 
   public final native int getChildElementCount() /*-{
     return this.childElementCount;
   }-*/;
 
   public final native JsSVGAnimatedString getAnimatedClassName() /*-{
     return this.className;
   }-*/;
 
   public final native JsSVGAnimatedBoolean getExternalResourcesRequired() /*-{
     return this.externalResourcesRequired;
   }-*/;
 
   public final native JsSVGElement getFarthestViewportElement() /*-{
     return this.farthestViewportElement;
   }-*/;
 
   public final native JsElement getFirstElementChild() /*-{
     return this.firstElementChild;
   }-*/;
 
   public final native JsSVGAnimatedLength getAnimatedHeight() /*-{
     return this.height;
   }-*/;
 
   public final native JsSVGAnimatedString getAnimatedHref() /*-{
     return this.href;
   }-*/;
 
   public final native JsElement getLastElementChild() /*-{
    return this.lastElementChild;
  }-*/;
  public final native JsSVGElement getNearestViewportElement() /*-{
    return this.nearestViewportElement;
  }-*/;
  public final native JsElement getNextElementSibling() /*-{
    return this.nextElementSibling;
  }-*/;
    return this.preserveAspectRatio;
  }-*/;
  public final native JsElement getPreviousElementSibling() /*-{
    return this.previousElementSibling;
  }-*/;
  public final native JsSVGStringList getRequiredExtensions() /*-{
    return this.requiredExtensions;
  }-*/;
  public final native JsSVGStringList getRequiredFeatures() /*-{
    return this.requiredFeatures;
  }-*/;
  public final native JsSVGAnimatedString getAnimatedResult() /*-{
    return this.result;
  }-*/;
  public final native JsCSSStyleDeclaration getSvgStyle() /*-{
    return this.style;
  }-*/;
  public final native JsSVGStringList getSystemLanguage() /*-{
    return this.systemLanguage;
  }-*/;
  public final native JsSVGAnimatedTransformList getAnimatedTransform() /*-{
    return this.transform;
  }-*/;
  public final native JsSVGAnimatedRect getViewBox() /*-{
    return this.viewBox;
  }-*/;
  public final native JsSVGAnimatedLength getAnimatedWidth() /*-{
    return this.width;
  }-*/;
  public final native JsSVGAnimatedLength getAnimatedX() /*-{
    return this.x;
  }-*/;
  public final native String getXmllang() /*-{
    return this.xmllang;
  }-*/;
  public final native void setXmllang(String param_xmllang/*-{
    this.xmllang = param_xmllang;
  }-*/;
  public final native String getXmlspace() /*-{
    return this.xmlspace;
  }-*/;
  public final native void setXmlspace(String param_xmlspace/*-{
    this.xmlspace = param_xmlspace;
  }-*/;
  public final native JsSVGAnimatedLength getAnimatedY() /*-{
    return this.y;
  }-*/;
  public final native int getZoomAndPan() /*-{
    return this.zoomAndPan;
  }-*/;
  public final native void setZoomAndPan(int param_zoomAndPan/*-{
    this.zoomAndPan = param_zoomAndPan;
  }-*/;
  public final native boolean dispatchEvent(Event event/*-{
    return this.dispatchEvent(event);
  }-*/;
  public final native JsSVGRect getBBox() /*-{
    return this.getBBox();
  }-*/;
  public final native JsSVGMatrix getCTM() /*-{
    return this.getCTM();
  }-*/;
  public final native JsSVGMatrix getScreenCTM() /*-{
    return this.getScreenCTM();
  }-*/;
  public final native JsSVGMatrix getTransformToElement(SVGElement element/*-{
    return this.getTransformToElement(element);
  }-*/;
  public final native void beginElement() /*-{
    this.beginElement();
  }-*/;
  public final native void beginElementAt(float offset/*-{
    this.beginElementAt(offset);
  }-*/;
  public final native void endElement() /*-{
    this.endElement();
  }-*/;
  public final native void endElementAt(float offset/*-{
    this.endElementAt(offset);
  }-*/;
  public final native boolean hasExtension(String extension/*-{
    return this.hasExtension(extension);
  }-*/;
  public final native JsElement querySelector(String selectors/*-{
    return this.querySelector(selectors);
  }-*/;
  public final native JsNodeList querySelectorAll(String selectors/*-{
    return this.querySelectorAll(selectors);
  }-*/;
  public final native JsCSSValue getPresentationAttribute(String name/*-{
    return this.getPresentationAttribute(name);
  }-*/;
private static class Remover implements EventRemover {
  private final EventTarget target;
  private final String type;
  private final JavaScriptObject handler;
  private final boolean useCapture;
  private Remover(EventTarget targetString typeJavaScriptObject handler,
      boolean useCapture) {
    this. = target;
    this. = type;
    this. = handler;
    this. = useCapture;
  }
  public void remove() {
  }
  private static Remover create(EventTarget targetString typeJavaScriptObject handler,
      boolean useCapture) {
    return new Remover(targettypehandleruseCapture);
  }
// NOTES:
// - This handler/listener structure is currently the same in DevMode and ProdMode but it is
//   subject to change. In fact, I would like to use:
//     { listener : listener, handleEvent : function() }
//   but Firefox doesn't properly support that form of handler for onEvent type events.
// - The handler property on listener can be removed when removeEventListener is removed.
private native static JavaScriptObject createHandler(EventListener listener/*-{
  var handler = listener.handler;
  if (!handler) {
    handler = $entry(function(event) {
      @elemental.js.dom.JsElementalMixinBase::handleEvent(Lelemental/events/EventListener;Lelemental/events/Event;)(listener, event);
    });
    handler.listener = listener;
    // TODO(knorton): Remove at Christmas when removeEventListener is removed.
    listener.handler = handler;
  }
  return handler;
}-*/;
private static class ForDevMode {
  static {
    if (!com.google.gwt.core.client.GWT.isScript()) {
    }
  }
  private static JavaScriptObject getHandlerFor(EventListener listener) {
    if (listener == null) {
      return null;
    }
    JavaScriptObject handler = .get(listener);
    if (handler == null) {
      handler = createHandler(listener);
      .put(listenerhandler);
    }
    return handler;
  }
  private native static JavaScriptObject createHandler(EventListener listener/*-{
    var handler = $entry(function(event) {
      @elemental.js.dom.JsElementalMixinBase::handleEvent(Lelemental/events/EventListener;Lelemental/events/Event;)(listener, event);
    });
    handler.listener = listener;
    return handler;
  }-*/;
  private native static EventListener getListenerFor(JavaScriptObject handler/*-{
    return handler && handler.listener;
  }-*/;
private static class ForProdMode {
  private static JavaScriptObject getHandlerFor(EventListener listener) {
    return listener == null ? null : createHandler(listener);
  }
  private native static EventListener getListenerFor(JavaScriptObject handler/*-{
    return handler && handler.listener;
  }-*/;
private static void handleEvent(EventListener listenerEvent event) {
  listener.handleEvent(event);
private static EventListener getListenerFor(JavaScriptObject handler) {
  return com.google.gwt.core.client.GWT.isScript()
    ? ForProdMode.getListenerFor(handler)
    : ForDevMode.getListenerFor(handler);
private static JavaScriptObject getHandlerFor(EventListener listener) {
  return com.google.gwt.core.client.GWT.isScript()
    ? ForProdMode.getHandlerFor(listener)
    : ForDevMode.getHandlerFor(listener);
 
public native final EventRemover addEventListener(String typeEventListener listenerboolean useCapture/*-{
  var handler = @elemental.js.dom.JsElementalMixinBase::getHandlerFor(Lelemental/events/EventListener;)(listener);
  this.addEventListener(type, handler, useCapture);
  return @elemental.js.dom.JsElementalMixinBase.Remover::create(Lelemental/events/EventTarget;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;Z)
      (this, type, handler, useCapture);
}-*/;
public native final EventRemover addEventListener(String typeEventListener listener/*-{
  var handler = @elemental.js.dom.JsElementalMixinBase::getHandlerFor(Lelemental/events/EventListener;)(listener);
  this.addEventListener(type, handler);
  return @elemental.js.dom.JsElementalMixinBase.Remover::create(Lelemental/events/EventTarget;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;Z)
      (this, type, handler, useCapture);
}-*/;
public final void removeEventListener(String typeEventListener listenerboolean useCapture) {
  final JavaScriptObject handler = getHandlerFor(listener);
  if (handler != null) {
    removeEventListener(thistypehandleruseCapture);
  }
public final void removeEventListener(String typeEventListener listener) {
  final JavaScriptObject handler = getHandlerFor(listener);
  if (handler != null) {
    removeEventListener(thistypehandler);
  }
private static native void removeEventListener(EventTarget targetString type,
    JavaScriptObject handlerboolean useCapture/*-{
  target.removeEventListener(type, handler, useCapture);
}-*/;
private static native void removeEventListener(EventTarget targetString type,
    JavaScriptObject handler/*-{
  target.removeEventListener(type, handler);
}-*/;
New to GrepCode? Check out our FAQ X