`
ldsjdy
  • 浏览: 151590 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

GWT Loading....

    博客分类:
  • GWT
ui 
阅读更多

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.PopupPanel;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.Label;


/**
 * 
 * @author ldsjdy
 *
 */
public class Loading extends PopupPanel
{
  private static Loading me;

  private List workingObjects = new ArrayList();
  private boolean shown;

  private Loading()
  {
//    super(false, true);
    
    Img img = new Img("loading_smartgwt.gif",30,30);
    Grid grid = new Grid(1,2);	
    grid.setWidget(0, 0, img);
    
    Label label = new Label("Loading........");
    label.setHeight(30);
    grid.setWidget(0, 1, label);
//    grid.setWidget(0, 1, label);
    setWidget(grid);
  }

  public static Loading get()
  {
    if (me == null)
    {
      me = new Loading();
    }

    return me;
  }

  public AsyncCallback startWorking(AsyncCallback callback)
  {
    AsyncCallbackWrapper wrapper = new AsyncCallbackWrapper(callback);
    this.workingObjects.add(wrapper);

    if (!this.shown)
    {
      this.shown = true;
      this.center();
    }

    return wrapper;
  }

  private void endWorking(AsyncCallbackWrapper wrapper)
  {
    this.workingObjects.remove(wrapper);

    if (this.shown && (this.workingObjects.size() <= 0))
    {
      this.shown = false;
      this.setModal(false);
      this.hide();
    }
  }

  private class AsyncCallbackWrapper implements AsyncCallback
  {
    private AsyncCallback callback;

    private AsyncCallbackWrapper(AsyncCallback callback)
    {
      this.callback = callback;
    }

    public void onFailure(Throwable t)
    {
      Loading.get().endWorking(this);
      this.callback.onFailure(t);
    }

    public void onSuccess(Object obj)
    {
      this.callback.onSuccess(obj);
      Loading.get().endWorking(this);
    }
  }
}

1
2
分享到:
评论
1 楼 ldsjdy 2011-09-06  
http://my.oschina.net/jawava/blog/28799

相关推荐

    GWT in Action

    It provides practical examples of loading external configuration data and using GWT to upload files to the server, demonstrating the flexibility of connecting GWT applications to any server-side ...

    SmartGWT2.0 API

    在性能优化方面,SmartGWT 使用了延迟加载(Lazy Loading)和分块加载(Chunk Loading)策略,减少初始页面加载的时间,改善用户体验。特别是处理大数据集时,这些策略可以显著减少网络传输量,避免一次性加载过多...

    angular-loading-bar-0.4.2.zip

    【标题】"Angular Loading Bar 0.4.2" 是一个开源项目的压缩包,它包含了一个用于增强用户体验的加载条组件。这个组件主要用于在AngularJS应用程序中显示数据加载进度,提供用户一个可视化的反馈,让他们知道后台...

    gwt-comet:从 code.google.compgwt-comet 自动导出

    Native Comet implementations specific to browsers removing loading artifacts, reducing latency and bandwidth. Supports string and GWT-serialized messages. Supports deflate compression. Supports ...

    smartGwt 树(tree) 增删改

    对于大数据量的树,可以使用异步加载(lazy loading)来提高性能。只有当用户展开节点时,才请求子节点数据。这需要在DataSource中配置相关行为。 6. **自定义样式**: 你可以通过CSS样式来自定义树节点的外观,...

    jsp树形控件

    许多开源库,如Apache Struts, PrimeFaces, SmartGWT等,提供了预定义的树形组件,可以直接在JSP页面中使用。这些组件通常提供丰富的样式和交互特性,如异步加载、节点拖放等。 ### 4. 示例:使用JavaScript库实现...

    flowlogix:适用于Shiro,PrimeFaces,GWT和Tapestry的Flow Logix JavaEE实用程序库

    使Tapestry可以轻松地与JEE / EJB,GWT,Shiro Security和Glassfish等JEE服务器一起使用。 在Tapestry中编写应用程序时,常见的组件都发痒了,要存放在它自己的库中。 就是这个。 该库是您在开发Tapestry 5应用程序...

    Jetty中文手册

    Jetty Classloading Jetty JARS和依赖(Dependencies) 启动参数(Start Options) Jetty and JEE6 Web Profile 配置参考 Jetty XML语法(Syntax)–Jetty IOC Configuration Jetty XML用法–Using and Combining ...

    LibGDXdev

    1. **后端(Backends)**:LibGDX提供了不同平台的后端支持,如LWJGL( Lightweight Java Game Library)用于桌面应用,Android和iOS的原生后端,以及GWT(Google Web Toolkit)用于Web应用。这使得游戏能够在多种...

    awesome-wasm-langs::smiling_face_with_sunglasses:可以直接在WebAssembly中编译或在VM中使用其VM的语言的精选列表

    - **Module Loading**:如webpack、Rollup、Parcel等构建工具可以管理和加载WASM模块。 - **Debugging**:Chrome DevTools、Firefox Developer Tools以及专用的WASM调试器帮助开发者调试WASM代码。 - **Runtime ...

Global site tag (gtag.js) - Google Analytics