package com.akjava.gwt.lib.client.experimental; import com.akjava.gwt.lib.client.LogUtils; import com.google.common.base.Strings; import com.google.gwt.cell.client.SafeHtmlCell; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.user.cellview.client.Column; /** * * @author aki * * @param <T> * * sample MaxSizeImageColumn<MarkdownKeepData> imageColumn=new MaxSizeImageColumn<MarkdownKeepData>(200,40) { @Override public String getImageSrc(MarkdownKeepData object) { if(object.getImageDataUrl()==null){ return ""; } return object.getImageDataUrl(); } }; table.addColumn(imageColumn,"Image"); */ public abstract class MaxSizeImageColumn<T> extends Column<T,SafeHtml>{ private int maxWidth; private int maxHeight; public MaxSizeImageColumn(int maxWidth,int maxHeight) { super(new SafeHtmlCell()); this.maxWidth=maxWidth; this.maxHeight=maxHeight; } public abstract String getImageSrc(T object); @Override public SafeHtml getValue(T object) { SafeHtmlBuilder sb = new SafeHtmlBuilder(); if(!Strings.isNullOrEmpty(getImageSrc(object))){ String html="<img src='"+getImageSrc(object)+"' style='max-width:"+maxWidth+"px;max-height:"+maxHeight+"px'>"; LogUtils.log(html); sb.appendHtmlConstant(html); } return sb.toSafeHtml(); } }