/*
* Copyright (c) 2014 Ahomé Innovation Technologies. All rights reserved.
*
* 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 com.ait.toolkit.sencha.shared.client.dom;
import java.util.List;
import com.ait.toolkit.core.client.Function;
import com.ait.toolkit.core.client.JsObject;
import com.ait.toolkit.sencha.shared.client.core.Box;
import com.ait.toolkit.sencha.shared.client.core.Side;
import com.ait.toolkit.sencha.shared.client.core.Size;
import com.ait.toolkit.sencha.shared.client.core.config.StyleConfig;
import com.ait.toolkit.sencha.shared.client.core.handlers.ElementEventHandler;
import com.ait.toolkit.sencha.shared.client.core.handlers.ElementHandlerRegistration;
import com.ait.toolkit.sencha.shared.client.core.handlers.EventHandler;
import com.ait.toolkit.sencha.shared.client.fx.FadeIn;
import com.ait.toolkit.sencha.shared.client.fx.FadeOut;
import com.ait.toolkit.sencha.shared.client.fx.HighLight;
import com.google.gwt.animation.client.Animation;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayNumber;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.dom.client.Element;
/**
* Encapsulates a DOM element, adding simple DOM manipulation facilities,
* normalizing for browser differences.
*
* All instances of this class inherit the methods of Ext.fx.Anim making visual
* effects easily available to all DOM elements.
*
* Note that the events documented in this class are not Ext events, they
* encapsulate browser events. Some older browsers may not support the full
* range of events. Which events are supported is beyond the control of Ext JS.
*
*/
public class ExtElement extends DomElement {
public static final int VISIBILITY = 1;
public static final int DISPLAY = 2;
public static final int OFFSETS = 3;
public static final int ASCLASS = 4;
protected ExtElement() {}
/**
* Create an ExtElement using an existing native element.
*
* @param jsObj
* native Element object
*/
public ExtElement( JavaScriptObject jsObj ) {
super( jsObj );
}
/**
* Create an ExtElement wrapper around en existing DOM Element.
*
* @param elem
* the DOM Element
*/
public ExtElement( Element elem ) {
this( elem, false );
}
/**
* Create an ExtElement wrapper around an existing DOM Element.
*
* @param elem
* the DOM Element
* @param forceNew
* by default the constructor checks to see if there is already
* an instance of this element in the cache and if there is it
* returns the same instance. Passing <code>true</code> will skip
* that check (useful for extending this class)
*/
public ExtElement( Element elem, boolean forceNew ) {
jsObj = create( elem, forceNew );
}
/**
* Gets the globally shared flyweight Element, with the passed node as the
* active element. Do not store a reference to this element - the dom node
* can be overwritten by other code.
*
* @param id
* the Element id
* @return the shared ExtElement object
*/
public static native ExtElement fly( String id )/*-{
var elem = $wnd.Ext.fly(id);
return elem == null || elem === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(elem);
}-*/;
/**
* Gets the globally shared flyweight ExtElement, with the passed node as
* the active element. Do not store a reference to this element - the dom
* node can be overwritten by other code.
*
* @param id
* the Element id
* @param named
* allows for creation of named reusable flyweights to prevent
* conflicts (e.g. internally Ext uses "_internal")
* @return the shared ExtElement object
*/
public static native ExtElement fly( String id, String named )/*-{
var elem = $wnd.Ext.fly(id, named);
return elem == null || elem === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(elem);
}-*/;
/**
* Static method to retrieve ExtElement objects. Uses simple caching to
* consistently return the same object. Automatically fixes if an object was
* recreated with the same id via AJAX or DOM.
*
* @param id
* the id of Element
* @return the ExtElement object
*/
public static native ExtElement get( String id )/*-{
var elem = $wnd.Ext.get(id);
return elem == null || elem === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(elem);
}-*/;
/**
* The DOM element ID
*
* @return this
*/
public native String getId() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.id;
}-*/;
/**
* The DOM element ID
*
* @return this
*/
public native void setId( String id ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.id = id;
}-*/;
/**
* Adds one classe to the element. Duplicate classes are automatically
* filtered out.
*
* @return this
*/
public native ExtElement addCls( String value ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addCls(value);
return this;
}-*/;
/**
* Adds one or more CSS classes to the element. Duplicate classes are
* automatically filtered out. filtered out.
*
* @return this
*/
public ExtElement addCls( List<String> values ) {
JsArrayString classes = JsArrayString.createArray().cast();
for( String string : values ) {
classes.push( string );
}
return _addCls( classes );
}
/**
* Adds one or more CSS classes to the element. Duplicate classes are
* automatically filtered out. filtered out.
*
* @return this
*/
public ExtElement addCls( String... values ) {
JsArrayString classes = JsArrayString.createArray().cast();
for( String string : values ) {
classes.push( string );
}
return _addCls( classes );
}
/**
* Sets up event handlers to add and remove a css class when the mouse is
* down and then up on this element (a click effect)
*
* @return this
*/
public native ExtElement addClsOnClick( String value ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addClsOnClick(value);
return this;
}-*/;
/**
* * Sets up event handlers to add and remove a css class when this element
* has the focus
*
*
*
* @return this
*/
public native ExtElement addClsOnFocus( String value ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addClsOnFocus(value);
return this;
}-*/;
/**
* Sets up event handlers to add and remove a css class when the mouse is
* over this element
*
* @return this
*/
public native ExtElement addClsOnOver( String value ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addClsOnOver(value);
return this;
}-*/;
/**
* Convenience method for constructing a KeyMap
*
* @param key
* @param callback
*/
public native void addKeyListener( String key, Function callback )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addKeyListener(key, $entry(function() {
callback.@com.ait.toolkit.core.client.Function::execute()();
}));
}-*/;
/**
* Convenience method for constructing a KeyMap
*
* @param key
* @param callback
*/
public native void addKeyListener( int key, Function callback )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addKeyListener(key, $entry(function() {
callback.@com.ait.toolkit.core.client.Function::execute()();
}));
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement alignTo( String element )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(element);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement alignTo( String element, String position )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(element, position);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement alignTo( String element, String position, double[] offsets ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _alignTo( element, position, numbers );
}
private native ExtElement _alignTo( String element, String position,
JsArrayNumber offsets )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(element, position, offsets);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement alignTo( String element, String position,
double[] offsets, boolean animate ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _alignTo( element, position, numbers, animate );
}
private native ExtElement _alignTo( String element, String position,
JsArrayNumber offsets, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(element, position, offsets, animate);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement alignTo( ExtElement element )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem
.alignTo(element.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement alignTo( ExtElement element, String position )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(
element.@com.ait.toolkit.core.client.JsObject::getJsObj()(),
position);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement alignTo( ExtElement element, String position,
double[] offsets ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _alignTo( element, position, numbers );
}
private native ExtElement _alignTo( ExtElement element, String position,
JsArrayNumber offsets )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(
element.@com.ait.toolkit.core.client.JsObject::getJsObj()(),
position, offsets);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement alignTo( ExtElement element, String position,
double[] offsets, boolean animate ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _alignTo( element, position, numbers, animate );
}
private native ExtElement _alignTo( ExtElement element, String position,
JsArrayNumber offsets, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.alignTo(
element.@com.ait.toolkit.core.client.JsObject::getJsObj()(),
position, offsets, animate);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement anchorTo( String element )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(element);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement anchorTo( String element, String position )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(element, position);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement anchorTo( String element, String position, double[] offsets ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _anchorTo( element, position, numbers );
}
private native ExtElement _anchorTo( String element, String position,
JsArrayNumber offsets )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(element, position, offsets);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement anchorTo( String element, String position,
double[] offsets, boolean animate ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _anchorTo( element, position, numbers, animate );
}
private native ExtElement _anchorTo( String element, String position,
JsArrayNumber offsets, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(element, position, offsets, animate);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement anchorTo( ExtElement element )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem
.anchorTo(element.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public native ExtElement anchorTo( ExtElement element, String position )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(
element.@com.ait.toolkit.core.client.JsObject::getJsObj()(),
position);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement anchorTo( ExtElement element, String position,
double[] offsets ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _anchorTo( element, position, numbers );
}
public ExtElement anchorTo( ExtElement element, String position,
double offsetX, double offsetY ) {
JsArrayNumber numbers = JsArray.createArray().cast();
numbers.push( offsetX );
numbers.push( offsetY );
return _anchorTo( element, position, numbers );
}
public ExtElement anchorTo( ExtElement element, String position,
double offset ) {
return anchorTo( element, position, offset, offset );
}
private native ExtElement _anchorTo( ExtElement element, String position,
JsArrayNumber offsets )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(
element.@com.ait.toolkit.core.client.JsObject::getJsObj()(),
position, offsets);
return this;
}-*/;
/**
* Aligns this element with another element relative to the specified anchor
* points. If the other element is the document it aligns it to the
* viewport.
*
* @param element
*/
public ExtElement anchorTo( ExtElement element, String position,
double[] offsets, boolean animate ) {
JsArrayNumber numbers = JsArray.createArray().cast();
for( double d : offsets ) {
numbers.push( d );
}
return _anchorTo( element, position, numbers, animate );
}
public ExtElement anchorTo( ExtElement element, String position,
double offsetX, double offsetY, boolean animate ) {
JsArrayNumber numbers = JsArray.createArray().cast();
numbers.push( offsetX );
numbers.push( offsetY );
return _anchorTo( element, position, numbers, animate );
}
public ExtElement anchorTo( ExtElement element, String position,
double offset, boolean animate ) {
return anchorTo( element, position, offset, offset, animate );
}
private native ExtElement _anchorTo( ExtElement element, String position,
JsArrayNumber offsets, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.anchorTo(
element.@com.ait.toolkit.core.client.JsObject::getJsObj()(),
position, offsets, animate);
return this;
}-*/;
/**
* Creates a KeyMap for this element
*
* @param value
* @return
*/
public native JavaScriptObject addKeyMap( Object value )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.addKeyMap(value);
}-*/;
/**
* Appends the passed element to this element.
*
* @param child
* the child element
* @return this
*/
public native ExtElement appendChild( String child ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.appendChild(child);
return this;
}-*/;
/**
* Appends the passed element to this element.
*
* @param child
* the child element
* @return this
*/
public native ExtElement appendChild( Element child ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.appendChild(child);
return this;
}-*/;
public native ExtElement appendChild( ExtElement child ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem
.appendChild(child.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Appends this element to the passed element.
*
* @param el
* the new parent element
* @return this
*/
public native ExtElement appendTo( Element el ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.appendTo(el);
return this;
}-*/;
/**
* Creates a child element for this element using the given string.
*
* @param childContent,html string representation of the child element.
*
* @return this
*/
public native ExtElement createChild( String childContent )/*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.createChild(childContent);
return this;
}-*/;
public native ExtElement set( JsObject attr )/*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.set(attr.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this
}-*/;
public native ExtElement setInputValue( String newValue )/*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.set({
value : newValue
});
return this;
}-*/;
/**
* Tries to blur the element. Any exceptions are caught and ignored.
*
* @return this
*/
public native ExtElement blur() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.blur();
return this;
}-*/;
/**
* Wraps the specified element with a special markup/CSS block that renders
* by default as a gray container with a gradient background, rounded
* corners and a 4-way shadow.
*
* @return this
*/
public native ExtElement boxWrap() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var wrap = elem.boxWrap();
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(wrap);
}-*/;
/**
* Wraps the specified element with a special markup/CSS block that renders
* by default as a gray container with a gradient background, rounded
* corners and a 4-way shadow.
*
* @param boxClass
* A base CSS class to apply to the containing wrapper element
* (defaults to 'x-box'). Note that there are a number of CSS
* rules that are dependent on this name to make the overall
* effect work, so if you supply an alternate base class, make
* sure you also supply all of the necessary rules.
* @return this
*/
public native ExtElement boxWrap( String boxClass ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var wrap = elem.boxWrap(boxClass);
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(wrap);
}-*/;
/**
* Centers the Element in the viewport.
*
* @return this
*/
public native ExtElement center() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.center();
return this;
}-*/;
/**
* Centers the Element in another Element.
*
* @param centerIn
* the element in which to center the element.
* @return this
*/
public native ExtElement center( Element centerIn ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.center(centerIn);
return this;
}-*/;
/**
* Selects a single child at any depth below this element based on the
* passed CSS selector (the selector should not contain an id).
*
* @param selector
* the CSS selector
* @return child element
*/
public native Element child( String selector ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var e = elem.child(selector, true);
return e == null || e === undefined ? null : e;
}-*/;
/**
* Removes Empty, or whitespace filled text nodes. Combines adjacent text
* nodes.
*/
public native void clean() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clean();
}-*/;
/**
* Removes Empty, or whitespace filled text nodes. Combines adjacent text
* nodes. By default the element keeps track if it has been cleaned already
* so you can call this over and over. However, if you update the element
* and need to force a reclean, you can pass true.
*/
public native void clean( boolean forceReclean ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clean(forceReclean);
}-*/;
/**
* Removes all previous added listeners from this element
*/
public native ExtElement clearListeners() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clearListeners();
return this;
}-*/;
/**
* Removes all previous added listeners from this element
*/
public native ExtElement clearOpacitiy() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clearOpacitiy();
return this;
}-*/;
/**
* Clear positioning back to the default when the document was loaded
*/
public native ExtElement clearPositioning() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clearPositioning();
return this;
}-*/;
/**
* Clear positioning back to the default when the document was loaded
*/
public native ExtElement clearPositioning( String value ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clearPositioning(value);
return this;
}-*/;
/**
* Store the current overflow setting and clip overflow on the element - use
* unclip to remove
*/
public native ExtElement clip() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.clip();
return this;
}-*/;
/**
* Whether this element is an ancestor of the passed element.
*
* @param el
* the element to check
* @return true if this element is an ancestor of the passed element
*/
public native boolean contains( Element el ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.contains(el);
}-*/;
/**
* Creates the passed DomHelper config and appends it to this element
*
* @param config
* DomHelper element config object. If no tag is specified (e.g.,
* {tag:'input'}) then a div will be automatically generated with
* the specified attributes.
* @return the new child element
*/
public native ExtElement createChild( DomConfig config ) /*-{
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var childJS = elem.createChild(configJS);
var childJ = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(elem);
return childJ;
}-*/;
/**
* Creates the passed DomHelper config and appends inserts it before the
* passed child element.
*
* @param config
* DomHelper element config object. If no tag is specified (e.g.,
* {tag:'input'}) then a div will be automatically generated with
* the specified attributes.
* @param insertBefore
* a child element of this element
* @return the new child element
*/
public native ExtElement createChild( DomConfig config, Element insertBefore ) /*-{
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var childJS = elem.createChild(configJS, insertBefore);
var childJ = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(elem);
return childJ;
}-*/;
/**
* Creates a proxy element of this element.
*
* @param config
* DomHelper config object
* @return the new proxy element
*/
public native ExtElement createProxy( DomConfig config ) /*-{
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var proxy = elem.createProxy(configJS);
var proxyJ = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(proxy);
return proxyJ;
}-*/;
/**
* Creates a proxy element of this element.
*
* @param config
* DomHelper config object
* @param renderTo
* The element render the proxy to
* @param matchBox
* true to align and size the proxy to this element now (defaults
* to false)
* @return the new proxy element
*/
public native ExtElement createProxy( DomConfig config, Element renderTo,
boolean matchBox ) /*-{
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var proxy = elem.createProxy(configJS, renderTo, matchBox);
var proxyJ = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(proxy);
return proxyJ;
}-*/;
/**
* Creates a proxy element of this element.
*
* @param cls
* the class name of the proxy element
* @return the new proxy element
*/
public native ExtElement createProxy( String cls ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.createProxy(cls);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Creates a proxy element of this element.
*
* @param cls
* the class name of the proxy element
* @param renderTo
* The element render the proxy to
* @param matchBox
* true to align and size the proxy to this element now (defaults
* to false)
* @return the new proxy element
*/
public native ExtElement createProxy( String cls, Element renderTo,
boolean matchBox ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.createProxy(cls, renderTo, matchBox);
return this;
}-*/;
/**
* Selects a single *direct* child based on the passed CSS selector (the
* selector should not contain an id).
*
* @param selector
* the CSS selector
* @return the child element
*/
public native Element down( String selector ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.down(selector, true);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Fade an element in (from transparent to opaque). The ending opacity can
* be specified using the fadein config option.
*/
public native Element fadeIn( FadeIn config ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.fadeIn(config.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Fade an element out (from opaque to transparent). The ending opacity can
* be specified using the fadein config option.
*/
public native Element fadeOut( FadeOut config ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem
.fadeOut(config.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Looks at this node and then at parent nodes for a match of the passed
* simple selector (e.g. div.some-class or span:first-child)
*
* @param selector
* the simple selector to test
* @return the matching element of null if no node found
*/
public native Element findParent( String selector ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.findParent(selector);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Looks at this node and then at parent nodes for a match of the passed
* simple selector (e.g. div.some-class or span:first-child)
*
* @param selector
* the simple selector to test
* @param container
* search until container element is reached
* @return the matching element of null if no node found
*/
public native Element findParent( String selector, Element container ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.findParent(selector, container);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Looks at this node and then at parent nodes for a match of the passed
* simple selector (e.g. div.some-class or span:first-child)
*
* @param selector
* the simple selector to test
* @param maxDepth
* the max depth to search as a number (defaults to 10)
* @return the matching element of null if no node found
*/
public native Element findParent( String selector, int maxDepth ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.findParent(selector, maxDepth);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Looks at parent nodes for a match of the passed simple selector (e.g.
* div.some-class or span:first-child)
*
* @param selector
* the simple selector to test
* @param container
* search until container element is reached
* @return the matching element of null if no node found
*/
public native Element findParentNode( String selector, Element container ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.findParentNode(selector, container);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Looks at parent nodes for a match of the passed simple selector (e.g.
* div.some-class or span:first-child)
*
* @param selector
* the simple selector to test
* @param maxDepth
* the max depth to search as a number (defaults to 10)
* @return the matching element of null if no node found
*/
public native Element findParentNode( String selector, int maxDepth ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.findParentNode(selector, maxDepth);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
public native ExtElement first() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.first();
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
public native ExtElement first( String selector ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.first(selector);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
public native ExtElement last() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.last();
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
public native ExtElement last( String selector ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.last(selector);
var toReturn = @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
return toReturn;
}-*/;
/**
* Tries to focus the element. Any exceptions are caught and ignored.
*
* @return this
*/
public native ExtElement focus() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.focus();
return this;
}-*/;
/**
* Checks whether this element can be focused.
*
* @return this
*/
public native boolean isFocusable() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.focusable();
}-*/;
/**
* Shows a ripple of exploding, attenuating borders to draw attention to an
* Element.
*
* @return this
*/
public native ExtElement frame() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.frame();
return this;
}-*/;
/**
* Shows a ripple of exploding, attenuating borders to draw attention to an
* Element.
*
* @return this
*/
public native ExtElement frame( String color ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.frame(color);
return this;
}-*/;
/**
* Shows a ripple of exploding, attenuating borders to draw attention to an
* Element.
*
* @return this
*/
public native ExtElement frame( String color, int count ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.frame(color, count);
return this;
}-*/;
/**
* Shows a ripple of exploding, attenuating borders to draw attention to an
* Element.
*
* @return this
*/
public native ExtElement frame( String color, int count, Animation animation ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.frame(color, count, animation);
return this;
}-*/;
/**
* Gets the x,y coordinates to align this element with another element.
*
* @param element
* The element to align to
* @param anchorPosition
* the element's anchor point
* @return an array containing the element's x and y coordinates
*/
public native int[] getAlignToXY( Element element, String anchorPosition ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var arrJS = elem.getAlignToXY(element, anchorPosition);
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)(arrJS);
}-*/;
/**
* Gets the x,y coordinates to align this element with another element.
*
* @param element
* The element to align to.
* @param anchorPosition
* the element's anchor point
* @param offesets
* offset the positioning by [x, y]
* @return an array containing the element's x and y coordinates
*/
public native int[] getAlignToXY( Element element, String anchorPosition,
int[] offesets ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var offsetsJS = @com.ait.toolkit.core.client.JsoHelper::convertToJavaScriptArray([I)(offesets);
var arrJS = elem.getAlignToXY(element, anchorPosition, offsetsJS);
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)(arrJS);
}-*/;
/**
* Gets the x,y coordinates specified by the anchor position on the element.
*
* @return an array containing the element's x and y coordinates
*/
public native int[] getAnchorXY() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var arrJS = elem.getAnchorXY();
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)(arrJS);
}-*/;
/**
* Gets the x,y coordinates specified by the anchor position on the element.
*
* @param anchorPosition
* the specified anchor position.
* @param local
* true to get the local (element top/left-relative) anchor
* position instead of page coordinates
* @param width
* width to use for calculating anchor position
* @param height
* height to use for calculating anchor position
* @return an array containing the element's x and y coordinates
*/
public native int[] getAnchorXY( String anchorPosition, boolean local,
int width, int height ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var arrJS = elem.getAnchorXY(anchorPosition, local, {
width : width,
height : height
});
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)(arrJS);
}-*/;
/**
* Returns the value of a namespaced attribute from the element's underlying
* DOM node.
*
* @param namespace
* the namespace in which to look for the attribute
* @param name
* the attribute name
* @return the attribute value
*/
public native String getAttributeNS( String namespace, String name )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getAttributeNS(namespace, name);
}-*/;
/**
* Gets the width of the border for the specified side.
*
* @param side
* the side
* @return width of the side
*/
public native int getBorderWidth( Side side )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var sideJS = side.@com.ait.toolkit.sencha.shared.client.core.Side::getSide()();
return elem.getBorderWidth(sideJS);
}-*/;
/**
* Gets the bottom Y coordinate of the element (element Y position + element
* height)
*
* @param local
* true to get the local css position instead of page coordinate
* @return the bottom Y coordinate
*/
public native int getBottom( boolean local )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getBottom(local);
}-*/;
/**
* Return a Box that can be used to set another elements size/location to
* match this element.
*
* @return the box object
*/
public native Box getBox()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var boxJS = elem.getBox();
return @com.ait.toolkit.sencha.shared.client.core.Box::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(boxJS);
}-*/;
/**
* Return a Box that can be used to set another elements size/location to
* match this element.
*
* @param contentBox
* if true a box for the content of the element is returned.
* @param local
* if true the element's left and top are returned instead of
* page x/y
* @return the box object
*/
public native Box getBox( boolean contentBox, boolean local )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var boxJS = elem.getBox(contentBox, local);
return @com.ait.toolkit.sencha.shared.client.core.Box::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(boxJS);
}-*/;
/**
* Calculates the x, y to center this element on the screen
*
* @return the x, y values [
*/
public native int[] getCenterXY() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var arrJS = elem.getCenterXY();
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)(arrJS);
}-*/;
/**
* Return the CSS color for the specified CSS attribute. rgb, 3 digit (like
* #fff) and valid values are convert to standard 6 digit hex color.
*
* @param attr
* the css attribute
* @param defaultValue
* the default value to use when a valid color isn't found
* @return the css color
*/
public native String getColor( String attr, String defaultValue )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getColor(attr, defaultValue);
}-*/;
/**
* Return the CSS color for the specified CSS attribute. rgb, 3 digit (like
* #fff) and valid values are convert to standard 6 digit hex color.
*
* @param attr
* the css attribute
* @param defaultValue
* the default value to use when a valid color isn't found
* @param prefix
* defaults to #. Use an empty string when working with YUI color
* anims.
* @return the css color
*/
public native String getColor( String attr, String defaultValue,
String prefix )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getColor(attr, defaultValue, prefix);
}-*/;
/**
* Returns either the offsetHeight or the height of this element based on
* CSS height adjusted by padding or borders when needed to simulate
* offsetHeight when offsets aren't available. This may not work on
* display:none elements if a height has not been set using CSS.
*
* @return the computed height
*/
public native int getComputedHeight()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getComputedHeight();
}-*/;
/**
* Returns either the offsetWidth or the width of this element based on CSS
* width adjusted by padding or borders when needed to simulate offsetWidth
* when offsets aren't available. This may not work on display:none elements
* if a width has not been set using CSS.
*
* @return the computed width
*/
public native int getComputedWidth()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getComputedWidth();
}-*/;
/**
* Returns the underlying DOM Element.
*
* @return the DOM element
*/
public native Element getDom()/*-{
var element = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var dom = element.dom;
return dom === undefined ? null : dom;
}-*/;
/**
* Returns the sum width of the padding and borders for the passed side.
*
* @param side
* the side
* @return sum of padding and border for the side
*/
public native int getFrameWidth( Side side )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var sideJS = side.@com.ait.toolkit.sencha.shared.client.core.Side::getSide()();
return elem.getFrameWidth(sideJS);
}-*/;
/**
* Returns the offset height of the element.
*
* @return the element's height
*/
public native int getHeight()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getHeight();
}-*/;
/**
* Returns the offset height of the element.
*
* @param contentHeight
* true to get the height minus borders and padding
* @return the element's height
*/
public native int getHeight( boolean contentHeight )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getHeight(contentHeight);
}-*/;
/**
* Gets the left X coordinate
*
* @return the left coordinate.
*/
public native int getLeft()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getLeft();
}-*/;
/**
* Gets the left X coordinate.
*
* @param local
* true to get the local css position instead of page coordinate
* @return the X cooridinate
*/
public native int getLeft( boolean local )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getLeft(local);
}-*/;
/**
* Gets the next sibling, skipping text nodes.
*
* @return the next sibling or null
*/
public native ExtElement next()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.next();
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
}-*/;
/**
* Gets the next sibling, skipping text nodes.
*
* @param selector
* Find the next sibling that matches the passed simple selector
* @return the next sibling or null
*/
public native Element next( String selector )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.next(selector);
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
}-*/;
/**
* Gets the width of the padding for the specified side.
*
* @param side
* the side
* @return padding
*/
public native int getPadding( Side side )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var sideJS = side.@com.ait.toolkit.sencha.shared.client.core.Side::getSide()();
return elem.getPadding(sideJS);
}-*/;
/**
* Gets the previous sibling, skipping text nodes.
*
* @return the previous sibling or null
*/
public native ExtElement prev()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.prev();
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
}-*/;
/**
* Gets the previous sibling, skipping text nodes.
*
* @param selector
* Find the previous sibling that matches the passed simple
* selector
* @return the previous sibling or null
*/
public native Element prev( String selector )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var obj = elem.prev(selector);
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
}-*/;
// todo test
/**
* Returns the current scroll position of the element.
*
* @return array of left and top scroll position
*/
public native int[] getScroll()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var scroll = elem.getScroll();
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)([scroll.left, scroll.top]);
}-*/;
/**
* Returns the size of the element..
*
* @return element size
*/
public native Size getSize()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var sizeJS = elem.getSize();
return @com.ait.toolkit.sencha.shared.client.core.Size::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(sizeJS);
}-*/;
/**
* Normalizes currentStyle and computedStyle.
*
* @param property
* the style property whose value is returned
* @return the current value of the style property for this element,
* "undefined" if the style is not applied to the element
*/
public native String getStyle( String property )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return String(elem.getStyle(property));
}-*/;
/**
* Returns the top Y coordinate.
*
* @return the Y coordinate
*/
public native int getTop()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getTop();
}-*/;
/**
* Returns the top Y coordinate.
*
* @param local
* true to get the local css position instead of page coordinate
* @return the top Y coordinate
*/
public native int getTop( boolean local )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getTop(local);
}-*/;
/**
* Returns the value of the "value" attribute
*
* @return the value
*/
public native String getValue()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getValue();
}-*/;
/**
* Returns the value of the "value" attribute as a number.
*
* @return tried to parse the value as number
*/
public native float getValueAsNumber()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getValue();
}-*/;
/**
* Returns the width and height of the viewport.
*
* @return the viewport's Size
*/
public native Size getViewSize()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var sizeJS = elem.getViewSize();
return @com.ait.toolkit.sencha.shared.client.core.Size::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(sizeJS);
}-*/;
/**
* Returns the offset width of the element.
*
* @return the elements width
*/
public native int getWidth()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getWidth();
}-*/;
/**
* Returns the offset width of the element.
*
* @param contentWidth
* true to get the width minus borders and padding
* @return the elemetns width
*/
public native int getWidth( boolean contentWidth )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getWidth(contentWidth);
}-*/;
/**
* Gets the current X position of the element based on page coordinates.
* Element must be part of the DOM tree to have page coordinates
* (display:none or elements not appended return false).
*
* @return the X position of the element
*/
public native int getX()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getX();
}-*/;
/**
* Gets the current position of the element based on page coordinates.
* Element must be part of the DOM tree to have page coordinates
* (display:none or elements not appended return false).
*
* @return the XY position of the element
*/
public native int[] getXY() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var arrJS = elem.getXY();
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)(arrJS);
}-*/;
/**
* Gets the current Y position of the element based on page coordinates.
* Element must be part of the DOM tree to have page coordinates
* (display:none or elements not appended return false).
*
* @return the Y position of the element
*/
public native int getY()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.getY();
}-*/;
/**
* Checks if the specified CSS class exists on this element's DOM node.
*
* @param className
* the CSS class to check for
* @return true if the class exists, else false
*/
public native boolean hasClass( String className )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.hasCls(className);
}-*/;
// todo initDD, initDDProxy, initDDTarget
/**
* Inserts this element after the passed element in the DOM.
*
* @param el
* the element to insert after
* @return this
*/
public native ExtElement insertAfter( Element el )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.insertAfter(el);
return this;
}-*/;
/**
* Inserts this element before the passed element in the DOM.
*
* @param el
* the element to insert before
* @return this
*/
public native ExtElement insertBefore( Element el )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.insertBefore(el);
return this;
}-*/;
/**
* Inserts an element as the first child of the this element.
*
* @param el
* the element to insert
* @return this
*/
public native ExtElement insertFirst( Element el )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.insertFirst(el);
return this;
}-*/;
/**
* Creates an element as the first child of the this element.
*
* @param config
* DomHelper config to create element
* @return the new child i
*/
public native ExtElement insertFirst( DomConfig config )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
var el = elem.insertFirst(configJS);
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(el);
}-*/;
/**
* Inserts an html fragment into this element.
*
* @param html
* the html fragment
* @return the inserted node (or nearest related if more than 1 inserted)
*/
public native Element insertHtmlBeforeBegin( String html )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.insertHtml('beforeBegin', html, true);
}-*/;
/**
* Inserts an html fragment into this element.
*
* @param html
* the html fragment
* @return the inserted node (or nearest related if more than 1 inserted)
*/
public native Element insertHtmlAfterBegin( String html )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.insertHtml('afterBegin', html, true);
}-*/;
/**
* Inserts an html fragment into this element.
*
* @param html
* the html fragment
* @return the inserted node (or nearest related if more than 1 inserted)
*/
public native Element insertHtmlBeforeEnd( String html )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.insertHtml('beforeEnd', html, true);
}-*/;
/**
* Inserts an html fragment into this element.
*
* @param html
* the html fragment
* @return the inserted node (or nearest related if more than 1 inserted)
*/
public native Element insertHtmlAfterEnd( String html )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.insertHtml('afterEnd', html, true);
}-*/;
/**
* Inserts the passed element as a sibling of this element.
*
* @param el
* the element to insert
* @return the inserted element
*/
public native Element insertSibling( Element el )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.insertSibling(el, 'before', true);
}-*/;
/**
* Inserts the passed element as a sibling of this element.
*
* @param el
* the element to insert
* @param before
* insert before or after
* @return the inserted element
*/
public native ExtElement insertSibling( Element el, boolean before )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var where = before ? 'before' : 'after';
return elem.insertSibling(el, where, true);
}-*/;
/**
* Created the passed DomHelper config as a sibling of this element.
*
* @param config
* the DomHelper config
* @return the inserted element
*/
public native Element insertSibling( DomConfig config )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
return elem.insertSibling(configJS, 'before', true);
}-*/;
/**
* Created the passed DomHelper config as a sibling of this element.
*
* @param config
* the DomHelper config
* @param before
* to insert before or after
* @return the inserted element
*/
public native ExtElement insertSibling( DomConfig config, boolean before )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var configJS = config.@com.ait.toolkit.sencha.shared.client.dom.DomConfig::getJsObject()();
var where = before ? 'before' : 'after';
elem.insertSibling(configJS, where);
return this;
}-*/;
/**
* Returns true if this element matches the passed simple selector (e.g.
* div.some-class or span:first-child)
*
* @param selector
* the simple selector to test
* @return true if this element matches the selector, else false
*/
public native boolean is( String selector )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.is(selector);
}-*/;
/**
* Tests various css rules/browsers to determine if this element uses a
* border box
*
* @return true is element uses border box
*/
public native boolean isBorderBox()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.isBorderBox();
}-*/;
/**
* Returns true if display is not "none".
*
* @return true if display is not "none"
*/
public native boolean isDisplayed()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.isDisplayed();
}-*/;
/**
* Returns true if this element is masked.
*
* @return true if this element is masked
*/
public native boolean isMasked()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.isMasked();
}-*/;
/**
* Returns true if this element is scrollable.
*
* @return true if this element is scrollable
*/
public native boolean isScrollable()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.isScrollable();
}-*/;
/**
* Checks whether the element is currently visible using both visibility and
* display properties.
*
* @return true if visible
*/
public native boolean isVisible()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.isVisible();
}-*/;
/**
* Checks whether the element is currently visible using both visibility and
* display properties.
*
* @param deep
* true to walk the dom and see if parent elements are hidden
* (defaults to false)
* @return true if visible
*/
public native boolean isVisible( boolean deep )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.isVisible(deep);
}-*/;
/**
* Puts a mask over this element to disable user interaction. This method
* can only be applied to elements which accept child nodes.
*
* @return the mask element
*/
public native ExtElement mask()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var me = elem.mask();
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(me);
}-*/;
/**
* Puts a mask over this element to disable user interaction. This method
* can only be applied to elements which accept child nodes. By default an
* animated loading icon is added.
*
* @param msg
* a message to display in the mask
* @return the mask element
*/
public ExtElement mask( String msg ) {
// by default add animated icon
return mask( msg, "x-mask-loading" );
}
/**
* Puts a mask over this element to disable user interaction. This method
* can only be applied to elements which accept child nodes. By default an
* animated loading icon is added.
*
* @param msg
* a message to display in the mask
* @param animatedIcon
* true to add animated loading icon, false to skip
* @return the mask element
*/
public ExtElement mask( String msg, boolean animatedIcon ) {
if( animatedIcon ) {
return mask( msg, "x-mask-loading" );
} else {
return mask( msg, null );
}
}
/**
* Puts a mask over this element to disable user interaction. This method
* can only be applied to elements which accept child nodes.
*
* @param msg
* a message to display in the mask
* @param msgClass
* a css class to apply to the msg element
* @return the mask element
*/
public native ExtElement mask( String msg, String msgClass ) /*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var me = el.mask(msg, msgClass);
return @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(me);
}-*/;
/**
* Initializes positioning on this element. The element will be positioned
* relative IF it is not already positioned
*/
public native void position()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.position();
}-*/;
/**
* Initializes positioning on this element. The element will be positioned
* relative IF it is not already positioned
*/
public native void position( String position )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.position(position);
}-*/;
/**
* Initializes positioning on this element. The element will be positioned
* relative IF it is not already positioned
*/
public native void position( String position, double zIndex )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.position(position.zIndex);
}-*/;
/**
* Initializes positioning on this element. The element will be positioned
* relative IF it is not already positioned
*/
public native void position( String position, double zIndex, double x,
double y )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.position(position.zIndex, x, y);
}-*/;
/**
* Fades the element out while slowly expanding it in all directions. When
* the effect is completed, the element will be hidden (visibility =
* 'hidden') but block elements will still take up space in the document.
*/
public native ExtElement puff()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.puff();
return this;
}-*/;
/**
* Fades the element out while slowly expanding it in all directions. When
* the effect is completed, the element will be hidden (visibility =
* 'hidden') but block elements will still take up space in the document.
*/
public native ExtElement puff( FadeOut config )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.puff(config.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Selects child nodes based on the passed CSS selector (the selector should
* not contain an id).
*
* @param selector
* the CSS selector
* @return an array of the matched nodes
*/
public native Element[] query( String selector )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var elemsJS = elem.query(selector);
return elemsJS == null || elemsJS === undefined
? null
: @com.ait.toolkit.core.client.JsoHelper::toElementArray(Lcom/google/gwt/core/client/JavaScriptObject;)(elemsJS);
}-*/;
/**
* Removes this element's dom reference. Note that event and cache removal
* is handled at Ext.removeNode
*/
public native void remove()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.remove();
}-*/;
/**
* Removes all previous added listeners from this element
*/
public native void removeAllListeners()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.removeAllListeners();
}-*/;
/**
* Replaces the passed element with this element.
*
* @param el
* the element to replace
* @return this
*/
public native ExtElement replace( Element el )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.replace(el);
return this;
}-*/;
/**
* Scrolls this element into view within the passed container.
*
* @return this
*/
public native ExtElement scrollIntoView()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.scrollIntoView();
return this;
}-*/;
/**
* Scrolls this element into view within the passed container
*
* @param container
* the container element to scroll (defaults to document.body)
* @param hscroll
* false to disable horizontal scroll (defaults to true)
* @return this
*/
public native ExtElement scrollIntoView( Element container, boolean hscroll )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.scrollIntoView(container, hscroll);
return this;
}-*/;
/**
* Creates a CompositeElement for child nodes based on the passed CSS
* selector (the selector should not contain an id).
*
* @param selector
* the CSS selector
* @return the CompositeElement
*/
public native CompositeElement select( String selector )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var ceJS = elem.select(selector);
return ceJS == null || ceJS === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.CompositeElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(ceJS);
}-*/;
/**
* Creates a CompositeElement for child nodes based on the passed CSS
* selector (the selector should not contain an id).
*
* @param selector
* the CSS selector
* @param unique
* true to create a unique ExtElement for each child (defaults to
* false, which creates a single shared flyweight object)
* @return the CompositeElement
*/
public native CompositeElement select( String selector, boolean unique )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var ceJS = elem.select(selector, unique);
if (unique) {
return ceJS == null || ceJS === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.CompositeElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(ceJS);
} else {
return ceJS == null || ceJS === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.CompositeElementLite::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(ceJS);
}
}-*/;
/**
* Translates the passed page coordinates into left/top css values for this
* element
*
* @param x
* the page x
* @param y
* the page y
* @return array of left, top values
*/
public native int[] translatePoints( int x, int y )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var leftTopJS = elem.translatePoints(x, y);
return @com.ait.toolkit.core.client.JsoHelper::convertToJavaIntArray(Lcom/google/gwt/core/client/JavaScriptObject;)([leftTopJS.left, leftTopJS.top]);
}-*/;
/**
* Return clipping (overflow) to original clipping before clip() was called.
*
* @return this
*/
public native ExtElement unclip() /*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.unclip();
return this;
}-*/;
/**
* Removes a previously applied mask. If removeEl is true the mask overlay
* is destroyed, otherwise it is cached for reuse.
*/
public native void unmask() /*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.unmask();
}-*/;
/**
* Update the innerHTML of this element, optionally searching for and
* processing scripts.
*
* @param html
* the new HTML
* @param loadScripts
* true to look for and process scripts
* @param callback
* for async script loading you can be notified when the update
* completes
*/
public native void update( String html, boolean loadScripts,
Function callback ) /*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.update(html, loadScripts, callback == null ? null : function() {
callback.@com.ait.toolkit.core.client.Function::execute()();
});
}-*/;
/**
* Update the innerHTML of this element, optionally searching for and
* processing scripts.
*
* @param html
* the new HTML
* @param loadScripts
* true to look for and process scripts
* @param callback
* for async script loading you can be notified when the update
* completes
*/
public native void update( String html ) /*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.update(html);
}-*/;
/**
* Walks up the dom looking for a parent node that matches the passed simple
* selector (e.g. div.some-class or span:first-child). The max depth to
* search defaults to 10 or document.body. This is a shortcut for
* findParentNode() that always returns an ExtElement
*
* @param selector
* the simple selector to test
* @return the matching DOM or null if no match was found
*/
public native ExtElement up( String selector ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var el = elem.up(selector);
return el == null || el === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(el);
}-*/;
/**
* Walks up the dom looking for a parent node that matches the passed simple
* selector (e.g. div.some-class or span:first-child). This is a shortcut
* for findParentNode() that always returns an ExtElement
*
* @param selector
* the simple selector to test
* @param container
* the container to stop at
* @return the matching DOM or null if no match was found
*/
public native ExtElement up( String selector, Element container ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var el = elem.up(selector, container);
return el == null || el === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(el);
}-*/;
/**
* Walks up the dom looking for a parent node that matches the passed simple
* selector (e.g. div.some-class or span:first-child). This is a shortcut
* for findParentNode() that always returns an ExtElement
*
* @param selector
* the simple selector to test
* @param maxDepth
* The max depth to search (defaults to 10 || document.body)
* @return the matching DOM or null if no match was found
*/
public native ExtElement up( String selector, int maxDepth ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
var el = elem.up(selector, maxDepth);
return el == null || el === undefined
? null
: @com.ait.toolkit.sencha.shared.client.dom.ExtElement::instance(Lcom/google/gwt/core/client/JavaScriptObject;)(el);
}-*/;
/**
* Return the first child of this element.
*
* @return the first child
*/
public native Element getFirstChild() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.dom.firstChild;
}-*/;
/**
* Return the parent node of this element,
*
* @return the parent node
*/
public native Element getParentNode() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.dom.parentNode;
}-*/;
/**
* Remove the specified child.
*
* @param child
* the child
*/
public native void removeChild( Element child ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.dom.removeChild(child);
}-*/;
/**
* Return the client width of the element.
*
* @return the client width
*/
public native int getClientWidth() /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
return elem.dom.clientWidth;
}-*/;
/**
* Set the scroll top position.
*
* @param scrollTop
* the scroll top position
*/
public native void setScrollTop( int scrollTop ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.dom.scrollTop = scrollTop;
}-*/;
/**
* More flexible version of {@link #setStyle} for setting style properties.
*
* @param style
* a style specification string, e.g. "width:100px"
* @return this
*/
public native ExtElement applyStyles( String style ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.applyStyles(style);
return this;
}-*/;
/**
* Wrapper for setting style properties.
*
* @param style
* the style property to be set
* @param value
* the value to apply to the given property
* @return this
*/
public native ExtElement setStyle( String style, String value )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setStyle(style, value);
return this;
}-*/;
public native ExtElement setStyle( StyleConfig style )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem
.setStyle(style.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setWidth( String value )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setWidth(value);
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setWidth( String value, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setWidth(value, animate);
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setWidth( String value, Animation animation )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setWidth(value,
animation.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setWidth( double value )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setWidth(value);
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setWidth( double value, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setWidth(value, animate);
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setWidth( double value, Animation animation )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setWidth(value,
animation.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Set the height of this Element.
*
* @return this
*/
public native ExtElement setHeight( String value )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setHeight(value);
return this;
}-*/;
/**
* Set the width of this Element.
*
* @return this
*/
public native ExtElement setHeight( String value, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setHeight(value, animate);
return this;
}-*/;
/**
* Set the Height of this Element.
*
* @return this
*/
public native ExtElement setHeight( String value, Animation animation )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setHeight(value,
animation.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Set the Height of this Element.
*
* @return this
*/
public native ExtElement setHeight( double value )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setHeight(value);
return this;
}-*/;
/**
* Set the Height of this Element.
*
* @return this
*/
public native ExtElement setHeight( double value, boolean animate )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setHeight(value, animate);
return this;
}-*/;
/**
* Set the Height of this Element.
*
* @return this
*/
public native ExtElement setHeight( double value, Animation animation )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setHeight(value,
animation.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Set the size of this Element.
*
* @return this
*/
public native ExtElement setSize( double width, double height,
Animation animation )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setSize(width, height,
animation.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
/**
* Set the size of this Element.
*
* @return this
*/
public native ExtElement setSize( double width, double height )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.setSize(width, height);
return this;
}-*/;
/**
* Highlights the Element by setting a color (applies to the
* background-color by default, but can be changed using the "attr" config
* option) and then fading back to the original color. If no original color
* is available, you should provide the "endColor" config option which will
* be cleared after the animation.
*
* @return this
*/
public native ExtElement highlight()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.highlight();
return this;
}-*/;
public native void disableShadow()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
if (elem.disableShadow) {
elem.disableShadow();
}
//diable isn't working entirely (e.g. for last shown window) so create shadow backup and replace shadow by null
elem._shadow = el.shadow;
elem.shadow = null;
}-*/;
public native void enableShadow()/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
if (elem.disableShadow) {
elem.shadow = elem._shadow;
elem.enableShadow();
}
}-*/;
/**
* Highlights the Element by setting a color (applies to the
* background-color by default, but can be changed using the "attr" config
* option) and then fading back to the original color. If no original color
* is available, you should provide the "endColor" config option which will
* be cleared after the animation.
*
* @return this
*/
public native ExtElement highlight( String color )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.highlight(color);
return this;
}-*/;
/**
* Highlights the Element by setting a color (applies to the
* background-color by default, but can be changed using the "attr" config
* option) and then fading back to the original color. If no original color
* is available, you should provide the "endColor" config option which will
* be cleared after the animation.
*
* @return this
*/
public native ExtElement highlight( String color, HighLight config )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.highlight(color,
config.@com.ait.toolkit.core.client.JsObject::getJsObj()());
return this;
}-*/;
// Events
/**
* Where supported. Fires when an element is activated, for instance,
* through a mouse click or a keypress.
*/
public ElementHandlerRegistration addDomActivateHandler( EventHandler handler ) {
return addHandler( "DOMActive", handler );
}
/**
* Where supported. Fires when an attribute has been modified.
*/
public ElementHandlerRegistration addDomAttrModifiedHandler(
EventHandler handler ) {
return addHandler( "DOMAttrModified", handler );
}
/**
* Where supported. Fires when the character data has been modified.
*/
public ElementHandlerRegistration addDomCharacterDataModifiedHandler(
EventHandler handler ) {
return addHandler( "DOMCharacterDataModified", handler );
}
/**
* Where supported. Similar to HTML focus event, but can be applied to any
* focusable element.
*/
public ElementHandlerRegistration addDomFocusInHandler( EventHandler handler ) {
return addHandler( "DOMFocusIn", handler );
}
/**
* Fires when an object/image is stopped from loading before completely
* loaded.
*/
public ElementHandlerRegistration addAbortHandler( EventHandler handler ) {
return addHandler( "abort", handler );
}
/**
* Fires when an element loses focus either via the pointing device or by
* tabbing navigation.
*/
public ElementHandlerRegistration addBlurHandler( EventHandler handler ) {
return addHandler( "blur", handler );
}
/**
* Fires when a control loses the input focus and its value has been
* modified since gaining focus.
*/
public ElementHandlerRegistration addChangeHandler( EventHandler handler ) {
return addHandler( "change", handler );
}
/**
* Fires when a mouse click is detected within the element.
*/
public ElementHandlerRegistration addClickHandler( EventHandler handler ) {
return addHandler( "click", handler );
}
/**
* Fires when a right click is detected within the element.
*/
public ElementHandlerRegistration addContextMenuHandler( EventHandler handler ) {
return addHandler( "contextmenu", handler );
}
/**
* Fires when a mouse double click is detected within the element.
*/
public ElementHandlerRegistration addDoubleClickHandler( EventHandler handler ) {
return addHandler( "dblclick", handler );
}
/**
* Fires when an object/image/frame cannot be loaded properly.
*/
public ElementHandlerRegistration addErrorHandler( EventHandler handler ) {
return addHandler( "error", handler );
}
/**
* Fires when an element receives focus either via the pointing device or by
* tab navigation.
*/
public ElementHandlerRegistration addFocusHandler( EventHandler handler ) {
return addHandler( "focus", handler );
}
/**
* Fires when a keydown is detected within the element.
*/
public ElementHandlerRegistration addKeyDownHandler( EventHandler handler ) {
return addHandler( "keydown", handler );
}
/**
* Fires when a keypress is detected within the element.
*/
public ElementHandlerRegistration addKeyPressHandler( EventHandler handler ) {
return addHandler( "keypress", handler );
}
/**
* Fires when a keyup is detected within the element.
*/
public ElementHandlerRegistration addKeyUpHandler( EventHandler handler ) {
return addHandler( "keyup", handler );
}
/**
* Fires when the user agent finishes loading all content within the
* element. Only supported by window, frames, objects and images.
*/
public ElementHandlerRegistration addLoadHandler( EventHandler handler ) {
return addHandler( "load", handler );
}
/**
* Fires when a mousedown is detected within the element.
*/
public ElementHandlerRegistration addMouseDownHandler( EventHandler handler ) {
return addHandler( "mousedown", handler );
}
/**
* Fires when a mouseenter is detected within the element.
*/
public ElementHandlerRegistration addMouseEnterHandler( EventHandler handler ) {
return addHandler( "mouseenter", handler );
}
public ElementHandlerRegistration addMouseLeaveHandler( EventHandler handler ) {
return addHandler( "mouseleave", handler );
}
public ElementHandlerRegistration addMouseMoveHandler( EventHandler handler ) {
return addHandler( "mousemove", handler );
}
public ElementHandlerRegistration addMouseOverHandler( EventHandler handler ) {
return addHandler( "mouseover", handler );
}
public ElementHandlerRegistration addMouseOutHandler( EventHandler handler ) {
return addHandler( "mouseout", handler );
}
public ElementHandlerRegistration addMouseUpHandler( EventHandler handler ) {
return addHandler( "mouseup", handler );
}
public ElementHandlerRegistration addResetHandler( EventHandler handler ) {
return addHandler( "reset", handler );
}
public ElementHandlerRegistration addResizeHandler( EventHandler handler ) {
return addHandler( "resize", handler );
}
public ElementHandlerRegistration addScrollHandler( EventHandler handler ) {
return addHandler( "scroll", handler );
}
public ElementHandlerRegistration addSelectHandler( EventHandler handler ) {
return addHandler( "select", handler );
}
public ElementHandlerRegistration addSubmitHandler( EventHandler handler ) {
return addHandler( "submit", handler );
}
public ElementHandlerRegistration addUnload( EventHandler handler ) {
return addHandler( "unload", handler );
}
public native ElementHandlerRegistration addHandler( String event,
EventHandler handler )/*-{
var component = this.@com.ait.toolkit.sencha.shared.client.dom.ExtElement::getJsObj()();
var fn = function(event, el) {
var eventObject = @com.ait.toolkit.sencha.shared.client.core.EventObject::new(Lcom/google/gwt/core/client/JavaScriptObject;)(event);
handler.@com.ait.toolkit.sencha.shared.client.core.handlers.EventHandler::onEvent(Lcom/ait/toolkit/sencha/shared/client/core/EventObject;Lcom/google/gwt/dom/client/Element;)(eventObject,el);
};
component.addListener(event, fn);
var toReturn = @com.ait.toolkit.sencha.shared.client.core.handlers.ElementHandlerRegistration::new(Lcom/ait/toolkit/sencha/shared/client/dom/ExtElement;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(this,event,fn);
return toReturn;
}-*/;
public void on( String event, Function handler ) {
this.addListener( event, handler );
}
public void on( String event, ElementEventHandler handler ) {
this.addListener( event, handler );
}
public native void addListener( String event, Function handler )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
if (elem.addListener) {
elem.addListener(event, function(e) {
handler.@com.ait.toolkit.core.client.Function::execute()();
});
}
}-*/;
public native void addListener( String event, ElementEventHandler handler )/*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
if (elem.addListener) {
elem
.addListener(
event,
function(e) {
var event = @com.ait.toolkit.sencha.shared.client.core.EventObject::new(Lcom/google/gwt/core/client/JavaScriptObject;)(e);
handler.@com.ait.toolkit.sencha.shared.client.core.handlers.ElementEventHandler::onEvent(Lcom/ait/toolkit/sencha/shared/client/core/EventObject;)(event);
});
}
}-*/;
public native void set( ElementAttribute attr )/*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.set(attr.@com.ait.toolkit.core.client.JsObject::getJsObj()());
}-*/;
public void set( String attribute, String value ) {
ElementAttribute attr = new ElementAttribute();
attr.setAttribute( attribute, value );
set( attr );
}
public native void setValue( String newValue )/*-{
var el = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
el.set({
value : newValue
});
}-*/;
private native JavaScriptObject create( Element elem, boolean forceNew )/*-{
return new $wnd.Ext.Element(elem, forceNew);
}-*/;
private static ExtElement instance( JavaScriptObject jsObj ) {
return new ExtElement( jsObj );
}
private native ExtElement _addCls( JsArrayString value ) /*-{
var elem = this.@com.ait.toolkit.core.client.JsObject::getJsObj()();
elem.addClass(value);
return this;
}-*/;
}