package net.thesocialos.client.view;
import net.thesocialos.client.advanced.AdvClickListener;
import net.thesocialos.client.advanced.AdvFocusPanel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.DoubleClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public class Thumbnail extends Composite implements HasText {
public enum SERVICE {
PICASA("images/badges/picasa.png"), YOUTUBE("images/badges/youtube.png"), FACEBOOK("images/badges/facebook.png"), FLICKR(
"images/badges/flickr.png"), TWITTER("images/badges/twitter.png"), DRIVE("images/badges/drive.png");
private final String iconUrl;
private SERVICE(String iconUrl) {
this.iconUrl = iconUrl;
}
/**
* @return the iconUrl
*/
public String getIconUrl() {
return iconUrl;
}
}
interface ThumbnailUiBinder extends UiBinder<Widget, Thumbnail> {
}
public enum TYPE {
ALBUM, PICTURE, VIDEO, MUSIC, OTHER, FOLDER;
}
private static ThumbnailUiBinder uiBinder = GWT.create(ThumbnailUiBinder.class);
@UiField Image image;
@UiField Image badge;
@UiField Label text;
@UiField Label subText;
@UiField AdvFocusPanel panel;
private TYPE type;
private SERVICE service;
public Thumbnail() {
initWidget(uiBinder.createAndBindUi(this));
}
/**
*
* @param image
* @param text
* @param subText
* @param type
* a constant from Thumbnail.TYPE
* @param service
* a constant from Thumbnail.SERVICE
*/
public Thumbnail(Image image, String text, String subText, TYPE type, SERVICE service) {
initWidget(uiBinder.createAndBindUi(this));
this.image = image;
this.text.setText(text);
this.subText.setText(subText);
setType(type);
setService(service);
}
/**
*
* @param image
* @param text
* @param type
* a constant from Thumbnail.TYPE
* @param service
* a constant from Thumbnail.SERVICE
*/
public Thumbnail(Image image, String text, TYPE type, SERVICE service) {
initWidget(uiBinder.createAndBindUi(this));
this.image = image;
this.text.setText(text);
setType(type);
setService(service);
}
/**
*
* @param imageURL
* @param text
* @param subText
* @param type
* a constant from Thumbnail.TYPE
* @param service
* a constant from Thumbnail.SERVICE
*/
public Thumbnail(String imageURL, String text, String subText, TYPE type, SERVICE service) {
initWidget(uiBinder.createAndBindUi(this));
image.setUrl(imageURL);
this.text.setText(text);
this.subText.setText(subText);
setType(type);
setService(service);
}
/**
*
* @param imageURL
* @param text
* @param type
* a constant from Thumbnail.TYPE
* @param service
* a constant from Thumbnail.SERVICE
*/
public Thumbnail(String imageURL, String text, TYPE type, SERVICE service) {
initWidget(uiBinder.createAndBindUi(this));
image.setUrl(imageURL);
this.text.setText(text);
setType(type);
setService(service);
}
public void addAdvClickListener(AdvClickListener listener) {
panel.addClickListener(listener);
}
public void addDoubleClickHandler(DoubleClickHandler handler) {
panel.addDoubleClickHandler(handler);
}
/**
* @return the service
*/
public SERVICE getService() {
return service;
}
/**
* @return the subText
*/
public Label getSubText() {
return subText;
}
@Override
public String getText() {
return text.getText();
}
/**
* @return the type
*/
public TYPE getType() {
return type;
}
private void setBadge(SERVICE service) {
badge.setUrl(service.getIconUrl());
}
/**
* @param service
* the service to set
*/
public void setService(SERVICE service) {
this.service = service;
setBadge(service);
}
/**
* @param subText
* the subText to set
*/
public void setSubText(Label subText) {
this.subText = subText;
}
@Override
public void setText(String text) {
this.text.setText(text);
}
/**
* @param type
* the type to set
*/
public void setType(TYPE type) {
this.type = type;
}
}