/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ import com.smartgwt.client.data.AdvancedCriteria; import com.smartgwt.client.data.Criterion; import com.smartgwt.client.data.Operator; import com.smartgwt.client.types.OperatorId; import com.smartgwt.client.types.OperatorValueType; import com.smartgwt.client.types.FieldType; import com.smartgwt.client.widgets.Button; 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.form.FilterBuilder; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.sample.showcase.client.data.PresetDateRangeXmlDS; import com.smartgwt.sample.showcase.client.data.RecentDateRangeItem; import com.google.gwt.core.client.EntryPoint; public class GridDateRangePresetsSample implements EntryPoint { public void onModuleLoad() { VLayout layout = new VLayout(8); layout.setWidth100(); layout.setHeight100(); layout.setMembersMargin(10); // --------------------------------------------------------------------------------------- // Date Range (Presets) Label dateRangeLabel = new Label(); dateRangeLabel.setWidth(650); dateRangeLabel.setHeight(25); dateRangeLabel.setContents("RecentDateRangeItem (ListGrid FilterEditor)"); dateRangeLabel.setBaseStyle("exampleSeparator"); PresetDateRangeXmlDS dataSource = PresetDateRangeXmlDS.getInstance(); // Create a ListGrid displaying data from the worldDS final ListGrid grid1 = new ListGrid(); grid1.setWidth(650); grid1.setDataSource(dataSource); grid1.setShowFilterEditor(true); RecentDateRangeItem rangeItem = new RecentDateRangeItem(); rangeItem.setWidth("*"); rangeItem.setShowTitle(false); Operator operator = new Operator(); operator.setID("recentDateRange"); operator.setTitle("in recent date range"); operator.setValueType(OperatorValueType.CUSTOM); operator.setEditorType("com.smartgwt.sample.showcase.client.data.RecentDateRangeItem"); FieldType[] types = new FieldType[1]; types[0] = FieldType.DATE; dataSource.addSearchOperator(operator, types); ListGridField orderDate = new ListGridField("orderDate", "Order Date"); orderDate.setFilterEditorProperties(rangeItem); orderDate.setCanFilter(true); grid1.setUseAllDataSourceFields(true); grid1.setFields(orderDate); grid1.setAutoFetchData(true); // --------------------------------------------------------------------------------------- // FilterBuilder Example Label filterBuilderLabel = new Label(); filterBuilderLabel.setWidth(650); filterBuilderLabel.setHeight(25); filterBuilderLabel.setContents("RecentDateRangeItem (FilterBuilder)"); filterBuilderLabel.setBaseStyle("exampleSeparator"); final FilterBuilder filterBuilder = new FilterBuilder(); filterBuilder.setWidth(650); filterBuilder.setDataSource(dataSource); AdvancedCriteria ac = new AdvancedCriteria(OperatorId.AND); Criterion c = new Criterion(); c.setFieldName("orderDate"); ac.addCriteria(c); filterBuilder.setCriteria(ac); final ListGrid grid2 = new ListGrid(); Button searchButton = new Button("Filter"); searchButton.setAutoFit(true); searchButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { AdvancedCriteria criteria = filterBuilder.getCriteria(); grid2.fetchData(criteria); } }); grid2.setWidth(650); grid2.setDataSource(dataSource); grid2.setAutoFetchData(true); grid2.setShowFilterEditor(false); grid2.setUseAllDataSourceFields(true); layout.setMembers(dateRangeLabel, grid1, filterBuilderLabel, filterBuilder, searchButton, grid2); layout.draw(); } @Override protected boolean shouldWrapViewPanel() { return true; } }