/**
* Sencha GXT 3.0.0b - Sencha for GWT
* Copyright(c) 2007-2012, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.explorer.client.grid;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.google.gwt.cell.client.DateCell;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.examples.resources.client.TestData;
import com.sencha.gxt.examples.resources.client.model.Stock;
import com.sencha.gxt.examples.resources.client.model.StockProperties;
import com.sencha.gxt.explorer.client.model.Example.Detail;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
import com.sencha.gxt.widget.core.client.grid.Grid;
import com.sencha.gxt.widget.core.client.grid.GroupingView;
@Detail(name = "Grouping Grid", icon = "grouping", category = "Grid", classes = {Stock.class, StockProperties.class})
public class GroupingGridExample implements EntryPoint, IsWidget {
@Override
public Widget asWidget() {
StockProperties properties = GWT.create(StockProperties.class);
ListStore<Stock> store = new ListStore<Stock>(properties.key());
store.addAll(TestData.getCompanies());
List<ColumnConfig<Stock, ?>> cfgs = new ArrayList<ColumnConfig<Stock, ?>>();
ColumnConfig<Stock, String> name = new ColumnConfig<Stock, String>(properties.name(), 60);
name.setHeader("Name");
name.setCell(new TextCell());
cfgs.add(name);
ColumnConfig<Stock, Double> price = new ColumnConfig<Stock, Double>(properties.open(), 20);
price.setHeader("Price");
cfgs.add(price);
ColumnConfig<Stock, Double> change = new ColumnConfig<Stock, Double>(properties.change(), 20);
change.setHeader("Change");
cfgs.add(change);
final ColumnConfig<Stock, String> industry = new ColumnConfig<Stock, String>(properties.industry(), 20);
industry.setHeader("Industry");
cfgs.add(industry);
final ColumnConfig<Stock, Date> lastUpdated = new ColumnConfig<Stock, Date>(properties.lastTrans(), 20);
lastUpdated.setHeader("Last Updated");
lastUpdated.setCell(new DateCell(DateTimeFormat.getFormat("MM/dd/yyyy")));
cfgs.add(lastUpdated);
ColumnModel<Stock> cm = new ColumnModel<Stock>(cfgs);
final GroupingView<Stock> view = new GroupingView<Stock>();
view.setShowGroupedColumn(false);
view.setForceFit(true);
Grid<Stock> grid = new Grid<Stock>(store, cm);
grid.setView(view);
view.groupBy(industry);
ContentPanel panel = new ContentPanel();
panel.setHeadingHtml("Grouping Example");
panel.setSize("700", "450");
panel.add(grid);
panel.addStyleName("margin-10");
panel.setCollapsible(true);
return panel;
}
@Override
public void onModuleLoad() {
RootPanel.get().add(this);
}
}