package com.smartgwt.sample.showcase.client.grid.appearance; import com.smartgwt.client.data.RecordList; import com.smartgwt.client.data.ResultSet; import com.smartgwt.client.data.events.DataChangedEvent; import com.smartgwt.client.data.events.DataChangedHandler; import com.smartgwt.client.types.ListGridComponent; import com.smartgwt.client.types.ListGridEditEvent; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.layout.LayoutSpacer; import com.smartgwt.client.widgets.toolbar.ToolStrip; import com.smartgwt.client.widgets.toolbar.ToolStripButton; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; import com.smartgwt.sample.showcase.client.data.CountryXmlDS; public class GridComponentsSample extends ShowcasePanel { private static final String DESCRIPTION = "ListGrids can be customized by changing the order of " + "standard components, and adding entirely custom components. In this example the filter " + "row is showing below the ListGrid header bar, and a custom set of controls has been " + "added underneath the body. "; public static class Factory implements PanelFactory { private String id; public Canvas create() { GridComponentsSample panel = new GridComponentsSample(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } private ListGrid countryGrid; private Label totalsLabel; public Canvas getViewPanel() { ToolStrip gridEditControls = new ToolStrip(); gridEditControls.setWidth100(); gridEditControls.setHeight(24); totalsLabel = new Label(); totalsLabel.setPadding(5); LayoutSpacer spacer = new LayoutSpacer(); spacer.setWidth("*"); ToolStripButton editButton = new ToolStripButton(); editButton.setIcon("[SKIN]/actions/edit.png"); editButton.setPrompt("Edit selected record"); editButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { ListGridRecord record = countryGrid.getSelectedRecord(); if (record == null) return; countryGrid.startEditing(countryGrid.getDataAsRecordList().indexOf(record), 0, false); } }); ToolStripButton removeButton = new ToolStripButton(); removeButton.setIcon("[SKIN]/actions/remove.png"); removeButton.setPrompt("Remove selected record"); removeButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { countryGrid.removeSelectedData(); } }); gridEditControls.setMembers(totalsLabel, spacer, editButton, removeButton); ListGridField countryName = new ListGridField("countryName"); ListGridField capital = new ListGridField("capital"); ListGridField continent = new ListGridField("continent"); ListGridField independence = new ListGridField("independence"); countryGrid = new ListGrid(); countryGrid.setFields(new ListGridField[] { countryName, capital, continent, independence }); countryGrid.setWidth(500); countryGrid.setHeight100(); countryGrid.setDataSource(CountryXmlDS.getInstance()); countryGrid.setAutoFetchData(true); countryGrid.setShowFilterEditor(true); countryGrid.setCanEdit(true); countryGrid.setEditEvent(ListGridEditEvent.NONE); ResultSet dataProperties = new ResultSet(); dataProperties.addDataChangedHandler(new DataChangedHandler() { @Override public void onDataChanged(DataChangedEvent event) { RecordList data = countryGrid.getDataAsRecordList(); if (data != null && data instanceof ResultSet && ((ResultSet)data).lengthIsKnown() && data.getLength() > 0) { totalsLabel.setContents(data.getLength() + " Records"); } else { totalsLabel.setContents(" "); } } }); countryGrid.setDataProperties(dataProperties); countryGrid.setGridComponents(new Object[] { ListGridComponent.HEADER, ListGridComponent.FILTER_EDITOR, ListGridComponent.BODY, gridEditControls }); return countryGrid; } public String getIntro() { return DESCRIPTION; } }