package com.iambookmaster.client.iphone;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.iambookmaster.client.beans.Greeting;
import com.iambookmaster.client.iphone.images.IPhoneImages;
import com.iambookmaster.client.iphone.images.IPhoneStyles;
import com.iambookmaster.client.model.ContentPlayer;
public class IPhoneGreetingWidgetFactory {
private static final IPhoneStyles css = IPhoneImages.INSTANCE.css();
public static void create(Greeting greeting, IPhoneCanvas canvas,ContentPlayer player) {
VerticalPanel verticalPanel = new VerticalPanel();
verticalPanel.setWidth("100%");
Widget result = verticalPanel;
if (greeting.getImageUrl().length()>0) {
//with Icon
HorizontalPanel horizontalPanel = new HorizontalPanel();
horizontalPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
horizontalPanel.setWidth("100%");
Image image = new Image(greeting.getImageUrl());
image.setStyleName(css.greetingIcon());
horizontalPanel.add(image);
horizontalPanel.setCellWidth(image,"1%");
horizontalPanel.add(verticalPanel);
horizontalPanel.setCellWidth(verticalPanel,"99%");
result = horizontalPanel;
}
Label label = new Label(greeting.getName());
label.setStyleName(css.greetingName());
verticalPanel.add(label);
verticalPanel.setCellWidth(label,"100%");
final String url = greeting.getUrl();
ClickHandler handler = (url==null || url.trim().length()==0) ? null : new MyClickHandler(url,player);
if (handler != null) {
label.addStyleName(css.greetingClickableHyper());
label.addClickHandler(handler);
canvas.addClickHandler(label, handler);
}
if (greeting.getText().length()>0) {
label = new Label(greeting.getText());
label.setStyleName(css.greetingText());
if (handler != null) {
label.addStyleName(css.greetingClickable());
label.addClickHandler(handler);
canvas.addClickHandler(label, handler);
}
verticalPanel.add(label);
verticalPanel.setCellWidth(label,"100%");
}
result.setStyleName(css.greetingPanel());
canvas.add(result);
}
public static class MyClickHandler implements ClickHandler {
private String url;
private ContentPlayer player;
public MyClickHandler(String url, ContentPlayer player) {
this.url = url;
this.player = player;
}
public void onClick(ClickEvent event) {
player.openURL(url);
}
}
}