/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ import com.google.gwt.user.client.Timer; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.data.Record; import com.smartgwt.client.types.DSOperationType; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.sample.showcase.client.data.ItemSupplyXmlDS; import com.google.gwt.core.client.EntryPoint; public class AdaptiveFilterSample implements EntryPoint { public void onModuleLoad() { Canvas canvas = new Canvas(); final ServerCountLabel serverCountLabel = new ServerCountLabel(); ItemSupplyXmlDS supplyXmlDS = new ItemSupplyXmlDS(SC.generateID()) { //this approach logs simulated server trips for DataSources with clientOnly:true //so that no server is required. Since this example has a clientOnly datasource that loads data //from a static xml, use the simulated server trips getClientOnlyResponse override point. //If working with a real server that returns data dynamically based on start/end row, override //transformResponse instead. @Override public DSResponse getClientOnlyResponse(DSRequest request, Record[] serverData) { DSResponse response = super.getClientOnlyResponse(request, serverData); if(request.getOperationType() == DSOperationType.FETCH) {} int totalRows = response.getTotalRows(); int startRow = response.getStartRow(); int endRow = response.getEndRow(); serverCountLabel.incrementAndUpdate(totalRows, startRow, endRow); serverCountLabel.setBackgroundColor("ffff77"); new Timer() { public void run() { serverCountLabel.setBackgroundColor("ffffff"); } }.schedule(500); return response; } }; //when working with a server that dynamically returns the response based on start row, end row, //use can override transformResponse instead of getClientOnlyResponse /* @Override protected void transformResponse(DSResponse response, DSRequest request, Object data) { int totalRows = response.getTotalRows(); int startRow = response.getStartRow(); int endRow = response.getEndRow(); serverCountLabel.incrementAndUpdate(totalRows, startRow, endRow); serverCountLabel.setBackgroundColor("ffff77"); new Timer() { public void run() { serverCountLabel.setBackgroundColor("ffffff"); } }.schedule(500); }*/ final ListGrid supplyItemGrid = new ListGrid(); supplyItemGrid.setWidth(500); supplyItemGrid.setHeight(300); supplyItemGrid.setAutoFetchData(true); supplyItemGrid.setShowFilterEditor(true); supplyItemGrid.setFilterOnKeypress(true); supplyItemGrid.setFetchDelay(500); supplyItemGrid.setDataSource(supplyXmlDS); ListGridField skuField = new ListGridField("SKU", 100); ListGridField nameField = new ListGridField("itemName", 150); ListGridField descriptionField = new ListGridField("description", 250); ListGridField categoryField = new ListGridField("category", 100); supplyItemGrid.setFields(skuField, nameField, descriptionField, categoryField ); canvas.addChild(supplyItemGrid); canvas.addChild(serverCountLabel); canvas.draw(); } class ServerCountLabel extends Label { private int count = 0; ServerCountLabel() { setContents("
Number of server trips : 0
"); setTop(320); setPadding(10); setWidth(500); setHeight(30); setBorder("1px solid #6a6a6a"); } public void incrementAndUpdate(int totalRows, int startRow, int endRow) { count++; setContents("
Number of server trips: " + count + "
Total rows in this filter set: " + totalRows + "
Last range of records returned: " + startRow + " to " + endRow + "
"); } } }