Package org.sgx.yuigwt.yui.util

Source Code of org.sgx.yuigwt.yui.util.JsUtil

package org.sgx.yuigwt.yui.util;

import java.util.Arrays;
import java.util.Date;
import java.util.Map;

//import org.sgx.raphael4gwt.raphael.base.CSSRule;
//import org.sgx.raphael4gwt.raphael.svg.filter.FilterOperation;
//import org.sgx.raphael4gwt.raphael.util.Util;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayMixed;
import com.google.gwt.core.client.JsArrayNumber;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.core.client.JsDate;
import com.google.gwt.dom.client.NativeEvent;
/**
* javascript related utilities
* @author sg
*
*/
public class JsUtil {
  /**
   * usefull for setting breakpoints in firebug from java.
   */
  public static native void firebug()/*-{
    $wnd.r4g._firebug();
  }-*/;

  public static native <T> T get(JavaScriptObject o, Object p)/*-{
    return o[p];
  }-*/;

  public static native String getString(JavaScriptObject o, String s)/*-{
    return o[s];
  }-*/;

  public static native int getInt(JavaScriptObject o, String s)/*-{
    return o[s];
  }-*/;

 
//  public static native JavaScriptObject put(JavaScriptObject o, Object pname, Object val)/*-{
//    o[pname]=val;
//    return o;
//  }-*/;
  public static native JavaScriptObject put(JavaScriptObject o, Object pname, String val)/*-{
    o[pname]=val;
    return o;
  }-*/;
  public static native JavaScriptObject put(JavaScriptObject o, Object pname, int val)/*-{
    o[pname]=val;
    return o;
  }-*/;
  public static native JavaScriptObject put(JavaScriptObject o, Object pname, double val)/*-{
    o[pname]=val;
    return o;
  }-*/;
  public static native JavaScriptObject put(JavaScriptObject o, Object pname, boolean val)/*-{
  o[pname]=val;
  return o;
}-*/;
  public static native JsArrayString props(JavaScriptObject o)/*-{
    var props = [];
    for(var i in o) {
      props.push(i+"");;
    }
    return props;
  }-*/;
  public static native JavaScriptObject empty()/*-{
    return {};
  }-*/;
 
//  public static  JavaScriptObject obj(Map<String, Object> props) {
//    JavaScriptObject o = empty();
//    for(String k : props.keySet()) {
//      Object val = props.get(k);
//      put(o, k, val);
//    }
//    return o;
//  }
//  public static JavaScriptObject obj(Object...m) {
//    return obj(Util.toMap2(m));
//  }
  public static native JavaScriptObject arrayEmpty()/*-{
    return [];
  }-*/;
 
  public static native JavaScriptObject arrayPush(JavaScriptObject arr, JavaScriptObject o)/*-{
    arr.push(o);
    return arr;
  }-*/;

  public static boolean arrayContains(JsArray<JavaScriptObject> a,
      JavaScriptObject val) {
    for (int i = 0; i < a.length(); i++) {
      JavaScriptObject o = a.get(i);
      if(o!=null&&o.equals(val))
        return true;
    }
    return false;
  }
 
  public static boolean arrayContains(JsArrayMixed a, String val) {
    for (int i = 0; i < a.length(); i++) {
      String o = a.getString(i);
      if(o!=null&&o.equals(val))
        return true;
    }
    return false;
  }
 
  public static boolean arrayContains(JsArrayString a,
      String val) {
    for (int i = 0; i < a.length(); i++) {
      String o = a.get(i);
      if(o!=null&&o.equals(val))
        return true;
    }
    return false;
  }
  public static boolean arrayContains(JsArrayNumber a,
      String val) {
    for (int i = 0; i < a.length(); i++) {
      Number o = a.get(i);
      if(o!=null&&o.equals(val))
        return true;
    }
    return false;
  }
  public static JsArrayNumber toJsArrayNumber(int[] a) {
    JsArrayNumber jsa = (JsArrayNumber) JsArrayNumber.createArray();
    for (int i = 0; i < a.length; i++) {
      jsa.push(a[i]);
    }
    return jsa;
  }
//  public static JsArrayMixed toJsArrayJavaObject(Object[] a) {
//    JsArrayMixed jsa = (JsArrayMixed) JSArr.createArray();
//    for (int i = 0; i < a.length; i++) {
//      jsa.push((JavaScriptObject) a[i]);
//    }
//    return jsa;
//  }
 
