package com.smartgwt.sample.showcase.client.grid.filtering; import com.google.gwt.user.client.Timer; import com.smartgwt.client.data.DSRequest; import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.Hilite; import com.smartgwt.client.data.ResultSet; import com.smartgwt.client.data.Criterion; import com.smartgwt.client.data.Record; import com.smartgwt.client.data.ResponseTransformer; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.OperatorId; import com.smartgwt.client.types.DSOperationType; 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.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.layout.HLayout; import com.google.gwt.core.client.EntryPoint; public class SpreadsheetFilteringSample implements EntryPoint { private Label serverCountLabel; private ListGrid supplyGrid; private HLayout mainLayout; private VLayout leftVLayout; private class ServerCountLabel extends Label { private int count = 0; public ServerCountLabel() { setWidth100(); setHeight(40); setPadding(10); setBorder("1px solid grey"); setContents("
Number of server trips: 0
"); } public void updateContent (String dataSource, int totalRows, int startRow, int endRow) { count++; serverCountLabel.setContents("Number of server trips: " + this.count + "
DataSource: \"" + dataSource + "\"" + "
Total rows in this filter set: " + totalRows + "
Last range of records returned: " + startRow + " to " + endRow ); } } private DataSource supplyItemDS = DataSource.get("supplyItem", null, new ResponseTransformer() { protected void transformResponse(DSResponse response, DSRequest request, Object data) { if(request.getOperationType() == DSOperationType.FETCH) { int totalRows = response.getTotalRows(); int startRow = response.getStartRow(); int endRow = response.getEndRow(); ((ServerCountLabel) serverCountLabel).updateContent(supplyItemDS.getID(), totalRows, startRow, endRow); serverCountLabel.setBackgroundColor("#ffff77"); new Timer() { public void run() { serverCountLabel.setBackgroundColor("#ffffff"); } }.schedule(500); } defaultTransformResponse(response, request, data); } }); @Override public void onModuleLoad() { leftVLayout = new VLayout(); leftVLayout.setMembersMargin(20); mainLayout = new HLayout(); mainLayout.setWidth100(); mainLayout.setHeight100(); mainLayout.setMembersMargin(20); VLayout rightVLayout = new VLayout(); rightVLayout.setMembersMargin(20); IButton fetchUnloadedRecordsButton = new IButton(); fetchUnloadedRecordsButton.setWidth(200); fetchUnloadedRecordsButton.setTitle("Fetch Unloaded Records"); fetchUnloadedRecordsButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { ResultSet rest = supplyGrid.getResultSet(); if (!rest.rangeIsLoaded(0, rest.getLength())) { // getRange will fetch the requested rows from the server rest.getRange(0, rest.getLength()); } } }); IButton recreateGridButton = new IButton(); recreateGridButton.setWidth(200); recreateGridButton.setTitle("Recreate Grid"); recreateGridButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { (leftVLayout.getMember(0)).destroy(); createGrid(); } }); serverCountLabel = new ServerCountLabel(); leftVLayout.setMembers(serverCountLabel); rightVLayout.setMembers(fetchUnloadedRecordsButton, recreateGridButton); mainLayout.setMembers(leftVLayout, rightVLayout); createGrid(); mainLayout.draw(); } private void createGrid () { supplyGrid = new ListGrid(); supplyGrid.setWidth100(); supplyGrid.setHeight(300); supplyGrid.setShowFilterEditor(true); supplyGrid.setFilterOnKeypress(true); supplyGrid.setFetchDelay(500); supplyGrid.setAutoFetchData(true); supplyGrid.setDataSource(DataSource.get("supplyItem")); ListGridField SKU = new ListGridField("SKU"); ListGridField itemName = new ListGridField("itemName"); ListGridField category = new ListGridField("category"); ListGridField units = new ListGridField("units"); supplyGrid.setFields(SKU,itemName,category,units); leftVLayout.addMember(supplyGrid, 0); } }