package fr.lteconsulting.hexa.client.ui.tools; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.Event; import fr.lteconsulting.hexa.client.datatable.Cell; import fr.lteconsulting.hexa.client.datatable.DataTable; import fr.lteconsulting.hexa.client.ui.miracle.Printer; public abstract class ImageClickColumn<T> implements IColumn<T> { protected abstract void onClick( Cell cell ); protected abstract int getColumnIdx(); String title; ImageResource image; DataTable table; public ImageClickColumn( String title, ImageResource image, DataTable table ) { this.title = title; this.image = image; this.table = table; table.addCellClickHandler( handler ); } @Override public String getTitle() { return title; } @Override public void fillCell( Printer printer, T record ) { printer.setHTML( "<img src='" + image.getSafeUri().asString() + "'/>" ); } @Override public IEditor editCell( T record ) { return null; } private final ClickHandler handler = new ClickHandler() { @Override public void onClick( ClickEvent event ) { Cell cell = table.getCellForEvent( event.getNativeEvent().<Event>cast() ); if( cell == null ) return; //check our column if( cell.getCellIndex() != getColumnIdx() ) return; ImageClickColumn.this.onClick( cell ); } }; }