package com.smartgwt.sample.showcase.client.grid.databinding; import com.smartgwt.client.widgets.Canvas; 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; public class GridDataBindingInlineDataSample extends ShowcasePanel { private static final String DESCRIPTION = "This ListGrid uses an inline data array in the" + " component definition. This technique is" + " appropriate for very small read-only data sets," + " typically with static data values."; public static class Factory implements PanelFactory { private String id; public Canvas create() { GridDataBindingInlineDataSample panel = new GridDataBindingInlineDataSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } public Canvas getViewPanel() { final ListGrid countryGrid = new ListGrid(); countryGrid.setWidth(350); countryGrid.setHeight(224); countryGrid.setShowAllRecords(true); ListGridField countryCodeField = new ListGridField("countryCode", "Code", 40); ListGridField nameField = new ListGridField("countryName", "Country", 120); ListGridField capitalField = new ListGridField("capital", "Capital"); countryGrid.setFields(countryCodeField, nameField, capitalField); countryGrid.setCanResizeFields(true); countryGrid.setData(createListGridRecords(countryRecords)); return countryGrid; } private static final String[] countryRecords = new String[] { "countryCode;countryName;capital", "US;United States;Washington, DC", "CH;China;Beijing", "JA;Japan;Tokyo", "IN;India;New Delhi", "GM;Germany;Berlin", "UK;United Kingdom;London", "FR;France;Paris", "IT;Italy;Rome", "RS;Russia;Moscow", "BR;Brazil;Brasilia", "CA;Canada;Ottawa", "MX;Mexico;Mexico (Distrito Federal)", "SP;Spain;Madrid", "KS;South Korea;Seoul", "ID;Indonesia;Jakarta"}; /** * Creates an array of <code>ListGridRecord</code> objects from an array of <code>String</code> * values. The first string in the array contains the names of the fields in the * <code>ListGridRecord</code>s; the remaining strings in the supplied array contain the data. * The field names and data values are separated by semicolons. * @param records An array of strings containing the field names (in the first string of the * array) and the data values to be used in creating the resulting list grid records. * @return An array of list grid records representing the data. */ public ListGridRecord[] createListGridRecords(String[] records) { ListGridRecord[] result = new ListGridRecord[records.length - 1]; String[] fieldNames = records[0].split(";"); for (int recordIndex = 1; recordIndex < records.length; ++recordIndex) { String[] fieldValues = records[recordIndex].split(";"); result[recordIndex - 1] = new ListGridRecord(); for (int fieldIndex = 0; fieldIndex < fieldValues.length; ++fieldIndex) { result[recordIndex - 1].setAttribute(fieldNames[fieldIndex], fieldValues[fieldIndex]); } } return result; } // createListGridRecords() public String getIntro() { return DESCRIPTION; } }