All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.lteconsulting.hexa.client.tools.JQuery Maven / Gradle / Ivy

The newest version!
package fr.lteconsulting.hexa.client.tools;

import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.ScriptElement;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.TextResource;
import com.google.gwt.user.client.Event;

public class JQuery
{
	public static abstract class Callback
	{
		public abstract void onFinished();
	}

	public interface EventFunction
	{
		boolean onEvent( Event event );
	}

	protected interface JQueryBundle extends ClientBundle
	{
		@Source( "jqueryjs/jquery-1.4.2.min.js" )
		TextResource JQueryJS();

		@Source( "jqueryjs/jquery-ui-1.8.2.custom.min.js" )
		TextResource JQueryUIJS();
	}

	private static JQueryBundle bundle = null;

	public static void ensureScriptsLoaded()
	{
		if( bundle != null )
			return;

		bundle = GWT.create( JQueryBundle.class );

		Document doc = Document.get();
		ScriptElement sqljs = doc.createScriptElement();
		sqljs.setAttribute( "type", "text/javascript" );
		sqljs.setInnerText( bundle.JQueryJS().getText() );
		doc.getDocumentElement().getFirstChildElement().appendChild( sqljs );

		sqljs = doc.createScriptElement();
		sqljs.setAttribute( "type", "text/javascript" );
		sqljs.setInnerText( bundle.JQueryUIJS().getText() );
		doc.getDocumentElement().getFirstChildElement().appendChild( sqljs );
	}

	private static JQuery INSTANCE = null;

	public static JQuery get()
	{
		if( INSTANCE != null )
			return INSTANCE;

		ensureScriptsLoaded();

		INSTANCE = new JQuery();
		return INSTANCE;
	}

	public native JsArray jqSelect( String selector ) /*-{
																return $wnd.$(selector).get();
																}-*/;

	public native JsArray jqSelect( String selector, Element element ) /*-{
																				return $wnd.$(selector, element).get();
																				}-*/;

	public native JsArray jqChildren( Element e, String selector ) /*-{
																			return $wnd.$(e).children(selector).get();
																			}-*/;

	public native JsArray jqChildren( JsArray e, String selector ) /*-{
																						return $wnd.$(e).children(selector).get();
																						}-*/;

	public native void jqClick( Element element, EventFunction callback ) /*-{
																			$wnd
																			.$(element)
																			.click(
																			function(eventObject) {
																			if (callback != null) {
																			var res = callback.@fr.lteconsulting.hexa.client.tools.JQuery.EventFunction::onEvent(Lcom/google/gwt/user/client/Event;)( eventObject );
																			if (!res)
																			eventObject.preventDefault();
																			}
																			});
																			}-*/;

	public native void jqClick( JsArray element, EventFunction callback ) /*-{
																					$wnd
																					.$(element)
																					.click(
																					function(eventObject) {
																					if (callback != null) {
																					var res = callback.@fr.lteconsulting.hexa.client.tools.JQuery.EventFunction::onEvent(Lcom/google/gwt/user/client/Event;)( eventObject );
																					if (!res)
																					eventObject.preventDefault();
																					}
																					});
																					}-*/;

	public native void jqMouseDown( JsArray element, EventFunction callback ) /*-{
																						$wnd
																						.$(element)
																						.mousedown(
																						function(eventObject) {
																						if (callback != null) {
																						var res = callback.@fr.lteconsulting.hexa.client.tools.JQuery.EventFunction::onEvent(Lcom/google/gwt/user/client/Event;)( eventObject );
																						if (!res)
																						eventObject.preventDefault();
																						}
																						});
																						}-*/;

	public native void jqMouseUp( JsArray element, EventFunction callback ) /*-{
																						$wnd
																						.$(element)
																						.mouseup(
																						function(eventObject) {
																						if (callback != null) {
																						var res = callback.@fr.lteconsulting.hexa.client.tools.JQuery.EventFunction::onEvent(Lcom/google/gwt/user/client/Event;)( eventObject );
																						if (!res)
																						eventObject.preventDefault();
																						}
																						});
																						}-*/;

