Package org.sgx.yuigwt.galleryexplorer.client.ui

Source Code of org.sgx.yuigwt.galleryexplorer.client.ui.GalleryUtil

package org.sgx.yuigwt.galleryexplorer.client.ui;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.sgx.yuigwt.galleryexplorer.client.api.Module;
import org.sgx.yuigwt.galleryexplorer.client.res.TestResources;
import org.sgx.yuigwt.yui.console.Console;
import org.sgx.yuigwt.yui.event.EventCallback;
import org.sgx.yuigwt.yui.io.IO;
import org.sgx.yuigwt.yui.io.IOConfig;
import org.sgx.yuigwt.yui.io.IOEvent;
import org.sgx.yuigwt.yui.io.Response;
import org.sgx.yuigwt.yui.node.Node;
import org.sgx.yuigwt.yui.util.JsObject;
import org.sgx.yuigwt.yui.util.JsUtil;
import org.sgx.yuigwt.yui.yql.YQL;
import org.sgx.yuigwt.yui.yql.YQLCallback;
import org.sgx.yuigwt.yui.yql.YQLResult;
import org.sgx.yuigwt.yuigallery.YuiGalleryContext;

import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.core.client.JsonUtils;
/**
* this class keeps module information in a more java way
* @author sg
*
*/
public class GalleryUtil {
 

  static boolean debug = false;
 
  public static final String[] INITIALMODULES = new String[]{
    "button", "yql", "console", "cssreset", "cssgrids", "node-screen",
    "autocomplete", "autocomplete-filters", "autocomplete-highlighters",
    "stylesheet", "scrollview", "scrollview-scrollbars", "datatable", "tabview"
  };

 
 
  private Console console;
 
  Map<String, Module> modulesByName;
  Map<String, JsArray<Module>> modulesByTag;
  Map<String, JsArray<Module>> modulesByRequires;
  Set<String>
//  moduleNames,
  moduleTags;
  JsArrayString moduleNamesArr, moduleTagsArr;
  Gallery gallery;

  YuiGalleryContext Y;

  private JsArray<Module> modules;
 
  public GalleryUtil(Gallery gallery){
    this.gallery=gallery;
    this.console=gallery.console;
    this.Y=gallery.Y;
    loadGalleryModulesAndDraw();    
  }

  private void loadGalleryModulesAndDraw() {
   
    //load all gallery modules using datatables.org, this time yui.gallery.all for information about yui gallery modules.
   
    if(!debug) {
    String query2 = "select * from yui.gallery.all";
    YQLCallback yqlCallback2 = new YQLCallback() {     
      @Override
      public void call(YQLResult r) {
        JsObject o = r.query().results().objGetObj("json"); //type, count, modules, }
        JsArray<Module> modules = o.objGetObj("modules").cast();
        loadModules(modules);
        gallery.render();   
      }
    };
    JsObject yqlParams2 = JsObject.one("env", "http://datatables.org/alltables.env");  
    yqlParams2.objPut("format", "json");
    YQL yql2 = Y.newYQL(query2, yqlCallback2, yqlParams2);
    }
    else {
      //only for devel/testing - load a local copy
      String text = TestResources.instance.data1().getText();
      console.log("data length: "+text.length());
      YQLResult r = JsonUtils.unsafeEval(text);
      JsObject json = r.query().results().objGetObj("json");
      JsArray<Module> data = json.objGetObj("modules").cast();
      loadModules(data);
      gallery.render();  
    }
  }


  public void loadModules(JsArray<Module> modules) {
    console.log("module: "+JsUtil.dumpObj(modules.get(0)));
   
    this.modules=modules;

    modulesByName = new HashMap<String, Module>();
    modulesByTag = new HashMap<String, JsArray<Module>>();
    modulesByRequires = new HashMap<String, JsArray<Module>>();
//    moduleNames=new HashSet<String>();
    moduleTags = new HashSet<String>();
   
    moduleNamesArr = JsArrayString.createArray().cast();
    moduleTagsArr = JsArrayString.createArray().cast();
//    console.log(JsUtil.typeof(modules.get(0)._("tags")));
    for (int i = 0; i < modules.length(); i++) {
      Module module = modules.get(i);
      moduleNamesArr.push(module.module());   
      modulesByName.put(module.module(), module);
      String[] tags = module.tags().split(",");
      for (int j = 0; j < tags.length; j++) {
        moduleTags.add(tags[j]);
     
     
      String[] requires = module.requires().split(",");
      for (int j = 0; j < requires.length; j++) {
        String r = requires[j];
        JsArray<Module> reqs = modulesByRequires.get(r); //
        if(reqs==null) {
          reqs = JsArray.createArray().cast();
          modulesByRequires.put(r, reqs);
        }
        reqs.push(module)
      }
    }
    moduleTagsArr = org.sgx.yuigwt.galleryexplorer.client.util.JsUtil.toJsArrayString(moduleTags);
    console.log(modules.length()+" modules loaded. tags: "+moduleTagsArr.length());
  }

  public Map<String, Module> getModulesByName() {
    return modulesByName;
  }

  public Map<String, JsArray<Module>> getModulesByTag() {
    return modulesByTag;
  }

  public JsArrayString getModuleNames() {
    return moduleNamesArr;
  }

  public JsArrayString getModuleTags() {
    return moduleTagsArr;
  }

  public JsArray<Module> getModules() {
    return modules;
  }

//  public void setConsole(Console console) {
//    this.console=console;
//  }
 
 
 
}
TOP

Related Classes of org.sgx.yuigwt.galleryexplorer.client.ui.GalleryUtil

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.