package com.smartgwt.sample.showcase.client.grid; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.rpc.RPCManager; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.PromptStyle; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.grid.CellFormatter; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; import com.smartgwt.sample.showcase.client.data.ItemSupplyXmlDS; public class LiveGridFetchSample extends ShowcasePanel { private static final String DESCRIPTION = "<p>Rows are fetched automatically as the user drags the scrollbar. Drag the scrollbar quickly to the bottom to " + "fetch a range near the end (a prompt will appear during server fetch).</p><p>Scroll slowly back up to fill in the middle.</p>" + "<p>Another key unique feature of Smart GWT is lazy rendering of <b>columns</b>. Most browsers cannot handle displaying a large number of columns and have serious performance issues." + "Smart GWT however does not render all columns outside the visible area by default and only renders them as you scroll horizontally. You can however disable this feature if desired.</p>" + "<p>You can control how far ahead of the currently visible area rows should be rendered. This is expressed as a ratio from viewport size to rendered area size. The default is 1.3.</p>" + "<p>Tweaking drawAheadRatio allows you to make tradeoffs between continuous scrolling speed vs initial render time and render time when scrolling by large amounts.</p>"; public static class Factory implements PanelFactory { private String id; public ShowcasePanel create() { LiveGridFetchSample panel = new LiveGridFetchSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { RPCManager.setPromptStyle(PromptStyle.CURSOR); DataSource dataSource = ItemSupplyXmlDS.getInstance(); ListGridField rowNum = new ListGridField("itemNum", "Item No."); rowNum.setWidth(65); rowNum.setCellFormatter(new CellFormatter() { public String format(Object value, ListGridRecord record, int rowNum, int colNum) { return rowNum +""; } }); ListGridField itemName = new ListGridField("itemName", 100); ListGridField sku = new ListGridField("SKU", 100); ListGridField description = new ListGridField("description", 150); ListGridField category = new ListGridField("category", 100); ListGridField units = new ListGridField("units", 100); ListGridField unitCost = new ListGridField("unitCost", 100); unitCost.setType(ListGridFieldType.FLOAT); ListGridField inStock = new ListGridField("inStock", 100); inStock.setType(ListGridFieldType.BOOLEAN); ListGridField nextShipment = new ListGridField("nextShipment", 100); nextShipment.setType(ListGridFieldType.DATE); // Additional fields to display - use "setDisplayField" to simply re-display data from // other fields in each record. ListGridField itemName2 = new ListGridField("itemName2", 100); itemName2.setTitle("Item Name 2"); itemName2.setDisplayField("itemName"); ListGridField sku2 = new ListGridField("sku2", 100); sku2.setTitle("SKU 2"); sku2.setDisplayField("SKU"); ListGridField description2 = new ListGridField("description2", 150); description2.setTitle("Description 2"); description2.setDisplayField("description"); ListGridField category2 = new ListGridField("category2", 100); category2.setTitle("Category 2"); category2.setDisplayField("category"); ListGridField units2 = new ListGridField ("units2", 100); units2.setTitle("Units 2"); units2.setDisplayField("units"); ListGridField unitCost2 = new ListGridField("unitCost2", 100); unitCost2.setTitle("Unit Cost 2"); unitCost2.setDisplayField("unitCost"); ListGridField itemName3 = new ListGridField("itemName3", 100); itemName3.setTitle("Item Name 3"); itemName3.setDisplayField("itemName"); ListGridField sku3 = new ListGridField("sku3", 100); sku3.setTitle("SKU 3"); sku3.setDisplayField("SKU"); ListGridField description3 = new ListGridField("description3", 150); description3.setTitle("Description 3"); description3.setDisplayField("description"); ListGridField category3 = new ListGridField("category3", 100); category3.setTitle("Category 3"); category3.setDisplayField("category"); ListGridField units3 = new ListGridField ("units3", 100); units3.setTitle("Units 3"); units3.setDisplayField("units"); ListGridField unitCost3 = new ListGridField("unitCost3", 100); unitCost3.setTitle("Unit Cost 3"); unitCost3.setDisplayField("unitCost"); final ListGrid listGrid = new ListGrid(); listGrid.setWidth100(); listGrid.setHeight100(); listGrid.setMinFieldWidth(80); listGrid.setAutoFetchData(true); listGrid.setDataSource(dataSource); listGrid.setFields(rowNum, itemName, sku, description, category, units, unitCost, itemName2, sku2, description2, category2, units2, unitCost2, itemName3, sku3, description3, category3, units3, unitCost3); return listGrid; } public String getIntro() { return DESCRIPTION; } }