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

Source Code of org.gwtoolbox.sample.widget.client.table.BasicTableSamplePane

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

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import org.gwtoolbox.commons.ui.client.ggrowl.GGrowl;
import org.gwtoolbox.ioc.core.client.annotation.Component;
import org.gwtoolbox.ioc.core.client.annotation.Order;
import org.gwtoolbox.sample.widget.client.SamplePanel;
import org.gwtoolbox.widget.client.table.basic.BasicTable;
import org.gwtoolbox.widget.client.table.basic.Cell;
import org.gwtoolbox.widget.client.table.basic.ColumnSortingListener;
import org.gwtoolbox.widget.client.table.basic.selection.MultiCellSelection;
import org.gwtoolbox.widget.client.table.basic.selection.MultiRowSelection;
import org.gwtoolbox.widget.client.table.basic.selection.SingleCellSelection;
import org.gwtoolbox.widget.client.table.basic.selection.SingleRowSelection;
import org.gwtoolbox.widget.client.table.basic.selection.SingleCellSelectionModel;
import org.gwtoolbox.widget.client.table.basic.selection.SingleRowSelectionModel;
import org.gwtoolbox.widget.client.table.basic.selection.MultiRowSelectionModel;
import org.gwtoolbox.widget.client.table.basic.selection.MultiCellSelectionModel;

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

    private final BasicTable table;

    public BasicTableSamplePane() {

        table = new BasicTable();
        table.setWidth("100%");

        table.setHeaderText(0, "Sortable Column");
        table.setHeaderText(1, "Column 1");
        table.setHeaderWidget(2, new Label("Header 2"));

        table.getColumnFormatter().setWidth(0, "150px");
        table.getHeaderFormatter().setSortable(0, true);
        table.getColumnFormatter().setWidth(1, "200px");

        addData();
        table.insertToolRow(5, new Label("Group"));

        final Label messageLabel = new Label();
        table.addColumnSortingListener(new ColumnSortingListener() {
            public void sortChanged(int column, boolean asc) {
                messageLabel.setText("Sorting by column " + column + ", asc: " + asc);
            }
        });

        Button clearSelectionButton = new Button("Clear Selection");
        clearSelectionButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                table.getSelectionModel().getSelection().clear();
            }
        });

        Button clearDataButton = new Button("Clear Data");
        clearDataButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                table.removeAllRows();
            }
        });

        Button addDataButton = new Button("Add Data");
        addDataButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                addData();
            }
        });

        Button singleCellSelectionButton = new Button("Set Single Cell Selection");
        singleCellSelectionButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                SingleCellSelectionModel selectionModel = new SingleCellSelectionModel();
                table.setSelectionModel(selectionModel);
                selectionModel.addListener(new SingleCellSelection.Listener() {
                    public void selectionCleared() {
                        messageLabel.setText("");
                    }

                    public void cellSelected(int row, int column) {
                        messageLabel.setText("Selected cell (row: " + row + ", col: " + column + ")");
                    }
                });
                GGrowl.showMessage("Selection Model Changed", "Single cell selection is enabled. Hold the Ctrl key to unselect a cell", 5000);
            }
        });

        Button singleRowSelectionButton = new Button("Set Single Row Selection");
        singleRowSelectionButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                SingleRowSelectionModel selectionModel = new SingleRowSelectionModel();
                table.setSelectionModel(selectionModel);
                selectionModel.addListener(new SingleRowSelection.Listener() {
                    public void selectionCleared() {
                        messageLabel.setText("");
                    }

                    public void rowSelected(int row) {
                        messageLabel.setText("Selected row: " + row);
                    }
                });
                GGrowl.showMessage("Selection Model Changed", "Single row selection is enabled. Hold the Ctrl key to unselect a row", 5000);
            }
        });

        Button multiRowSelectionButton = new Button("Set Multi-Row Selection");
        multiRowSelectionButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                MultiRowSelectionModel selectionModel = new MultiRowSelectionModel();
                table.setSelectionModel(selectionModel);
                selectionModel.addListener(new MultiRowSelection.Listener() {
                    public void selectionCleared() {
                        messageLabel.setText("");
                    }

                    public void rowSelected(int row, MultiRowSelection model) {
                        printSelection(model);
                    }

                    public void rowUnselected(int row, MultiRowSelection model) {
                        printSelection(model);
                    }

                    private void printSelection(MultiRowSelection model) {
                        StringBuilder builder = new StringBuilder();
                        for (int selectedRow : model.getSelectedRows()) {
                            if (builder.length() > 0) {
                                builder.append(", ");
                            }
                            builder.append(selectedRow);
                        }
                        messageLabel.setText("Selected rows: " + builder.toString());
                    }
                });
                GGrowl.showMessage("Selection Model Changed", "Multi-row selection is enabled. Hold the Ctrl key to un/select multiple rows", 5000);
            }
        });

        Button multiCellSelectionButton = new Button("Set Multi-Cell Selection");
        multiCellSelectionButton.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent clickEvent) {
                MultiCellSelectionModel selectionModel = new MultiCellSelectionModel();
                table.setSelectionModel(selectionModel);
                selectionModel.addListener(new MultiCellSelection.Listener() {
                    public void selectionCleared() {
                        messageLabel.setText("");
                    }

                    public void cellSelected(int row, int column, MultiCellSelection model) {
                        printSelection(model);
                    }

                    public void cellUnselected(int row, int column, MultiCellSelection model) {
                        printSelection(model);
                    }

                    private void printSelection(MultiCellSelection model) {
                        StringBuilder builder = new StringBuilder();
                        for (Cell selectedCell : model.getSelectedCells()) {
                            if (builder.length() > 0) {
                                builder.append(", ");
                            }
                            builder.append(selectedCell);
                        }
                        messageLabel.setText("Selected cells: " + builder.toString());
                    }
                });
                GGrowl.showMessage("Selection Model Changed", "Multi-cell selection is enabled. Hold the Ctrl key to un/select multiple cells", 5000);
            }
        });

        VerticalPanel main = new VerticalPanel();

//        ContentPanel tablePane = new ContentPanel("BasicTable");
//        tablePane.setContent(icon_Table);
//        tablePane.setCollapsable(true);
//        tablePane.setWidth("700px");
//        main.add(tablePane);

        main.add(table);
//        main.setCellWidth(icon_Table, "100%");
        main.add(messageLabel);
        main.add(clearSelectionButton);

        addGap(main, "10px");
        main.add(clearDataButton);
        main.add(addDataButton);

        addGap(main, "10px");
        main.add(singleCellSelectionButton);
        main.add(singleRowSelectionButton);
        main.add(multiRowSelectionButton);
        main.add(multiCellSelectionButton);

        initWidget(main);
    }

    public void addData() {
        for (int row = 0; row < 10; row++) {
            for (int column = 0; column < 3; column++) {
                String text = "Cell " + row + ", " + column;
                if (column == 2) {
                    text = "This is a very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very veryvery very very very very very very very very very very very very very very very very very very very long text";
                }
                table.setWidet(row, column, new Label(text));
            }
        }
    }

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

    public Widget getContentWidget() {
        return this;
    }

    public void reset() {

    }

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

    private void addGap(VerticalPanel panel, String height) {
        Label gap = new Label();
        panel.add(gap);
        panel.setCellHeight(gap, height);
    }
}
TOP

Related Classes of org.gwtoolbox.sample.widget.client.table.BasicTableSamplePane

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.