Example usage for com.google.gwt.i18n.client NumberFormat getCurrencyFormat

List of usage examples for com.google.gwt.i18n.client NumberFormat getCurrencyFormat

Introduction

In this page you can find the example usage for com.google.gwt.i18n.client NumberFormat getCurrencyFormat.

Prototype

public static NumberFormat getCurrencyFormat() 

Source Link

Document

Provides the standard currency format for the default locale.

Usage

From source file:com.google.gwt.examples.NumberFormatExample.java

public void onModuleLoad() {
    NumberFormat fmt = NumberFormat.getDecimalFormat();
    double value = 12345.6789;
    String formatted = fmt.format(value);
    // Prints 1,2345.6789 in the default locale
    GWT.log("Formatted string is" + formatted);

    // Turn a string back into a double
    value = NumberFormat.getDecimalFormat().parse("12345.6789");
    GWT.log("Parsed value is" + value);

    // Scientific notation
    value = 12345.6789;//from w ww .  j  a v  a 2 s  .c  o m
    formatted = NumberFormat.getScientificFormat().format(value);
    // prints 1.2345E4 in the default locale
    GWT.log("Formatted string is" + formatted);

    // Currency
    fmt = NumberFormat.getCurrencyFormat();
    formatted = fmt.format(123456.7899);
    // prints US$123,456.79 in the default locale or $123,456.79 in the en_US
    // locale
    GWT.log("Formatted currency is" + formatted);

    // Custom format
    value = 12345.6789;
    formatted = NumberFormat.getFormat("000000.000000").format(value);
    // prints 012345.678900 in the default locale
    GWT.log("Formatted string is" + formatted);
}

From source file:com.google.gwt.sample.expenses.client.ExpenseDetails.java

License:Apache License

private CellTable<ExpenseProxy> initTable() {
    CellTable.Resources resources = GWT.create(TableResources.class);
    table = new CellTable<ExpenseProxy>(100, resources, Expenses.EXPENSE_RECORD_KEY_PROVIDER);
    Styles.Common common = Styles.common();

    table.addColumnStyleName(0, common.spacerColumn());
    table.addColumnStyleName(1, common.expenseDetailsDateColumn());
    table.addColumnStyleName(3, common.expenseDetailsCategoryColumn());
    table.addColumnStyleName(4, common.expenseDetailsAmountColumn());
    table.addColumnStyleName(5, common.expenseDetailsApprovalColumn());
    table.addColumnStyleName(6, common.spacerColumn());

    // Spacer column.
    table.addColumn(new SpacerColumn<ExpenseProxy>());

    // Created column.
    GetValue<ExpenseProxy, Date> createdGetter = new GetValue<ExpenseProxy, Date>() {
        public Date getValue(ExpenseProxy object) {
            return object.getCreated();
        }//ww w  . j a  v a  2s . c o  m
    };
    defaultComparator = createColumnComparator(createdGetter, false);
    Comparator<ExpenseProxy> createdDesc = createColumnComparator(createdGetter, true);
    addColumn(table, "Created", new DateCell(DateTimeFormat.getFormat("MMM dd yyyy")), createdGetter,
            defaultComparator, createdDesc);
    lastComparator = defaultComparator;

    // Description column.
    addColumn(table, "Description", new TextCell(), new GetValue<ExpenseProxy, String>() {
        public String getValue(ExpenseProxy object) {
            return object.getDescription();
        }
    });

    // Category column.
    addColumn(table, "Category", new TextCell(), new GetValue<ExpenseProxy, String>() {
        public String getValue(ExpenseProxy object) {
            return object.getCategory();
        }
    });

    // Amount column.
    final GetValue<ExpenseProxy, Double> amountGetter = new GetValue<ExpenseProxy, Double>() {
        public Double getValue(ExpenseProxy object) {
            return object.getAmount();
        }
    };
    Comparator<ExpenseProxy> amountAsc = createColumnComparator(amountGetter, false);
    Comparator<ExpenseProxy> amountDesc = createColumnComparator(amountGetter, true);
    addColumn(table, "Amount", new NumberCell(NumberFormat.getCurrencyFormat()),
            new GetValue<ExpenseProxy, Number>() {
                public Number getValue(ExpenseProxy object) {
                    return amountGetter.getValue(object);
                }
            }, amountAsc, amountDesc);

    // Dialog box to obtain a reason for a denial
    denialPopup.addCloseHandler(new CloseHandler<PopupPanel>() {
        public void onClose(CloseEvent<PopupPanel> event) {
            String reasonDenied = denialPopup.getReasonDenied();
            ExpenseProxy record = denialPopup.getExpenseRecord();
            if (reasonDenied == null || reasonDenied.length() == 0) {
                // Clear the view data.
                final Object key = items.getKey(record);
                approvalCell.clearViewData(key);

                // We need to redraw the table to reset the select box.
                syncCommit(record, null);
            } else {
                updateExpenseRecord(record, "Denied", reasonDenied);
            }

            // Return focus to the table.
            table.setFocus(true);
        }
    });

    // Approval column.
    approvalCell = new ApprovalCell();
    Column<ExpenseProxy, String> approvalColumn = addColumn(table, "Approval Status", approvalCell,
            new GetValue<ExpenseProxy, String>() {
                public String getValue(ExpenseProxy object) {
                    return object.getApproval();
                }
            });
    approvalColumn.setFieldUpdater(new FieldUpdater<ExpenseProxy, String>() {
        public void update(int index, final ExpenseProxy object, String value) {
            if ("Denied".equals(value)) {
                denialPopup.setExpenseRecord(object);
                denialPopup.setReasonDenied(object.getReasonDenied());
                denialPopup.popup();
            } else {
                updateExpenseRecord(object, value, "");
            }
        }
    });

    // Spacer column.
    table.addColumn(new SpacerColumn<ExpenseProxy>());

    return table;
}

