Sponsored Project Grid In Ext GWT Sample Code
- package com.extjs.gxt.samples.client.examples.grid;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import com.extjs.gxt.samples.resources.client.Resources;
- import com.extjs.gxt.samples.resources.client.TestData;
- import com.extjs.gxt.samples.resources.client.model.Task;
- import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
- import com.extjs.gxt.ui.client.data.ModelData;
- import com.extjs.gxt.ui.client.store.GroupingStore;
- import com.extjs.gxt.ui.client.store.ListStore;
- import com.extjs.gxt.ui.client.widget.ContentPanel;
- import com.extjs.gxt.ui.client.widget.LayoutContainer;
- import com.extjs.gxt.ui.client.widget.form.NumberField;
- import com.extjs.gxt.ui.client.widget.grid.CellEditor;
- import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
- import com.extjs.gxt.ui.client.widget.grid.ColumnData;
- import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
- import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
- import com.extjs.gxt.ui.client.widget.grid.Grid;
- import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
- import com.extjs.gxt.ui.client.widget.grid.GroupSummaryView;
- import com.extjs.gxt.ui.client.widget.grid.SummaryColumnConfig;
- import com.extjs.gxt.ui.client.widget.grid.SummaryRenderer;
- import com.extjs.gxt.ui.client.widget.grid.SummaryType;
- import com.extjs.gxt.ui.client.widget.layout.FitLayout;
- import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
- import com.google.gwt.i18n.client.NumberFormat;
- import com.google.gwt.user.client.Element;
- public class TotalsGridExample extends LayoutContainer {
- @Override
- protected void onRender(Element parent, int index) {
- super.onRender(parent, index);
- setLayout(new FlowLayout(10));
- List<Task> tasks = TestData.getTasks();
- GroupingStore<Task> store = new GroupingStore<Task>();
- store.groupBy("project");
- store.add(tasks);
- List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
- SummaryColumnConfig<Integer> desc = new SummaryColumnConfig<Integer>("description", "Task", 65);
- desc.setSummaryType(SummaryType.COUNT);
- desc.setSummaryRenderer(new SummaryRenderer() {
- public String render(Number value, Map<String, Number> data) {
- return value.intValue() > 1 ? "(" + value.intValue() + " Tasks)" : "(1 Task)";
- }
- });
- SummaryColumnConfig<Double> project = new SummaryColumnConfig<Double>("project", "Project", 55);
- SummaryColumnConfig<Double> due = new SummaryColumnConfig<Double>("due", "Due Date", 20);
- SummaryColumnConfig<Double> estimate = new SummaryColumnConfig<Double>("estimate", "Estimate", 20);
- estimate.setRenderer(new GridCellRenderer<Task>() {
- public String render(Task model, String property, ColumnData config, int rowIndex, int colIndex,
- ListStore<Task> store, Grid<Task> grid) {
- return model.get(property) + " hours";
- }
- });
- estimate.setSummaryType(SummaryType.SUM);
- estimate.setSummaryRenderer(new SummaryRenderer() {
- public String render(Number value, Map<String, Number> data) {
- return value.intValue() + " hours";
- }
- });
- estimate.setEditor(new CellEditor(new NumberField()));
- SummaryColumnConfig<Double> rate = new SummaryColumnConfig<Double>("rate", "Rate", 20);
- rate.setNumberFormat(NumberFormat.getCurrencyFormat());
- rate.setSummaryFormat(NumberFormat.getCurrencyFormat());
- rate.setSummaryType(SummaryType.AVG);
- rate.setAlignment(HorizontalAlignment.RIGHT);
- NumberField nf = new NumberField();
- nf.setAutoValidate(true);
- CellEditor ce = new CellEditor(nf);
- ce.setCancelOnEsc(true);
- rate.setEditor(ce);
- SummaryColumnConfig<Double> cost = new SummaryColumnConfig<Double>("cost", "Cost", 20);
- cost.setSummaryFormat(NumberFormat.getCurrencyFormat());
- cost.setSummaryType(new SummaryType<Double>() {
- @Override
- public Double render(Object v, ModelData m, String field, Map<String, Object> data) {
- if (v == null) {
- v = 0d;
- }
- Task task = (Task) m;
- return ((Double) v).doubleValue() + (task.getEstimate() * task.getRate());
- }
- });
- cost.setAlignment(HorizontalAlignment.RIGHT);
- cost.setRenderer(new GridCellRenderer<Task>() {
- public String render(Task model, String property, ColumnData config, int rowIndex, int colIndex,
- ListStore<Task> store, Grid<Task> grid) {
- Task task = (Task) model;
- return NumberFormat.getCurrencyFormat().format(task.getRate() * task.getEstimate());
- }
- });
- columns.add(desc);
- columns.add(project);
- columns.add(due);
- columns.add(estimate);
- columns.add(rate);
- columns.add(cost);
- ColumnModel cm = new ColumnModel(columns);
- GroupSummaryView summary = new GroupSummaryView();
- summary.setForceFit(true);
- summary.setShowGroupedColumn(false);
- EditorGrid<Task> grid = new EditorGrid<Task>(store, cm);
- grid.setBorders(true);
- grid.setView(summary);
- grid.getView().setShowDirtyCells(false);
- ContentPanel panel = new ContentPanel();
- panel.setHeading("Sponsored Projects");
- panel.setIcon(Resources.ICONS.table());
- panel.setCollapsible(true);
- panel.setFrame(true);
- panel.setSize(800, 450);
- panel.setLayout(new FitLayout());
- panel.add(grid);
- add(panel);
- }
- }
Comments
Post a Comment