package com.sbs.jpm.client; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.user.client.ui.RootPanel; import com.smartgwt.client.data.AdvancedCriteria; import com.smartgwt.client.data.DSResponse; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.DataSourceField; import com.smartgwt.client.types.DSOperationType; import com.smartgwt.client.types.FieldType; import com.smartgwt.client.types.ListGridFieldType; import com.smartgwt.client.types.OperatorId; import com.smartgwt.client.util.EventHandler; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Button; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.events.KeyPressEvent; import com.smartgwt.client.widgets.events.KeyPressHandler; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.grid.EditorValueMapFunction; 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.VLayout; import com.smartgwt.client.widgets.tree.TreeGridField; public class TestCase implements EntryPoint { private Panel panel; private TestDataSource dataSource; public void onModuleLoad() { SC.showConsole(); dataSource = new TestDataSource(); panel = new Panel(); panel.setWidth100(); panel.setHeight100(); RootPanel.get().add(panel); } public class Panel extends VLayout { private ListGrid grid; private ListGridField nameGridField; private ListGridField startDateField; public Panel() { nameGridField = new ListGridField(); nameGridField.setName(TestDataSource.NAME_FIELD); nameGridField.setTitle("Name"); startDateField = new ListGridField(); startDateField.setName(TestDataSource.START_DATE_FIELD); startDateField.setTitle("Start date"); grid = new ListGrid(); grid.setWidth(500); grid.setHeight(500); grid.setCanEdit(true); grid.setEditByCell(true); grid.setDataSource(dataSource); grid.setAutoFetchData(true); grid.setFields(nameGridField, startDateField); Button button = new Button(); button.setTitle("Update cache"); button.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { dataSource.updateCacheTest(); } }); Button buttonFilter = new Button(); buttonFilter.setTitle("Filter"); buttonFilter.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { grid.filterData(new AdvancedCriteria(TestDataSource.START_DATE_FIELD, OperatorId.GREATER_OR_EQUAL, new Date())); } }); this.setMembers(button, buttonFilter, grid); } } public class TestDataSource extends DataSource { private static final String DS_UNIQUE_ID = "_TestDataSource"; public static final String UNIQUE_ID_FIELD = "uniqueIdField" + DS_UNIQUE_ID; public static final String NAME_FIELD = "nameField" + DS_UNIQUE_ID; public static final String START_DATE_FIELD = "startDateField" + DS_UNIQUE_ID; private TestDataSource() { DataSourceField uniqueId = new DataSourceField(); uniqueId.setName(UNIQUE_ID_FIELD); uniqueId.setPrimaryKey(true); uniqueId.setHidden(true); uniqueId.setType(FieldType.INTEGER); ListGridRecord node1 = new ListGridRecord(); node1.setAttribute(UNIQUE_ID_FIELD, 2l); node1.setAttribute(NAME_FIELD, "Charles Madigen"); node1.setAttribute(START_DATE_FIELD, new Date()); node1.setAttribute("division", "Marketing"); node1.setAttribute("department", 1); ListGridRecord node2 = new ListGridRecord(); node2.setAttribute(UNIQUE_ID_FIELD, 3l); node2.setAttribute(NAME_FIELD, "Rogine Leger"); node2.setAttribute(START_DATE_FIELD, new Date(new Date().getTime() - 7 * 24 * 3600 * 1000)); node2.setAttribute("division", "Marketing"); node2.setAttribute("department", 1); ListGridRecord node3 = new ListGridRecord(); node3.setAttribute(UNIQUE_ID_FIELD, 4l); node3.setAttribute(NAME_FIELD, "Gene Porter"); node3.setAttribute(START_DATE_FIELD, new Date(new Date().getTime() + 7 * 24 * 3600 * 1000)); node3.setAttribute("division", "Marketing"); node3.setAttribute("department", 1); this.setID(DS_UNIQUE_ID); this.setClientOnly(true); this.setFields(uniqueId); this.setCacheData(new ListGridRecord[] { node1, node2, node3 }); } public void updateCacheTest() { ListGridRecord node1 = new ListGridRecord(); node1.setAttribute(UNIQUE_ID_FIELD, 2l); node1.setAttribute(NAME_FIELD, "Charles Madigen" + new Date().getTime()); ListGridRecord node2 = new ListGridRecord(); node2.setAttribute(UNIQUE_ID_FIELD, 3l); node2.setAttribute(NAME_FIELD, "Rogine Leger" + new Date().getTime()); ListGridRecord node3 = new ListGridRecord(); node3.setAttribute(UNIQUE_ID_FIELD, 4l); node3.setAttribute(NAME_FIELD, "Gene Porter" + new Date().getTime()); DSResponse dsResponse = new DSResponse(); dsResponse.setData(new ListGridRecord[] { node1, node2, node3 }); dsResponse.setOperationType(DSOperationType.UPDATE); updateCaches(dsResponse); } } }