From source file:com.google.gwt.sample.expenses.client.ExpenseReportDetails.java

License:Apache License

private CellTable<ExpenseProxy> initTable() {
    CellTable.Resources resources = GWT.create(TableResources.class);
    table = new CellTable<ExpenseProxy>(100, resources, new EntityProxyKeyProvider<ExpenseProxy>());
    Styles.Common common = Styles.common();

    table.addColumnStyleName(0, common.spacerColumn());
    table.addColumnStyleName(1, common.expenseDetailsDateColumn());
    table.addColumnStyleName(3, common.expenseDetailsCategoryColumn());
    table.addColumnStyleName(4, common.expenseDetailsAmountColumn());
    table.addColumnStyleName(5, common.expenseDetailsApprovalColumn());
    table.addColumnStyleName(6, common.spacerColumn());

    // Spacer column.
    table.addColumn(new SpacerColumn<ExpenseProxy>());

    // Created column.
    GetValue<ExpenseProxy, Date> createdGetter = new GetValue<ExpenseProxy, Date>() {
        public Date getValue(ExpenseProxy object) {
            return object.getCreated();
        }/*w w  w  . j a va  2  s .  c om*/
    };
    defaultComparator = createColumnComparator(createdGetter, false);
    Comparator<ExpenseProxy> createdDesc = createColumnComparator(createdGetter, true);
    addColumn(table, "Created", new DateCell(DateTimeFormat.getFormat("MMM dd yyyy")), createdGetter,
            defaultComparator, createdDesc);
    lastComparator = defaultComparator;

    // Description column.
    addColumn(table, "Description", new TextCell(), new GetValue<ExpenseProxy, String>() {
        public String getValue(ExpenseProxy object) {
            return object.getDescription();
        }
    });

    // Category column.
    addColumn(table, "Category", new TextCell(), new GetValue<ExpenseProxy, String>() {
        public String getValue(ExpenseProxy object) {
            return object.getCategory();
        }
    });

    // Amount column.
    final GetValue<ExpenseProxy, Double> amountGetter = new GetValue<ExpenseProxy, Double>() {
        public Double getValue(ExpenseProxy object) {
            return object.getAmount();
        }
    };
    Comparator<ExpenseProxy> amountAsc = createColumnComparator(amountGetter, false);
    Comparator<ExpenseProxy> amountDesc = createColumnComparator(amountGetter, true);
    addColumn(table, "Amount", new NumberCell(NumberFormat.getCurrencyFormat()),
            new GetValue<ExpenseProxy, Number>() {
                public Number getValue(ExpenseProxy object) {
                    return amountGetter.getValue(object);
                }
            }, amountAsc, amountDesc);

    // Dialog box to obtain a reason for a denial
    denialPopup.addCloseHandler(new CloseHandler<PopupPanel>() {
        public void onClose(CloseEvent<PopupPanel> event) {
            String reasonDenied = denialPopup.getReasonDenied();
            ExpenseProxy record = denialPopup.getExpenseRecord();
            if (reasonDenied == null || reasonDenied.length() == 0) {
                // Clear the view data.
                final Object key = items.getKey(record);
                approvalCell.clearViewData(key);

                // We need to redraw the table to reset the select box.
                syncCommit(record, null);
            } else {
                updateExpenseRecord(record, "Denied", reasonDenied);
            }

            // Return focus to the table.
            table.setFocus(true);
        }
    });

    // Approval column.
    approvalCell = new ApprovalCell();
    Column<ExpenseProxy, String> approvalColumn = addColumn(table, "Approval Status", approvalCell,
            new GetValue<ExpenseProxy, String>() {
                public String getValue(ExpenseProxy object) {
                    return object.getApproval();
                }
            });
    approvalColumn.setFieldUpdater(new FieldUpdater<ExpenseProxy, String>() {
        public void update(int index, final ExpenseProxy object, String value) {
            if ("Denied".equals(value)) {
                denialPopup.setExpenseRecord(object);
                denialPopup.setReasonDenied(object.getReasonDenied());
                denialPopup.popup();
            } else {
                updateExpenseRecord(object, value, "");
            }
        }
    });

    // Spacer column.
    table.addColumn(new SpacerColumn<ExpenseProxy>());

    return table;
}