	public native void jqMouseMove( JsArray element, EventFunction callback ) /*-{
																						$wnd
																						.$(element)
																						.mousemove(
																						function(eventObject) {
																						if (callback != null) {
																						var res = callback.@fr.lteconsulting.hexa.client.tools.JQuery.EventFunction::onEvent(Lcom/google/gwt/user/client/Event;)( eventObject );
																						if (!res)
																						eventObject.preventDefault();
																						}
																						});
																						}-*/;

	public native void jqAppend( JsArray elements, String html ) /*-{
																			//for( e in elements )
																			$wnd.$(elements).append(html);
																			}-*/;

	public native void jqAppend( Element element, String html ) /*-{
																$wnd.$(element).append(html);
																}-*/;

	public native void jqAttr( JsArray elements, String name, String value ) /*-{
																						$wnd.$(elements).attr(name, value);
																						}-*/;

	public void jqEffect( String effect, int ms, Element e, Callback callback )
	{
		// don't know why, highlighting from TreeTableBase::newItem throws an
		// exception
		// on Safari and Chrome when editing a Pricing Scheme
		// (PricingSchemeEditor::schemeTable)
		try
		{
			jqEffectImpl( effect, ms, e, callback );
		}
		catch( Exception exception )
		{
		}
	}

	public native void jqEffectImpl( String effect, int ms, Element e, Callback callback ) /*-{
																							$wnd
																							.$(e)
																							.effect(
																							effect,
																							null,
																							ms,
																							function() {
																							if (callback != null)
																							[email protected]::onFinished()();
																							});
																							}-*/;

	public native void jqFadeIn( Element e, int ms, Callback callback ) /*-{
																		$wnd
																		.$(e)
																		.fadeIn(
																		ms,
																		function() {
																		if (callback != null)
																		[email protected]::onFinished()();
																		});
																		}-*/;

	public native void jqFadeOut( Element e, int ms, Callback callback ) /*-{
																			$wnd
																			.$(e)
																			.fadeOut(
																			ms,
																			function() {
																			if (callback != null)
																			[email protected]::onFinished()();
																			});
																			}-*/;

	public native void jqHide( String effect, Element e, Callback callback ) /*-{
																				$wnd
																				.$(e)
																				.hide(
																				effect,
																				null,
																				1000,
																				function() {
																				if (callback != null)
																				[email protected]::onFinished()();
																				});
																				}-*/;

	public native void jqHide( Element e )
	/*-{
		$wnd.$( e ).hide();
	}-*/;

	public native void jqShow( String effect, Element e ) /*-{
															$wnd.$(e).show(effect, null, 1000);
															}-*/;

	public native void jqShow( Element e )
	/*-{
		$wnd.$( e ).show();
	}-*/;

	public native void jqDatepicker( Element e ) /*-{
													$wnd.$(e).datepicker();
													}-*/;

	// public native void jqHtml( Element e, String html ) /*-{
	// $wnd.$(e).html(html);
	// }-*/;

	public native void jqHtml( JsArray e, String html ) /*-{
																	$wnd.$(e).html(html);
																	}-*/;

	public native void jqText( JsArray e, String text ) /*-{
																	$wnd.$(e).text(text);
																	}-*/;

	public native void jqCss( JsArray e, String property, String value ) /*-{
																					$wnd.$(e).css(property, value);
																					}-*/;

	public native void jqHeight( Element e, String height ) /*-{
															$wnd.$(e).height(height);
															}-*/;

	public native boolean jqHasClass( Element e, String className ) /*-{
																	return $wnd.$(e).hasClass(className);
																	}-*/;

	public native void addClass( Element e, String className ) /*-{
																$wnd.$(e).addClass(className);
																}-*/;

	public native void addClass( JsArray e, String className ) /*-{
																		$wnd.$(e).addClass(className);
																		}-*/;

	public native void removeClass( Element e, String className ) /*-{
																	$wnd.$(e).removeClass(className);
																	}-*/;

	public native void removeClass( JsArray e, String className ) /*-{
																			$wnd.$(e).removeClass(className);
																			}-*/;

	public native void toggleClass( Element e, String className ) /*-{
																	$wnd.$(e).toggleClass(className);
																	}-*/;

	public native void toggleClass( JsArray e, String className ) /*-{
																			$wnd.$(e).toggleClass(className);
																			}-*/;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy