package com.fdar.apress.s2.client; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.google.gwt.core.client.GWT; import com.fdar.apress.s2.client.service.GWTServiceAsync; import com.fdar.apress.s2.client.service.GWTService; public class EventTableWidget extends Composite { private EventProvider eventProvider; private EventTableWidget eventTable; private final Grid grid; public EventTableWidget() { eventProvider = new EventProvider(); grid = new Grid(); initWidget(grid); } protected void onLoad() { eventProvider.updateRowData(); } private class EventProvider { private final GWTServiceAsync gwtService; public EventProvider() { gwtService = (GWTServiceAsync) GWT.create(GWTService.class); ServiceDefTarget target = (ServiceDefTarget) gwtService; target.setServiceEntryPoint("/app/voting/GWTService.action"); } public void updateRowData() { gwtService.findRecentEvents(10, new AsyncCallback() { public void onFailure(Throwable caught) { // do nothing } public void onSuccess(Object result) { pushResults((GWTEventDTO[])result); } }); } private void pushResults(GWTEventDTO[] events) { grid.resize(events.length,3); for (int i = 0; i<events.length; i++) { GWTEventDTO event = events[i]; grid.setText(i,0, event.getEventName()); grid.setText(i,1, event.getStartTime()); grid.setText(i,2,event.getLocation().getCity()+", "+event.getLocation().getState()); } } } }