From source file:com.google.gwt.sample.i18n.client.NumberFormatExampleController.java

License:Apache License

@Override
protected String doGetPattern(String patternKey) {
    if ("currency".equals(patternKey)) {
        return NumberFormat.getCurrencyFormat().getPattern();
    }//w w w.j  a va2 s  . c  om

    if ("decimal".equals(patternKey)) {
        return NumberFormat.getDecimalFormat().getPattern();
    }

    if ("scientific".equals(patternKey)) {
        return NumberFormat.getScientificFormat().getPattern();
    }

    if ("percent".equals(patternKey)) {
        return NumberFormat.getPercentFormat().getPattern();
    }

    throw new IllegalArgumentException("Unknown pattern key '" + patternKey + "'");
}

From source file:com.google.gwt.sample.showcase.client.content.i18n.CwNumberFormat.java

License:Apache License

/**
 * Update the selected pattern based on the pattern in the list.
 *//*from w w w . ja v  a 2 s  . co  m*/
@ShowcaseSource
private void updatePattern() {
    switch (patternList.getSelectedIndex()) {
    case 0:
        activeFormat = NumberFormat.getDecimalFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 1:
        activeFormat = NumberFormat.getCurrencyFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 2:
        activeFormat = NumberFormat.getScientificFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 3:
        activeFormat = NumberFormat.getPercentFormat();
        patternBox.setText(activeFormat.getPattern());
        patternBox.setEnabled(false);
        break;
    case 4:
        patternBox.setEnabled(true);
        String pattern = patternBox.getText();
        try {
            activeFormat = NumberFormat.getFormat(pattern);
        } catch (IllegalArgumentException e) {
            showErrorMessage(constants.cwNumberFormatInvalidPattern());
            return;
        }
        break;
    }

    // Update the formatted value
    updateFormattedValue();
}

From source file:com.gwtext.sample.charts.client.yui.IncomeChartSample.java

License:Open Source License

public Panel getViewPanel() {
    if (panel == null) {
        panel = new Panel();
        panel.setLayout(new VerticalLayout(15));

        MemoryProxy proxy = new MemoryProxy(getData());
        RecordDef recordDef = new RecordDef(
                new FieldDef[] { new IntegerFieldDef("year"), new IntegerFieldDef("revenue"),
                        new IntegerFieldDef("expense"), new IntegerFieldDef("income") });

        ArrayReader reader = new ArrayReader(recordDef);
        final Store store = new Store(proxy, reader);
        store.load();/*ww  w. j  av a  2 s.c  om*/

        SeriesDefX incomeSeries = new SeriesDefX("Income", "income");
        incomeSeries.setType(ChartType.LINE);

        SeriesDef[] seriesDef = new SeriesDef[] {

                new SeriesDefX("Revenue", "revenue"), new SeriesDefX("Expense", "expense"), incomeSeries };

        NumericAxis currencyAxis = new NumericAxis();
        //currencyAxis.setLabelFunction("formatCurrencyAxisLabel");

        final BarChart chart = new BarChart();
        chart.setTitle("Income Chart");
        chart.setWMode("transparent");
        chart.setStore(store);
        chart.setSeries(seriesDef);
        chart.setYField("year");
        chart.setXAxis(currencyAxis);
        chart.setExpressInstall("js/yui/assets/expressinstall.swf");
        chart.setWidth(500);
        chart.setHeight(400);

        panel.add(chart);

        Renderer renderer = new Renderer() {
            public String render(Object value, CellMetadata cellMetadata, Record record, int rowIndex,
                    int colNum, Store store) {
                NumberFormat nf = NumberFormat.getCurrencyFormat();
                return nf.format(((Number) value).doubleValue());
            }
        };
        ColumnConfig yearConfig = new ColumnConfig("Year", "year", 100, true);
        NumberField yearField = new NumberField();
        yearField.setAllowDecimals(false);
        yearField.setSelectOnFocus(true);
        yearConfig.setEditor(new GridEditor(yearField));

        NumberField revenueField = new NumberField();
        revenueField.setSelectOnFocus(true);

        ColumnConfig revenueConfig = new ColumnConfig("Revenue", "revenue", 130, true);
        revenueConfig.setEditor(new GridEditor(revenueField));
        revenueConfig.setRenderer(renderer);

        NumberField expenseField = new NumberField();
        expenseField.setSelectOnFocus(true);

        ColumnConfig expenseConfig = new ColumnConfig("Expense", "expense", 130, true);
        expenseConfig.setEditor(new GridEditor(expenseField));
        expenseConfig.setRenderer(renderer);

        NumberField incomeField = new NumberField();
        incomeField.setSelectOnFocus(true);

        ColumnConfig incomeConfig = new ColumnConfig("Income", "income", 130, true);
        incomeConfig.setEditor(new GridEditor(incomeField));
        incomeConfig.setRenderer(renderer);

        ColumnModel columnModel = new ColumnModel(
                new ColumnConfig[] { yearConfig, revenueConfig, expenseConfig, incomeConfig });

        EditorGridPanel grid = new EditorGridPanel();
        grid.setStore(store);
        grid.setClicksToEdit(1);
        grid.setColumnModel(columnModel);
        grid.setWidth(500);

        grid.addEditorGridListener(new EditorGridListenerAdapter() {
            public void onAfterEdit(GridPanel grid, Record record, String field, Object newValue,
                    Object oldValue, int rowIndex, int colIndex) {
                store.commitChanges();
                chart.refresh();
            }
        });

        panel.add(grid);

    }
    return panel;
}

From source file:com.gwtext.sample.charts.client.yui.LineChartSample.java

License:Open Source License