  public static JsArrayNumber toJsArray(double[]a) {
    if(a==null)
      return null;
    JsArrayNumber jsa = (JsArrayNumber) JsArrayNumber.createArray();
    for (int i = 0; i < a.length; i++) {
      jsa.push(a[i]);
    }
    return jsa;
  }
  public static JsArrayString toJsArray(String[] a) {
    if(a==null)
      return null;
    JsArrayString jsa = JsArrayNumber.createArray().<JsArrayString>cast();
    for (int i = 0; i < a.length; i++) {
      jsa.push(a[i]);
    }
    return jsa;
  }
  public static JsArrayString toJsArrayString(Object[] a) {
    if(a==null)
      return null;
    JsArrayString jsa = JsArrayNumber.createArray().<JsArrayString>cast();
    for (int i = 0; i < a.length; i++) {
      jsa.push(a[i]+"");
    }
    return jsa;
  }
  public static JsArray toJsArray(JavaScriptObject[] ja) {
    if(ja==null)
      return null;
    JsArray jsa = (JsArray) JsArray.createArray();
    for(JavaScriptObject t : ja) {
      jsa.push(t);
    }
    return jsa;
  }
//  public static JavaScriptObject toJsObj(Object ... params) {
//    return obj(params);
//  }
// 
  /**
   * builds a javascript native object using indexes  0, 2, 4, 6 as keys and 1, 3, 5, 7 as values.
   * Only values of native types are allowed - string, int, double, boolean.
   * @param ja
   * @return
   */
  public static JavaScriptObject obj(Object ... ja) {
    if(ja==null)
      return null;
    JavaScriptObject jso = JsArray.createObject();
    for (int i = 0; i < ja.length; i+=2) {
      Object val = ja[i+1];
      if(val instanceof Integer)
        put(jso, ja[i], ((Integer)val).intValue());
      else if(val instanceof String)
        put(jso, ja[i], ((String)val));
      else if(val instanceof Double)
        put(jso, ja[i], ((Double)val).doubleValue());
      else if(val instanceof Boolean)
        put(jso, ja[i], ((Boolean)val).booleanValue());
    }
    return jso;
  }
//  public static Object nativeValueOf(Object o) {
//    if(o instanceof Integer)
//      return ((Integer)o).intValue();
//    else
//      return o;
//  }

  public static JsArray to2DJsArray(double[][] ja) {
    JsArray jsa = (JsArray) JsArray.createArray();
    if(ja==null)
      return jsa;
    for (int i = 0; i < ja.length; i++) {
      jsa.push(toJsArray(ja[i]));
    }
    return jsa;
  }
  public static JsArray to2DJsArray(String[][] ja) {
    JsArray jsa = (JsArray) JsArray.createArray();
    if(ja==null)
      return jsa;
    for (int i = 0; i < ja.length; i++) {
      jsa.push(toJsArray(ja[i]));
    }
    return jsa;
  }
  public final native static void putBoolean(JavaScriptObject o, String prop,
      boolean b)/*-{
    if(b) {
//      $wnd.alert("putBoolean: "+prop+" - true");
      o[prop]=true;
    }
    else {
//      $wnd.alert("putBoolean: "+prop+" - false");
      o[prop]=false;
    }
   
  }-*/;
  public final native static void putNumber(JavaScriptObject o, String prop,
      double v) /*-{
    o[prop]=v;
  }-*/;


  public static double[] toJavaDoubleArray(JsArrayNumber a) {
    if(a==null)return null;
    double[] dd = new double[a.length()];
    for (int i = 0; i < dd.length; i++) {
      dd[i]=a.get(i);
    }
    return dd;
  }
  public static String[] toJavaStringArray(JsArrayString a) {
    if(a==null)return null;
    String[] dd = new String[a.length()];
    for (int i = 0; i < dd.length; i++) {
      dd[i]=a.get(i);
    }
    return dd;
  }
 
//  public static String dump(JavaScriptObject o) {
//    String s = "(";
////    o.
//    return s+")";
//  }

  public static native JavaScriptObject evalObject(String s)/*-{
    return $wnd.eval("("+s+")");
  }-*/;

  public static String print(JsArrayMixed a) {
    String s = "JSArray[";
    for(int i = 0; i<a.length(); i++) {
      s+=a.getString(i)+", ";
    }
    return s+"]";
  }

  public static String print(NativeEvent e) {
    return "Event "+e.getType()+"("+e.getScreenX()+", "+e.getScreenY()+")";
  }

  public static native final void arrayRemoveItem(JsArray<?> a, int i)/*-{
    a.splice(i, 1)
  }-*/;

  public static native double getDouble(JavaScriptObject o, String p)/*-{
    return o[p];
  }-*/;

  public static native final String dump(JavaScriptObject obj, boolean printValues)/*-{
    var s = "{";
    for(var i in obj) {
      s+=i+(printValues ? ": "+obj[i] : "")+", ";
    }
    return s+"}";
  }-*/;

 
  public static native final JavaScriptObject cloneObject(JavaScriptObject o)/*-{
    var o2 = {};
    for(var i in o) {
      o2[i]=o[i];
    }
    return o2;
  }-*/;
 
  public static native final JavaScriptObject eval(String s)/*-{
    try {
    return $wnd.eval(s);
    }catch(ex) {
      return null;
    }
  }-*/;


  public static native final JsDate toJsDate(Date val) /*-{
      return new $wnd.Date();//val.@java.util.Date::getTime()());
    }-*/;
  public static final String dump(JavaScriptObject obj) {
    return dump(obj, false);
  }
//  public static Object[] arrayRemoveLast(Object[]o) {
//    Object [] ret = new Object[o.length-1];
//    for (int i = 0; i < o.length-1; i++) {
//      ret[i]=o[i];
//    }
//    return ret;
////    return Arrays.copyOf(o, o.length-1);
//  }
//  public static JsArrayString arrayRemoveLast(String[]o) {
////    return Arrays.copyOf(o, o.length-1);  don't work in gwt...
//    Object [] ret = new Object[o.length-1];
//    for (int i = 0; i < o.length-1; i++) {
//      ret[i]=o[i];
//    }
//    return toJsArray()ret;
//  }

  public static native final String typeof(Object o)/*-{
    return (typeof(o));
  }-*/;


TOP

Related Classes of org.sgx.yuigwt.yui.util.JsUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.