搜索墙首页  编程技术  java  asp  ajax  php  c/c#/c++  数据库  oracle  mysql  db2  操作系统  windows  linux  股吧
首页 > 编程 > ajax > GWT
 1         
1楼  dengyin2000 2007-03-21

本文参考:http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/7ed0d179b89fa062/aaeb5391a760adef?lnk=gst&q=indicator+AsyncCallback&rnum=1#aaeb5391a760adef

大部分代码也是参考文中的。

package com.javaeye.dengyin2000.truck.client.server;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;

public abstract class AsyncCallbackWithStatus implements AsyncCallback {
	private static LoadingIndicator loadingIndicator;

	public static final void setLoadingIndicator(LoadingIndicator indicator) {
		loadingIndicator = indicator;
	}

	public AsyncCallbackWithStatus() {
		setLoading(true);
	}

	public final void onSuccess(Object object) {
		setLoading(false);
		onSuccessInternal(object);
	}

	public final void onFailure(Throwable throwable) {
		setLoading(false);
		onFailureInternal(throwable);
	}

	protected abstract void onSuccessInternal(Object object);

	protected void onFailureInternal(Throwable throwable){
		Window.alert("服务器没有响应,请稍后再试!");
	}

	private void setLoading(boolean isLoading) {
		if (null != loadingIndicator) {
			if (isLoading) {
				loadingIndicator.show();
			} else {
				loadingIndicator.hide();
			}
		}
	}

	interface LoadingIndicator {
		void show();

		void hide();
	}

}


package com.javaeye.dengyin2000.truck.client.server;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.WindowResizeListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.PopupPanel;
import com.javaeye.dengyin2000.truck.client.server.AsyncCallbackWithStatus.LoadingIndicator;

public class LoadingStatus implements LoadingIndicator, WindowResizeListener {
    private PopupPanel popup;

    public LoadingStatus() {
        popup = new PopupPanel();
        popup.add(new HTML("<div style='background-color: red;'> Loading, please wait...</div>"));
        placeIndicator();
        Window.addWindowResizeListener(this);
        // set the style name for greater control over the
    }

    public void show() {
        popup.show(); 
    }

    public void hide() {
        popup.hide();
    }

    private void placeIndicator(){
    	popup.setPopupPosition(Window.getClientWidth() - 120, 10);
    }
    
    public void onWindowResized(int width, int height) {
    	 placeIndicator();
    } 

}


在你的EntryPoint中装配好你的indicator

	private void prepareLoadingIndicator(){
		LoadingStatus status = new LoadingStatus();
		AsyncCallbackWithStatus.setLoadingIndicator(status);
	}


这样调用。

	private void populateAndReadEnterprisesInfo(){
		GWTRPCServiceLocator.getUserService().getEnterprisesInfo(new AsyncCallbackWithStatus(){

			protected void onSuccessInternal(Object object) {
				EnterprisesInfoGTO gto = (EnterprisesInfoGTO) object;
				enterpriseName.setText(gto.getEnterprisesName());
				contactName.setText(gto.getContactName());
				contactTel.setText(gto.getContactTel());
				contactFax.setText(gto.getContactFax());
				contactAddress.setText(gto.getContactAddress());
				zipCode.setText(gto.getZipCode());
				email.setText(gto.getEmail());
				siteAddress.setText(gto.getSiteAddress());
			}
			
		});
	}
 1         
您的发言将按有关规定都会存档,您须为所发表后果负责,请您遵纪守法并注意语言文明。
标题:GWT的loadingindicator(装载指示器)
热门关注
标题回复点击
用EXT-GWT(GXT)做了个项目,来谈谈感受76278
Gwt延迟绑定介绍16140
关于给gwt初学者的建议和忠告21133
gwt怎么做多页面10126
gwtspring完美整合12124
Gwt第三方组件、框架介绍16123
使用GWT开发大型的企业管理类型的项目碰到的问题7123
gwt开发工具GWTDesigner4110
GWTObjectExporter,GWT模块间传递对象24107
解决gwt性能问题698
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源