public Panel getViewPanel() {
    if (panel == null) {
        panel = new Panel();
        panel.setLayout(new VerticalLayout(15));

        MemoryProxy proxy = new MemoryProxy(getData());
        RecordDef recordDef = new RecordDef(new FieldDef[] { new StringFieldDef("month"),
                new FloatFieldDef("rent"), new FloatFieldDef("utilities") });

        ArrayReader reader = new ArrayReader(recordDef);
        final Store store = new Store(proxy, reader);
        store.load();/*from ww w .ja  v a 2  s.co m*/

        SeriesDefY[] seriesDef = new SeriesDefY[] {

                new SeriesDefY("Rent", "rent"), new SeriesDefY("Utilities", "utilities")

        };

        NumericAxis currencyAxis = new NumericAxis();
        currencyAxis.setMinimum(800);
        currencyAxis.setLabelFunction("formatCurrencyAxisLabel");
        final LineChart chart = new LineChart();
        chart.setTitle("Monthly Expenses");
        chart.setWMode("transparent");
        chart.setStore(store);
        chart.setSeries(seriesDef);
        chart.setXField("month");
        chart.setYAxis(currencyAxis);
        chart.setDataTipFunction("getDataTipText");
        chart.setExpressInstall("js/yui/assets/expressinstall.swf");
        chart.setWidth(500);
        chart.setHeight(400);

        panel.add(chart);

        Renderer renderer = new Renderer() {
            public String render(Object value, CellMetadata cellMetadata, Record record, int rowIndex,
                    int colNum, Store store) {
                NumberFormat nf = NumberFormat.getCurrencyFormat();
                return nf.format(((Number) value).doubleValue());
            }
        };
        ColumnConfig monthConfig = new ColumnConfig("Month", "month", 150, true);
        TextField monthField = new TextField();
        monthField.setSelectOnFocus(true);
        monthConfig.setEditor(new GridEditor(monthField));

        NumberField rentField = new NumberField();
        rentField.setSelectOnFocus(true);

        ColumnConfig rentConfig = new ColumnConfig("Rent", "rent", 100, true);
        rentConfig.setEditor(new GridEditor(rentField));
        rentConfig.setRenderer(renderer);

        NumberField utilitiesField = new NumberField();
        utilitiesField.setSelectOnFocus(true);

        ColumnConfig utilitiesConfig = new ColumnConfig("Utilities", "utilities", 100, true);
        utilitiesConfig.setEditor(new GridEditor(utilitiesField));
        utilitiesConfig.setRenderer(renderer);

        ColumnModel columnModel = new ColumnModel(
                new ColumnConfig[] { monthConfig, rentConfig, utilitiesConfig });

        EditorGridPanel grid = new EditorGridPanel();
        grid.setStore(store);
        grid.setClicksToEdit(1);
        grid.setColumnModel(columnModel);
        grid.setWidth(360);

        grid.addEditorGridListener(new EditorGridListenerAdapter() {
            public void onAfterEdit(GridPanel grid, Record record, String field, Object newValue,
                    Object oldValue, int rowIndex, int colIndex) {
                store.commitChanges();
                chart.refresh();
            }
        });

        panel.add(grid);

    }
    return panel;
}

From source file:com.msco.mil.client.com.sencha.gxt.explorer.client.grid.AbstractGridEditingExample.java

License:sencha.com license

