Package org.gwtoolbox.sample.widget.client.table

Source Code of org.gwtoolbox.sample.widget.client.table.DataGridSamplePane$RecordPanel

package org.gwtoolbox.sample.widget.client.table;

import java.util.List;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.*;
import org.gwtoolbox.commons.types.client.Gender;
import org.gwtoolbox.ioc.core.client.annotation.Component;
import org.gwtoolbox.ioc.core.client.annotation.Order;
import org.gwtoolbox.sample.widget.client.SamplePanel;
import static org.gwtoolbox.widget.client.panel.LayoutUtils.addGap;
import org.gwtoolbox.widget.client.WidgetImages;
import org.gwtoolbox.widget.client.button.SimpleButton;
import org.gwtoolbox.widget.client.data.DataTypes;
import org.gwtoolbox.widget.client.data.Record;
import org.gwtoolbox.widget.client.notification.AbstractCallback;
import org.gwtoolbox.widget.client.panel.LayoutUtils;
import org.gwtoolbox.widget.client.panel.contentpanel.ContentPanel;
import org.gwtoolbox.widget.client.table.basic.BasicTable;
import org.gwtoolbox.widget.client.table.basic.selection.CellSelectionFilter;
import org.gwtoolbox.widget.client.table.basic.selection.SingleCellSelectionModel;
import org.gwtoolbox.widget.client.table.datagrid.OldDataGrid;
import org.gwtoolbox.widget.client.table.datagrid.FieldGroup;
import org.gwtoolbox.widget.client.table.datagrid.RecordRowDecorator;
import org.gwtoolbox.widget.client.table.datagrid.column.Column;
import org.gwtoolbox.widget.client.table.datagrid.column.ColumnSpec;
import org.gwtoolbox.widget.client.table.datagrid.column.FieldColumn;
import org.gwtoolbox.widget.client.table.datagrid.column.RowNumberValueExtractor;
import org.gwtoolbox.widget.client.table.datagrid.selection.SingleRecordSelectionModel;
import org.gwtoolbox.widget.client.table.datagrid.selection.MultiRecordSelectionModel;
import org.gwtoolbox.widget.client.table.datagrid.selection.MultiRecordSelection;

/**
* @author Uri Boness
*/
@Component
@Order(2)
@TableSample
public class DataGridSamplePane extends Composite implements SamplePanel {

    private final OldDataGrid grid;

