tabular-data-column-widget/src/main/java/org/gcube/portlets/user/td/columnwidget/client/custom/ActionButtonCellAppearance....

66 lines
2.2 KiB
Java

package org.gcube.portlets.user.td.columnwidget.client.custom;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.sencha.gxt.core.client.XTemplates;
/**
*
* @author "Giancarlo Panichi"
*
*/
public class ActionButtonCellAppearance {
public interface Style extends CssResource {
String image();
}
public interface Template extends XTemplates {
@XTemplate(source = "ActionButton.html")
SafeHtml template(Style style, SafeHtml img, String title);
}
public interface Resources extends ClientBundle {
@Source("ActionButton.css")
Style style();
}
private final Style style;
private final Template template;
public ImageResource icon;
public String title;
public String toolTip;
public ActionButtonCellAppearance(){
this((Resources) GWT.create(Resources.class));
}
public ActionButtonCellAppearance(Resources resources){
this.style = resources.style();
this.style.ensureInjected();
this.template = GWT.create(Template.class);
}
public void render(SafeHtmlBuilder sb) {
sb.append(template.template(style, makeImage(icon), title));
}
/**
* Make icons available as SafeHtml to be displayed inside the table
*
* @param resource
* @return
*/
private static SafeHtml makeImage(ImageResource resource) {
AbstractImagePrototype proto = AbstractImagePrototype.create(resource);
String html = proto.getHTML();
return SafeHtmlUtils.fromTrustedString(html);
}
}