@Override
public Widget asWidget() {
    ColumnConfig<Plant, String> cc1 = new ColumnConfig<Plant, String>(properties.name(), 220, "Name");

    ColumnConfig<Plant, String> cc2 = new ColumnConfig<Plant, String>(properties.light(), 130, "Light");

    DateCell dateCell = new DateCell(DateTimeFormat.getFormat("yyyy MMM dd"));

    ColumnConfig<Plant, Date> cc3 = new ColumnConfig<Plant, Date>(properties.available(), 95, "Date");

    cc3.setCell(dateCell);//from  www .  j  a  va2 s.  c  om

    ColumnConfig<Plant, Boolean> cc4 = new ColumnConfig<Plant, Boolean>(properties.indoor(), 55, "Indoor");
    cc4.setCell(new SimpleSafeHtmlCell<Boolean>(new AbstractSafeHtmlRenderer<Boolean>() {
        @Override
        public SafeHtml render(Boolean object) {
            return SafeHtmlUtils.fromString(object ? "True" : "False");
        }
    }));

    ColumnConfig<Plant, Double> cc5 = new ColumnConfig<Plant, Double>(properties.price(), 100, "Price");
    cc5.setAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    cc5.setCell(new SimpleSafeHtmlCell<Double>(new AbstractSafeHtmlRenderer<Double>() {
        @Override
        public SafeHtml render(Double object) {
            return SafeHtmlUtils.fromString(NumberFormat.getCurrencyFormat().format(object));
        }
    }));

    List<ColumnConfig<Plant, ?>> l = new ArrayList<ColumnConfig<Plant, ?>>();
    l.add(cc1);
    l.add(cc2);
    l.add(cc5);
    l.add(cc3);
    l.add(cc4);

    ColumnModel<Plant> cm = new ColumnModel<Plant>(l);

    final ListStore<Plant> store = new ListStore<Plant>(properties.key());
    store.addAll(TestData.getPlants());

    grid = new Grid<Plant>(store, cm);
    grid.getView().setAutoExpandColumn(cc1);

    // EDITING//
    final GridEditing<Plant> editing = createGridEditing(grid);
    editing.addEditor(cc1, new TextField());

    SimpleComboBox<Light> combo = new SimpleComboBox<Light>(new StringLabelProvider<Light>());
    combo.setPropertyEditor(new PropertyEditor<Light>() {

        @Override
        public Light parse(CharSequence text) throws ParseException {
            return Light.parseString(text.toString());
        }

        @Override
        public String render(Light object) {
            return object == null ? Light.SUNNY.toString() : object.toString();
        }
    });
    combo.setTriggerAction(TriggerAction.ALL);
    combo.add(Light.SUNNY);
    combo.add(Light.MOSTLYSUNNY);
    combo.add(Light.SUNORSHADE);
    combo.add(Light.MOSTLYSHADY);
    combo.add(Light.SHADE);
    combo.setForceSelection(true);
    editing.addEditor(cc2, new Converter<String, Light>() {

        @Override
        public String convertFieldValue(Light object) {
            return object == null ? Light.SUNNY.toString() : object.toString();
        }

        @Override
        public Light convertModelValue(String object) {
            return Light.parseString(object);
        }

    }, combo);

    DateField dateField = new DateField(
            new DateTimePropertyEditor(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT)));
    dateField.setClearValueOnParseError(false);
    editing.addEditor(cc3, dateField);

    CheckBox checkField = new CheckBox();
    editing.addEditor(cc4, checkField);

    // column 5 is not editable

    // EDITING//

    FramedPanel cp = new FramedPanel();
    cp.setHeadingText("Editable Grid Example");
    cp.setPixelSize(600, 400);
    cp.addStyleName("margin-10");

    ToolBar toolBar = new ToolBar();

    TextButton add = new TextButton("Add Plant");
    add.addSelectHandler(new SelectHandler() {

        @Override
        public void onSelect(SelectEvent event) {
            Plant plant = new Plant();
            plant.setName("New Plant 1");
            plant.setLight("Mostly Shady");
            plant.setPrice(0);
            plant.setAvailable(new DateWrapper().clearTime().asDate());
            plant.setIndoor(false);

            editing.cancelEditing();
            store.add(0, plant);
            editing.startEditing(new GridCell(0, 0));
        }
    });

    toolBar.add(add);

    VerticalLayoutContainer con = new VerticalLayoutContainer();
    con.setBorders(true);
    con.add(toolBar, new VerticalLayoutData(1, -1));
    con.add(grid, new VerticalLayoutData(1, 1));

    cp.setWidget(con);

    cp.setButtonAlign(BoxLayoutPack.CENTER);
    cp.addButton(new TextButton("Reset", new SelectHandler() {

        @Override
        public void onSelect(SelectEvent event) {
            store.rejectChanges();
        }
    }));

    cp.addButton(new TextButton("Save", new SelectHandler() {

        @Override
        public void onSelect(SelectEvent event) {
            store.commitChanges();
        }
    }));

    return cp;
}

From source file:com.msco.mil.client.com.sencha.gxt.explorer.client.grid.AggregationGridExample.java

License:sencha.com license

@Override
public Widget asWidget() {

    StockProperties props = GWT.create(StockProperties.class);
    final NumberFormat numberFormat = NumberFormat.getFormat("0.00");
    final NumberFormat currency = NumberFormat.getCurrencyFormat();

    List<ColumnConfig<Stock, ?>> configs = new ArrayList<ColumnConfig<Stock, ?>>();

    ColumnConfig<Stock, String> nameColumn = new ColumnConfig<Stock, String>(props.name(), 200, "Company");
    configs.add(nameColumn);//  w  w  w .  ja  v a  2s  .  c  o m

    ColumnConfig<Stock, String> symbolColumn = new ColumnConfig<Stock, String>(props.symbol(), 100, "Symbol");
    configs.add(symbolColumn);

    ColumnConfig<Stock, Double> lastColumn = new ColumnConfig<Stock, Double>(props.last(), 100, "Last");

    lastColumn.setCell(new PropertyDisplayCell<Double>(new DoublePropertyEditor(currency)));
    configs.add(lastColumn);

    ColumnConfig<Stock, Double> changeColumn = new ColumnConfig<Stock, Double>(props.change(), 100, "Change");

    changeColumn.setCell(new PropertyDisplayCell<Double>(new DoublePropertyEditor(numberFormat)) {
        @Override
        public void render(com.google.gwt.cell.client.Cell.Context context, Double value, SafeHtmlBuilder sb) {
            String style = value < 0 ? "red" : "green";
            sb.appendHtmlConstant("<span style='color:" + style + "'>");
            super.render(context, value, sb);
            sb.appendHtmlConstant("</span>");
        }
    });
    configs.add(changeColumn);

    ColumnConfig<Stock, Date> dateColumn = new ColumnConfig<Stock, Date>(props.lastTrans(), 100, "Date");
    dateColumn.setCell(new DateCell(DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT)));
    configs.add(dateColumn);

    final ListStore<Stock> store = new ListStore<Stock>(props.key());
    store.addAll(TestData.getStocks());

    ColumnModel<Stock> cm = new ColumnModel<Stock>(configs);

    cm.addHeaderGroup(0, 0, new HeaderGroupConfig("Stock Information", 1, 2));
    cm.addHeaderGroup(0, 2, new HeaderGroupConfig("Stock Performance", 1, 2));

    AggregationRowConfig<Stock> averages = new AggregationRowConfig<Stock>();
    averages.setRenderer(nameColumn, new AggregationSafeHtmlRenderer<Stock>("Average"));

    averages.setRenderer(lastColumn,
            new AggregationNumberSummaryRenderer<Stock, Number>(currency, new AvgSummaryType<Number>()));

    averages.setRenderer(changeColumn,
            new AggregationNumberSummaryRenderer<Stock, Number>(numberFormat, new AvgSummaryType<Number>()));
    cm.addAggregationRow(averages);

    AggregationRowConfig<Stock> max = new AggregationRowConfig<Stock>();
    max.setRenderer(nameColumn, new AggregationSafeHtmlRenderer<Stock>("Maximum"));

    max.setRenderer(lastColumn,
            new AggregationNumberSummaryRenderer<Stock, Number>(currency, new MaxSummaryType<Number>()));

    max.setRenderer(changeColumn,
            new AggregationNumberSummaryRenderer<Stock, Number>(numberFormat, new MaxSummaryType<Number>()));
    cm.addAggregationRow(max);

    AggregationRowConfig<Stock> min = new AggregationRowConfig<Stock>();
    min.setRenderer(nameColumn, new AggregationSafeHtmlRenderer<Stock>("Minimum"));

    min.setRenderer(lastColumn,
            new AggregationNumberSummaryRenderer<Stock, Number>(currency, new MinSummaryType<Number>()));

    min.setRenderer(changeColumn,
            new AggregationNumberSummaryRenderer<Stock, Number>(numberFormat, new MinSummaryType<Number>()));
    cm.addAggregationRow(min);

    FramedPanel cp = new FramedPanel();
    cp.setCollapsible(true);
    cp.setAnimCollapse(false);
    cp.setHeadingText("Aggregation Rows");
    cp.setPixelSize(600, 350);
    cp.addStyleName("margin-10");

    Grid<Stock> grid = new Grid<Stock>(store, cm);
    grid.setBorders(true);
    grid.getView().setAutoExpandColumn(nameColumn);
    cp.add(grid);

    return cp;
}

From source file:com.msco.mil.client.com.sencha.gxt.explorer.client.grid.LiveGroupSummaryExample.java

License:sencha.com license

@Override
public Widget asWidget() {
    List<Task> tasks = TestData.getTasks();

    TaskProperties properties = GWT.create(TaskProperties.class);
    final ListStore<Task> store = new ListStore<Task>(properties.key());
    store.addAll(tasks);//from  w  w w  .j a v  a 2 s.  c  o m

    SummaryColumnConfig<Task, String> desc = new SummaryColumnConfig<Task, String>(properties.description(), 65,
            "Task");
    desc.setSummaryType(new SummaryType.CountSummaryType<String>());
    desc.setSummaryRenderer(new SummaryRenderer<Task>() {

        @Override
        public SafeHtml render(Number value, Map<ValueProvider<? super Task, ?>, Number> data) {
            return SafeHtmlUtils
                    .fromTrustedString(value.intValue() > 1 ? "(" + value.intValue() + " Tasks)" : "(1 Task)");
        }
    });

    final SummaryColumnConfig<Task, String> project = new SummaryColumnConfig<Task, String>(
            properties.project(), 55, "Project");

    SummaryColumnConfig<Task, String> due = new SummaryColumnConfig<Task, String>(properties.due(), 20, "Due");

    SummaryColumnConfig<Task, Double> estimate = new SummaryColumnConfig<Task, Double>(properties.estimate(),
            20, "Estimate");
    estimate.setSummaryType(new SummaryType.SumSummaryType<Double>());
    estimate.setSummaryRenderer(new SummaryRenderer<Task>() {
        @Override
        public SafeHtml render(Number value, Map<ValueProvider<? super Task, ?>, Number> data) {
            return SafeHtmlUtils.fromTrustedString(value + " hours");
        }
    });
    estimate.setCell(new AbstractCell<Double>() {
        @Override
        public void render(com.google.gwt.cell.client.Cell.Context context, Double value, SafeHtmlBuilder sb) {
            sb.appendHtmlConstant(value + " hours");
        }
    });

    SummaryColumnConfig<Task, Double> rate = new SummaryColumnConfig<Task, Double>(properties.rate(), 20,
            "Rate");
    rate.setAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    rate.setCell(new NumberCell<Double>(NumberFormat.getCurrencyFormat()));
    rate.setSummaryType(new SummaryType.AvgSummaryType<Double>());
    rate.setSummaryFormat(NumberFormat.getCurrencyFormat());

    SummaryColumnConfig<Task, Task> cost = new SummaryColumnConfig<Task, Task>(
            new IdentityValueProvider<Task>(), 20, "Cost");
    cost.setColumnClassSuffix("cost");
    cost.setAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    cost.setCell(new AbstractCell<Task>() {
        @Override
        public void render(com.google.gwt.cell.client.Cell.Context context, Task value, SafeHtmlBuilder sb) {
            sb.appendHtmlConstant(
                    NumberFormat.getCurrencyFormat().format(value.getRate() * value.getEstimate()));
        }
    });
    cost.setSummaryFormat(NumberFormat.getCurrencyFormat());
    cost.setSummaryType(new SummaryType<Task, Double>() {

        @Override
        public <M> Double calculate(List<? extends M> m, ValueProvider<? super M, Task> valueProvider) {
            double value = 0;
            for (int i = 0; i < m.size(); i++) {
                Task t = valueProvider.getValue(m.get(i));
                value = value + (t.getRate() * t.getEstimate());
            }
            return value;
        }

    });
    cost.setComparator(new Comparator<Task>() {
        @Override
        public int compare(Task o1, Task o2) {
            return Double.valueOf(o1.getRate() * o1.getEstimate()).compareTo(o2.getRate() * o2.getEstimate());
        }
    });

    List<ColumnConfig<Task, ?>> cfgs = new ArrayList<ColumnConfig<Task, ?>>();
    cfgs.add(desc);
    cfgs.add(project);
    cfgs.add(due);
    cfgs.add(estimate);
    cfgs.add(rate);
    cfgs.add(cost);

    ColumnModel<Task> cm = new ColumnModel<Task>(cfgs);

    final GroupSummaryView<Task> summary = new GroupSummaryView<Task>();
    summary.setForceFit(true);
    summary.setShowGroupedColumn(false);

    Grid<Task> grid = new Grid<Task>(store, cm);
    grid.setBorders(true);
    grid.setView(summary);
    grid.getView().setShowDirtyCells(false);

    Scheduler.get().scheduleFinally(new ScheduledCommand() {
        @Override
        public void execute() {
            summary.groupBy(project);
        }
    });

    FramedPanel panel = new FramedPanel();
    panel.setHeadingHtml("Sponsored Projects");
    panel.setSize("800", "450");
    panel.add(grid);
    panel.addStyleName("margin-10");
    panel.setCollapsible(true);
    return panel;
}