package fr.lteconsulting.hexa.client.ui;
import java.util.HashMap;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
import fr.lteconsulting.hexa.client.css.HexaCss;
public class ListTable<T> extends Composite
{
interface Css extends HexaCss
{
public static final Css CSS = GWT.create( Css.class );
String main();
}
FlexTable table = new FlexTable();
HashMap<Integer, T> rows = new HashMap<Integer, T>();
T selected = null;
public ListTable()
{
initWidget( table );
setStylePrimaryName( Css.CSS.main() );
table.addClickHandler( new ClickHandler()
{
@Override
public void onClick( ClickEvent event )
{
Cell cell = table.getCellForEvent( event );
if( cell == null )
return;
selected = rows.get( cell.getRowIndex() );
}
} );
}
public void addItem( String text, T object )
{
int row = table.getRowCount();
rows.put( row, object );
table.setText( row, 0, text );
}
public void addChangeHandler( final ChangeHandler handler )
{
table.addClickHandler( new ClickHandler()
{
@Override
public void onClick( ClickEvent event )
{
handler.onChange( null );
}
} );
}
public T getSelected()
{
return selected;
}
public void setSelected( T selected )
{
this.selected = selected;
}
}