package com.infinitescrolling.client.ui; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.logical.shared.SelectionEvent; import com.google.gwt.event.logical.shared.SelectionHandler; import com.google.gwt.user.cellview.client.DataGrid; import com.google.gwt.user.client.ui.*; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.infinitescrolling.client.TableOfDudesService; public class TableOfDudes implements EntryPoint { private DudeDataGrid dudeDataGrid = new DudeDataGrid(); public void onModuleLoad() { final int genNum = 1000000; final Button genButton = new Button("Generate"); final Label genLabel = new Label(); DataGrid dataGrid = dudeDataGrid.init(genNum); RangeLabelPager pager = new RangeLabelPager(); pager.setDisplay(dataGrid); VerticalPanel verticalPanel = new VerticalPanel(); verticalPanel.setSize("100%", "100%"); verticalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); verticalPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); FlowPanel genPanel = new FlowPanel(); genPanel.add(genButton); genPanel.add(genLabel); verticalPanel.add(genPanel); FlowPanel tablePanel = new FlowPanel(); tablePanel.add(dataGrid); tablePanel.add(pager.getLabel()); TabLayoutPanel tabLayoutPanel = new TabLayoutPanel(32, Unit.PX); tabLayoutPanel.setSize("600px", "400px"); RootPanel.get("panel").add(tabLayoutPanel); tabLayoutPanel.add(verticalPanel, "Generator"); tabLayoutPanel.add(tablePanel, "Table"); tabLayoutPanel.addSelectionHandler(new SelectionHandler<Integer>() { @Override public void onSelection(SelectionEvent<Integer> event) { if (event.getSelectedItem() == 1) { dudeDataGrid.clearState(); dudeDataGrid.refreshTable(); } } }); genButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { TableOfDudesService.App.getInstance().generate(genNum, new GenAsyncCallback(genLabel, genButton)); genLabel.setText("Generating..."); genButton.setEnabled(false); dudeDataGrid.turnOffSorting(); } }); } private class GenAsyncCallback implements AsyncCallback<String> { private Label label; private Button button; public GenAsyncCallback(Label label, Button button) { this.label = label; this.button = button; } public void onSuccess(String result) { label.getElement().setInnerHTML(result); button.setEnabled(true); dudeDataGrid.refreshTable(); } public void onFailure(Throwable throwable) { label.setText("Failed to receive answer from server!"); button.setEnabled(true); } } }