`
vakin.jiang
  • 浏览: 145186 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

GWT1.7做的一个简单的Loading进度条组件(带遮罩层)

阅读更多
很简单的一个东西,直接贴代码!
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.DecoratedPopupPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;

/**
 * 加载页面的进度条。。。
 * @version 1.2 2009-07-31
 */
public class LoadPop {

	private static final DecoratedPopupPanel simplePopup = new DecoratedPopupPanel();
	private static final HTML showText = new HTML();
	private static final String defTxt = "载入中";
	private static final String INDENT = "    "; // 加空格缩进
	private static final String LOAD_SPLIT = ">>"; // 
	private static final HTML waterfall = new HTML();//遮罩层
	
	private static int count = 1;
	private static final Timer timer = new Timer(){

		@Override
		public void run() {
			if((count++)>=10){
				count = 1;
				showText.setHTML(showText.getText().replaceAll(LOAD_SPLIT, ""));
			}			
			showText.setHTML(showText.getText()+ LOAD_SPLIT);
		}};
	
	static {
		simplePopup.setStyleName("LoadingShow");
		simplePopup.setWidget(showText);
	}
	
	public static final void show(){
		show(INDENT + defTxt);
	}
	
	public static final void show(String html){
		initWaterfall();
		showText.setHTML(INDENT + html);
		simplePopup.show();
		simplePopup.setPopupPosition(0, getScrollTop());
		
		timer.scheduleRepeating(500);
	}
	
	public static final void hide(){
		hide(INDENT + "加载成功");
	};
	
	public static final void hide(String html){
		count = 1;
		showText.setHTML(INDENT+ html);
		simplePopup.hide();
		waterfall.setVisible(false);
	}
	
	private static void  initWaterfall(){
		waterfall.setStyleName("PopupPanelEx_Backgroup_div");
		waterfall.setVisible(true);
		waterfall.setSize(getMaxWidth() + "px", getMaxHeight()+ "px");
		

		Window.addResizeHandler(new ResizeHandler(){
			@Override
			public void onResize(ResizeEvent event) {
				if(simplePopup.isVisible()) 
					simplePopup.setPopupPosition(0, getScrollTop());
				if(waterfall.isVisible())
					waterfall.setSize(getMaxWidth() + "px", getMaxHeight()+ "px");
			}});
	
		RootPanel.get().add(waterfall);
	}
	
	public static native int getScrollTop() /*-{
	   // Standard mode || Quirks mode. 
	   return $doc.documentElement.scrollTop || $doc.body.scrollTop;
	 }-*/;
	
	public static native int getScrollWidth() /*-{
	// Standard mode || Quirks mode. 
		return $doc.documentElement.scrollWidth || $doc.body.scrollWidth;
	}-*/;

	public static native int getScrollHeight() /*-{
	// Standard mode || Quirks mode. 
		return $doc.documentElement.scrollHeight || $doc.body.scrollHeight;
	}-*/;
	
	public static native int getClientWidth() /*-{
	// Standard mode || Quirks mode. 
		return $doc.documentElement.clientWidth || $doc.body.clientWidth;
   }-*/;

public static native int getClientHeight() /*-{
// Standard mode || Quirks mode. 
	return $doc.documentElement.clientHeight || $doc.body.clientHeight;
}-*/;

	public static int getMaxWidth() {
		int scrollWidth = getScrollWidth();
		int clientWidth = getClientWidth();

		// 取宽度最大值
		return scrollWidth > clientWidth ? scrollWidth : clientWidth;
	}

	public static int getMaxHeight() {
		int scrollHeight = getScrollHeight();
		int clientHeight = getClientHeight();

		// 取高度最大值
		return scrollHeight > clientHeight ? scrollHeight : clientHeight;
	}
}




<style>
.LoadingShow{
	/*background-color: #EEEEEE;*/
	font-size: 12px;
	font-weight: bold;
	width: 100%;
	z-index: 999;
}

.PopupPanelEx_Backgroup_div{
	height: 100%;
	width: 100%;
	filter: alpha(opacity = 50);
	-moz-opacity:0.5;
	opacity:0.5;
	background-color: #CCCCCC;
	position: absolute;
	left: 0px;
	top: 0px;
	right: 0px;
	bottom: 0px;
}
</style>


2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics