package org.realityforge.gwt.sample.contacts.client.view.ui; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.HTMLTable; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import java.util.List; import org.realityforge.gwt.sample.contacts.client.data_type.ContactDetailsDTO; import org.realityforge.gwt.sample.contacts.client.view.ListContactsView; public class ListContactsUI extends Composite implements ListContactsView { interface Binder extends UiBinder<Widget, ListContactsUI> {} private static final Binder uiBinder = GWT.create( Binder.class ); @UiField FlexTable _contactsTable; @UiField Button _addButton; @UiField Button _deleteButton; private Presenter _presenter; private List<ContactDetailsDTO> _rowData; public ListContactsUI() { initWidget( uiBinder.createAndBindUi( this ) ); } public void setPresenter( final Presenter presenter ) { _presenter = presenter; } public void setRowData( final List<ContactDetailsDTO> rowData ) { _contactsTable.removeAllRows(); _rowData = rowData; final int size = rowData.size(); for( int i = 0; i < size; ++i ) { final ContactDetailsDTO t = rowData.get( i ); _contactsTable.setWidget( i, 0, new CheckBox() ); _contactsTable.setWidget( i, 1, new Label( t.getType() ) ); _contactsTable.setWidget( i, 2, new Label( t.getDisplayName() ) ); } } @UiHandler( "_addButton" ) void onAddButtonClicked( final ClickEvent event ) { if( null != _presenter ) { _presenter.onAddButtonClicked(); } } @UiHandler( "_deleteButton" ) void onDeleteButtonClicked( final ClickEvent event ) { if( null != _presenter ) { _presenter.onDeleteButtonClicked(); } } @UiHandler( "_contactsTable" ) void onTableClicked( final ClickEvent event ) { if( null != _presenter ) { final HTMLTable.Cell cell = _contactsTable.getCellForEvent( event ); if( null != cell ) { if( 2 == cell.getCellIndex() ) { _presenter.onItemClicked( _rowData.get( cell.getRowIndex() ) ); } if( 0 == cell.getCellIndex() ) { _presenter.onItemSelected( _rowData.get( cell.getRowIndex() ) ); } } } } public Widget asWidget() { return this; } }