package com.iambookmaster.client.iphone; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.iambookmaster.client.iphone.common.IPhoneButton; import com.iambookmaster.client.iphone.common.IPhoneTouchListener; import com.iambookmaster.client.iphone.images.IPhoneImages; import com.iambookmaster.client.iphone.images.IPhoneStyles; import com.iambookmaster.client.locale.AppLocale; public class IPhoneMessage extends PopupPanel { private static final IPhoneStyles css = IPhoneImages.INSTANCE.css(); private static IPhoneMessage instance = new IPhoneMessage(); private HTML html; private Timer timer; private int timeout; private double opasity; private IPhoneTouchListener listener; private IPhoneMessage() { super(false,true); listener = new IPhoneTouchListener(){ @Override public boolean event(JavaScriptObject source, String name, int[] x, int[] y, JavaScriptObject target) { return superEvent(source, name, x, y, target); } }; listener.addListener(getElement(),IPhoneTouchListener.TOUCHSTART,false); int size = Math.min(Window.getClientHeight(), Window.getClientWidth()); setSize(IPhoneViewerOldBook.toPixels(size-size/4), IPhoneViewerOldBook.toPixels(size/2)); setStyleName("iambm_log"); VerticalPanel verticalPanel = new VerticalPanel(); verticalPanel.setSize("100%", "100%"); verticalPanel.setSpacing(5); verticalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); html = new HTML(); verticalPanel.add(html); verticalPanel.setCellWidth(html,"100%"); verticalPanel.setCellHeight(html,"99%"); IPhoneButton label = new IPhoneButton(AppLocale.getAppConstants().iphoneCloseMessage()); ClickHandler handler = new ClickHandler() { public void onClick(ClickEvent event) { if (timer!=null) { timer.cancel(); timer = null; } hide(); } }; label.addClickHandler(handler); listener.addClickHandler(label, handler); // label.setStyleName(css.stateSelection()); verticalPanel.add(label); verticalPanel.setCellWidth(label,"100%"); setWidget(verticalPanel); } public static void showMessage(String message) { instance.html.setHTML(message); instance.start(); } private void start() { timeout=0; opasity=1; getElement().getStyle().setOpacity(opasity); if (timer==null) { timer = new Timer(){ @Override public void run() { timeout++; if (timeout>40) { if (opasity>0) { opasity = opasity - 0.1; getElement().getStyle().setOpacity(opasity); } else { timer = null; cancel(); hide(); } } } }; timer.scheduleRepeating(100); show(); center(); } } }