Package demo.gxt.client

Source Code of demo.gxt.client.LiveSummaryGrid$Task

package demo.gxt.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.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.google.gwt.core.client.EntryPoint;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.ui.RootPanel;

public class LiveSummaryGrid implements EntryPoint {

  /**
   * Constructor
   */
  public LiveSummaryGrid() {

  }

  /**
   * This is the entry point method.
   */
  public void onModuleLoad() {

    System.out.println("Inside");
    List<Task> tasks = 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;

        /* Change made here */

        //return NumberFormat.getCurrencyFormat().format(task.getRate() * task.getEstimate());
        if( rowIndex > 0 ) {
          return NumberFormat.getCurrencyFormat().format(
              task.getRate() * ((Double) store.getModels().get(rowIndex - 1).get("estimate")));
        }
        else {
          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.setCollapsible(true);
    panel.setFrame(true);
    panel.setSize(800, 450);
    panel.setLayout(new FitLayout());
    panel.add(grid);
    RootPanel.get().add(panel);

  }

  public List<Task> getTasks() {
    List<Task> tasks = new ArrayList<Task>();
    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, 300, "06/27/2007"));
    tasks.add(new Task(100, "Ext Forms: Field Anchoring", 115, "Testing and debugging", 8, 150, "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, 350, "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, 325, "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) {
      setId(id);
      setProject(project);
      setTaskId(taskId);
      setDescription(desc);
      setEstimate(estimate);
      setRate(rate);
      setDue(due);
    }

    public Integer getId() {
      return (Integer) get("id");
    }

    public void setId(Integer id) {
      set("id", id);
    }

    public Integer geTaskId() {
      return (Integer) get("taskId");
    }

    public void setTaskId(Integer taskId) {
      set("taskId", taskId);
    }

    public String getProject() {
      return (String) get("project");
    }

    public void setProject(String project) {
      set("project", project);
    }

    public String getDue() {
      return (String) get("due");
    }

    public void setDue(String due) {
      set("due", due);
    }

    public String getDescription() {
      return (String) get("description");
    }

    public void setDescription(String project) {
      set("description", project);
    }

    public Double getEstimate() {
      return (Double) get("estimate");
    }

    public void setEstimate(double estimate) {
      set("estimate", new Double(estimate));
    }

    public Double getRate() {
      return (Double) get("rate");
    }

    public void setRate(double rate) {
      set("rate", new Double(rate));
    }
  }
}
TOP

Related Classes of demo.gxt.client.LiveSummaryGrid$Task

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.