GWT Java

/*
 * Ext GWT - Ext for GWT
 * Copyright(c) 2007-2009, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */
 
 
package com.google.gwt.sample.hello.client;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.data.BaseModelData;
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.core.client.EntryPoint;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.RootPanel;
public class Hello implements EntryPoint {
  public void onModuleLoad() {
    RootPanel.get().add(new TotalsGridExample());
  }
}
class TotalsGridExample extends LayoutContainer {
  @Override
  protected void onRender(Element parent, int index) {
    super.onRender(parent, index);
    setLayout(new FlowLayout(10));
    List tasks = getTasks();
    GroupingStore store = new GroupingStore();
    store.groupBy("project");
    store.add(tasks);
    List columns = new ArrayList();
    SummaryColumnConfig desc = new SummaryColumnConfig("description", "Task", 65);
    desc.setSummaryType(SummaryType.COUNT);
    desc.setSummaryRenderer(new SummaryRenderer() {
      public String render(Number value, Map data) {
        return value.intValue() > 1 ? "(" + value.intValue() + " Tasks)" : "(1 Task)";
      }
    });
    SummaryColumnConfig project = new SummaryColumnConfig("project", "Project", 55);
    SummaryColumnConfig due = new SummaryColumnConfig("due", "Due Date", 20);
    SummaryColumnConfig estimate = new SummaryColumnConfig("estimate", "Estimate", 20);
    estimate.setRenderer(new GridCellRenderer() {
      public String render(Task model, String property, ColumnData config, int rowIndex, int colIndex,
          ListStore store, Grid grid) {
        return model.get(property) + " hours";
      }
    });
    estimate.setSummaryType(SummaryType.SUM);
    estimate.setSummaryRenderer(new SummaryRenderer() {
      public String render(Number value, Map data) {
        return value.intValue() + " hours";
      }
    });
    estimate.setEditor(new CellEditor(new NumberField()));
    SummaryColumnConfig rate = new SummaryColumnConfig("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 cost = new SummaryColumnConfig("cost", "Cost", 20);
    cost.setSummaryFormat(NumberFormat.getCurrencyFormat());
    cost.setSummaryType(new SummaryType() {
      @Override
      public Double render(Object v, ModelData m, String field, Map 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() {
      public String render(Task model, String property, ColumnData config, int rowIndex, int colIndex,
          ListStore store, Grid 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 grid = new EditorGrid(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);
  }
  public static List getTasks() {
    List tasks = new ArrayList();
    tasks.add(new Task(100, "Ext Forms: Field Anchoring", 112,
        "Integrate 2.0 Forms with 2.0 Layouts", 6, 150, "06/24/2007"));
    tasks.add(new Task(100, "Ext Forms: Field Anchoring", 113, "Implement AnchorLayout",
        4, 150, "06/25/2007"));
    tasks.add(new Task(100, "Ext Forms: Field Anchoring", 114,
        "Add support for multiple types of anchors", 4, 150, "06/27/2007"));
    tasks.add(new Task(100, "Ext Forms: Field Anchoring", 115, "Testing and debugging",
        8, 0, "06/29/2007"));
    tasks.add(new Task(101, "Ext Grid: Single-level Grouping", 101,
        "Add required rendering 'hooks' to GridView", 6, 100, "07/01/2007"));
    tasks.add(new Task(101, "Ext Grid: Single-level Grouping", 102,
        "Extend GridView and override rendering functions", 4, 0, "07/03/2007"));
    tasks.add(new Task(101, "Ext Grid: Single-level Grouping", 103,
        "Extend Store with grouping functionality", 4, 100, "07/04/2007"));
    tasks.add(new Task(101, "Ext Grid: Single-level Grouping", 121,
        "Default CSS Styling", 2, 1000, "07/05/2007"));
    tasks.add(new Task(101, "Ext Grid: Single-level Grouping", 104,
        "Testing and debugging", 6, 100, "07/06/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 105, "Ext Grid plugin integration",
        4, 125, "07/01/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 106,
        "Summary creation during rendering phase", 6, 125, "07/02/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 107,
        "Dynamic summary updates in editor grids", 6, 125, "07/05/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 108, "Remote summary integration",
        4, 125, "07/05/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 109,
        "Summary renderers and calculators", 4, 125, "07/06/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 110,
        "Integrate summaries with GroupingView", 10, 125, "07/11/2007"));
    tasks.add(new Task(102, "Ext Grid: Summary Rows", 111, "Testing and debugging", 8,
        125, "07/15/2007"));
    return tasks;
  }
}
class Task extends BaseModelData {
  public Task(int id, String project, int taskId, String desc, double estimate, double rate,
      String due) {
    set("id", id);
    set("project", project);
    set("taskId", taskId);
    set("description", desc);
    set("estimate", estimate);
    set("rate", rate);
    set("due", due);
  }
  public Double getEstimate() {
    return (Double) get("estimate");
  }
  public double getRate() {
    return (Double) get("rate");
  }
}
   
  
Ext-GWT.zip( 4,297 k)