    @SuppressWarnings({"unchecked"})
    public DataGridSamplePane() {

        Column indexColumn = new Column("#", new RowNumberValueExtractor(), DataTypes.INT, "30px", null);
        FieldColumn idColumn = new FieldColumn("ID", "id", DataTypes.INT, "50px", HasHorizontalAlignment.ALIGN_CENTER);
        FieldColumn genderColumn = new FieldColumn("Gender", "gender", DataTypes.GENDER, "100px", HasHorizontalAlignment.ALIGN_CENTER);
        genderColumn.setSortable(true);
        genderColumn.setGroupable(true);
        FieldColumn nameColumn = new FieldColumn("Name", "name", DataTypes.TEXT, "150px");
        nameColumn.setSortable(true);
        FieldColumn ageColumn = new FieldColumn("Age", "age", DataTypes.INT, null, HasHorizontalAlignment.ALIGN_CENTER);
        ageColumn.setSortable(true);

        ColumnSpec columns = new ColumnSpec()
                .addColumn(indexColumn)
                .addColumn(idColumn)
                .addColumn(genderColumn)
                .addColumn(nameColumn)
                .addColumn(ageColumn);

        grid = new OldDataGrid(columns);
        grid.setVisible(false);

        grid.setWidth("100%");
        grid.setHeight("100%");
        grid.setDataSource(new PersonDataSource());
        grid.fetch(new AbstractCallback<Void>() {
            public void onSuccess(Void v) {
                grid.setVisible(true);
            }
        });

        final ContentPanel contentPanel = new ContentPanel("People", WidgetImages.Instance.get().icon_Table().createImage());
        contentPanel.setWidth("700px");
        contentPanel.setContent(grid);
        contentPanel.setCollapsable(true);

        HorizontalPanel top = new HorizontalPanel();
        top.add(contentPanel);
        addGap(top, "20px");

        final SimplePanel selectionPane = new SimplePanel();
        selectionPane.setWidth("500px");
        top.add(selectionPane);
   
        VerticalPanel main = new VerticalPanel();
        main.add(top);
        main.setCellWidth(top, "100%");

        addGap(main, "20px");

        SimpleButton highlightButton = new SimpleButton("Highlight All Females");
        highlightButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                grid.setRowDecorator(new RecordRowDecorator<Record>() {
                    public void decorateRow(int row, Record record, BasicTable.BasicTableRowFormatter rowFormatter) {
                        if (record.getValue("gender") == Gender.FEMALE) {
                            rowFormatter.addStyleName(row, "row-highlight");
                        }
                    }
                });
            }
        });
        SimpleButton clearHighlightButton = new SimpleButton("Clear Hightlighting");
        clearHighlightButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                grid.clearRowDecorator();
            }
        });
        main.add(LayoutUtils.hBuilder().add(highlightButton).addGap("20px").add(clearHighlightButton).getPanel());

        addGap(main, "20px");

        SimpleButton groupButton = new SimpleButton("Group By Gender");
        groupButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                FieldGroup group = new FieldGroup("Gender", "gender");
                group.setShowCounts(true);
                grid.setGroupBy(group);
            }
        });
        SimpleButton clearGroupingButton = new SimpleButton("Clear Grouping");
        clearGroupingButton.addClickListener(new ClickListener() {
            public void onClick(Widget sender) {
                grid.setGroupBy(null);
            }
        });
        main.add(LayoutUtils.hBuilder().add(groupButton).addGap("20px").add(clearGroupingButton).getPanel());

        addGap(main, "20px");

        SimpleButton singleSelectionButton = new SimpleButton("Set Single Selection Model");
        singleSelectionButton.addClickListener(new ClickListener() {
            public void onClick(Widget widget) {
                applySingleSelection(grid, selectionPane);
                selectionPane.setVisible(true);
            }
        });
        SimpleButton multiSelectionButton = new SimpleButton("Set Multi Selection Model");
        multiSelectionButton.addClickListener(new ClickListener() {
            public void onClick(Widget widget) {
                applyMultiSelection(grid, selectionPane);
                selectionPane.setVisible(true);
            }
        });
        SimpleButton clearSelectionButton = new SimpleButton("Clear Selection Model");
        clearSelectionButton.addClickListener(new ClickListener() {
            public void onClick(Widget widget) {
                grid.clearSelectionModel();
                selectionPane.setVisible(false);
            }
        });
        main.add(LayoutUtils.hBuilder().add(singleSelectionButton).addGap("20px").add(multiSelectionButton).addGap("20px").add(clearSelectionButton).getPanel());

        addGap(main, "20px");

        RadioButton listRadio = new RadioButton("mode", "List");
        listRadio.addClickListener(new ClickListener() {
            public void onClick(Widget widget) {
                grid.setPageSize(null);
            }
        });
        listRadio.setChecked(true);
        RadioButton pageRadio = new RadioButton("mode", "Page");
        pageRadio.addClickListener(new ClickListener() {
            public void onClick(Widget widget) {
                grid.setPageSize(10);
            }
        });
        main.add(LayoutUtils.hBuilder().add(new Label("Mode:")).addGap("20px").add(listRadio).addGap("20px").add(pageRadio).getPanel());


        SimplePanel sp = new SimplePanel();
        sp.setWidget(main);
        initWidget(sp);

    }

    public String getName() {
        return "OldDataGrid";
    }

    public Widget getContentWidget() {
        return this;
    }

    public void reset() {

    }

    //============================================== Helper Methods ====================================================

    private void applySingleSelection(OldDataGrid grid, SimplePanel selectionPane) {
        SingleRecordSelectionModel selectionModel = new SingleRecordSelectionModel();
        grid.setSelectionModel(selectionModel);

        final RecordPanel recordPanel = new RecordPanel();
        recordPanel.setWidth("250px");
        selectionModel.addListener(new SingleRecordSelectionModel.Listener() {
            public void selectionCleared() {
                recordPanel.reset(null);
            }

            public void recordSelected(Record record) {
                recordPanel.reset(record);
            }
        });
        selectionPane.setWidget(recordPanel);
    }

    private void applyMultiSelection(OldDataGrid grid, SimplePanel selectionPane) {
        MultiRecordSelectionModel selectionModel = new MultiRecordSelectionModel();
        grid.setSelectionModel(selectionModel);

        final RecordsPanel recordsPanel = new RecordsPanel();
        selectionModel.addListener(new MultiRecordSelectionModel.Listener() {

            public void recordSelected(Record record, MultiRecordSelection model) {
                recordsPanel.reset(model.getSelectedRecords());
            }

            public void recordUnselected(Record record, MultiRecordSelection model) {
                recordsPanel.reset(model.getSelectedRecords());
            }

            public void selectionCleared() {
                recordsPanel.reset(null);
            }

        });
        selectionPane.setWidget(recordsPanel);
    }

    //============================================== Inner Classes =====================================================

     private class RecordPanel extends Composite {

        private BasicTable main;

        private RecordPanel() {
            main = new BasicTable();
            main.setWidth("100%");
            main.setHeaderText(0, "Field");
            main.setHeaderText(1, "Value");
            SingleCellSelectionModel selectionModel = new SingleCellSelectionModel();
            selectionModel.setSelectionFilter(new CellSelectionFilter() {
                public boolean isSelectable(int row, int column) {
                    return column != 0;
                }
            });
            main.setSelectionModel(selectionModel);
            CaptionPanel cp = new CaptionPanel("Selected Person", true);
            cp.setContentWidget(main);

            cp.setSize("100%", "200px");

            initWidget(cp);
        }

        public void reset(Record record) {
            main.removeAllRows();
            if (record == null) {
                return;
            }
            int row = 0;
            for (String field : record.getFields()) {
                main.setText(row, 0, field);
                main.setText(row, 1, String.valueOf(record.getValue(field)));
                main.getCellFormatter().setStyleName(row, 0, "FieldColumn");
                row++;
            }
        }

    }

    private class RecordsPanel extends Composite {

        private BasicTable main;

        private RecordsPanel() {
            main = new BasicTable();
            main.setWidth("100%");
            main.setHeaderText(0, "ID");
            main.setHeaderText(1, "Name");
            main.setHeaderText(2, "Age");
            main.setHeaderText(3, "Gender");

            CaptionPanel cp = new CaptionPanel("Selected People", true);
            cp.setContentWidget(main);

            cp.setWidth("100%");

            initWidget(cp);
        }

        public void reset(List<Record> records) {
            main.removeAllRows();
            if (records == null || records.isEmpty()) {
                return;
            }
            int row = 0;
            for (Record record : records) {
                main.setText(row, 0, String.valueOf(record.getLongValue("id")));
                main.setText(row, 1, record.getStringValue("name"));
                main.setText(row, 2, String.valueOf(record.getIntValue("age")));
                main.setText(row, 3, String.valueOf(record.getValue("gender")));
                row++;
            }
        }

    }

}
TOP

Related Classes of org.gwtoolbox.sample.widget.client.table.DataGridSamplePane$RecordPanel

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.