Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2011 JBoss Inc
   * 
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License. You may obtain a copy of
   * the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
  */
 
 package org.uberfire.ext.widgets.common.client.tables;
 
 import java.util.List;
 
 import  com.github.gwtbootstrap.client.ui.Button;
 import  com.github.gwtbootstrap.client.ui.DataGrid;
 import  com.github.gwtbootstrap.client.ui.Label;
 import  com.google.gwt.core.client.GWT;
 import  com.google.gwt.dom.client.Style;
 import  com.google.gwt.event.shared.HandlerRegistration;
 import  com.google.gwt.uibinder.client.UiBinder;
 import  com.google.gwt.uibinder.client.UiField;
 import  com.google.gwt.user.cellview.client.Column;
 import  com.google.gwt.user.cellview.client.ColumnSortEvent;
 import  com.google.gwt.user.cellview.client.ColumnSortList;
 import  com.google.gwt.user.cellview.client.RowStyles;
 import  com.google.gwt.user.client.ui.Composite;
 import  com.google.gwt.user.client.ui.FlowPanel;
 import  com.google.gwt.user.client.ui.HasWidgets;
 import  com.google.gwt.user.client.ui.HorizontalPanel;
 import  com.google.gwt.user.client.ui.Widget;
 import  com.google.gwt.view.client.CellPreviewEvent;
 import  com.google.gwt.view.client.CellPreviewEvent.Handler;
 import  com.google.gwt.view.client.HasData;
 import  com.google.gwt.view.client.ProvidesKey;
 import  com.google.gwt.view.client.Range;
 import  com.google.gwt.view.client.RangeChangeEvent;
 import  com.google.gwt.view.client.RowCountChangeEvent;
 import  com.google.gwt.view.client.SelectionModel;
 import  org.uberfire.ext.services.shared.preferences.GridColumnPreference;
 import  org.uberfire.ext.services.shared.preferences.GridGlobalPreferences;
 import  org.uberfire.ext.services.shared.preferences.GridPreferencesStore;
 import  org.uberfire.ext.services.shared.preferences.UserDataGridPreferencesService;

A composite Widget that shows rows of data (not-paged) and a "column picker" to allow columns to be hidden from view. Columns can also be sorted.
 
 public class SimpleTable<T>
         extends Composite
         implements HasData<T> {
 
     interface Binder
             extends
             UiBinder<Widget, SimpleTable> {
 
     }
 
     private static Binder uiBinder = GWT.create( Binder.class );
 
     @UiField(provided = true)
     public Button columnPickerButton;
 
     @UiField(provided = true)
     public DataGrid<T> dataGrid;
 
     @UiField
     public HorizontalPanel toolbarContainer;
     @UiField
     public FlowPanel rightToolbar;
     @UiField
     public FlowPanel leftToolbar;
     @UiField
     public FlowPanel centerToolbar;
 
     private String emptyTableCaption;
 
     private ColumnPicker<T> columnPicker;
 
     private GridPreferencesStore gridPreferencesStore;
 
     @Inject
     private Caller<UserDataGridPreferencesService> preferencesService;
 
     @Inject
     private User identity;
 
     public SimpleTable() {
         = new DataGrid<T>();
        setupGridTable();
    }
    public SimpleTablefinal ProvidesKey<T> providesKey,
                        GridGlobalPreferences gridGlobalPreferences ) {
         = new DataGrid<T>( .,
                                    providesKey );
        this. = new GridPreferencesStore( gridGlobalPreferences );
        setupGridTable();
    }
    public SimpleTablefinal ProvidesKey<T> providesKey ) {
         = new DataGrid<T>( .,
                                    providesKey );
        setupGridTable();
    }
    private void setupGridTable() {
        .setStriped( true );
        .setBordered( true );
        .setSkipRowHoverCheck( false );
        .setSkipRowHoverStyleUpdate( false );
        .setWidth( "100%" );
        .setHeight( "300px" );
        .addStyleName( ..CSS().dataGrid() );
        setEmptyTableWidget();
         = new ColumnPicker<T>(  );
        
            @Override
            public void beforeColumnChanged() {}
            @Override
            public void afterColumnChanged() {
                if (  != null &&  != null ) {
                    List<GridColumnPreference> columnsState = .getColumnsState();
                    .resetGridColumnPreferences();
                    for ( GridColumnPreference gcp : columnsState ) {
                            .addGridColumnPreference( gcp );
                    }
                    .call( new RemoteCallback<Void>() {
                        @Override
                        public void callbackVoid response ) {
                        }
                    } ).saveGridPreferences(  );     
                }
            }
        } );
        initWidget( makeWidget() );
    }
    protected Widget makeWidget() {
        return .createAndBindUithis );
    }
    public void setEmptyTableCaptionfinal String emptyTableCaption ) {
        this. = emptyTableCaption;
        setEmptyTableWidget();
    }
    private void setEmptyTableWidget() {
        String caption = "-----";
        if ( !(  == null || .trim().isEmpty() ) ) {
            caption = ;
        }
        .setEmptyTableWidget( new Label( caption ) );
    }
    public void redraw() {
        .redraw();
    }
    public void refresh() {
        .setVisibleRangeAndClearData( .getVisibleRange(),
                                              true );
    }
    @Override
    public HandlerRegistration addCellPreviewHandlerfinal Handler<T> handler ) {
        return .addCellPreviewHandler( handler );
    }
    @Override
    public HandlerRegistration addRangeChangeHandlerfinal RangeChangeEvent.Handler handler ) {
        return .addRangeChangeHandler( handler );
    }
    @Override
    public HandlerRegistration addRowCountChangeHandlerfinal RowCountChangeEvent.Handler handler ) {
        return .addRowCountChangeHandler( handler );
    }
    public int getColumnIndex( Column<T, ?> column ) {
        return .getColumnIndex( column );
    }

    
Link a column sort handler to the table

Parameters:
handler
    public HandlerRegistration addColumnSortHandlerfinal ColumnSortEvent.Handler handler ) {
        return this..addColumnSortHandler( handler );
    }
    @Override
    public int getRowCount() {
        return .getRowCount();
    }
    @Override
    public Range getVisibleRange() {
        return .getVisibleRange();
    }
    @Override
    public boolean isRowCountExact() {
        return .isRowCountExact();
    }
    @Override
    public void setRowCountfinal int count ) {
        .setRowCount( count );
    }
    @Override
    public void setRowCountfinal int count,
                             final boolean isExact ) {
        .setRowCount( count,
                              isExact );
    }
    @Override
    public void setVisibleRangefinal int start,
                                 final int length ) {
        .setVisibleRange( start,
                                  length );
    }
    @Override
    public void setVisibleRangefinal Range range ) {
        .setVisibleRange( range );
    }
    public void setPreferencesServiceCaller<UserDataGridPreferencesService> preferencesService ) {
        this. = preferencesService;
    }
    @Override
    public SelectionModel<? super T> getSelectionModel() {
        return .getSelectionModel();
    }
    @Override
    public T getVisibleItemfinal int indexOnPage ) {
        return .getVisibleItem( indexOnPage );
    }
    @Override
    public int getVisibleItemCount() {
        return .getVisibleItemCount();
    }
    @Override
    public Iterable<T> getVisibleItems() {
        return .getVisibleItems();
    }
    @Override
    public void setRowDatafinal int start,
                            final List<? extends T> values ) {
        .setRowData( start,
                             values );
    }
    public void setRowDatafinal List<? extends T> values ) {
        .setRowData( values );
    }
    @Override
    public void setSelectionModelfinal SelectionModel<? super T> selectionModel ) {
        .setSelectionModel( selectionModel );
    }
    public void setSelectionModel( final SelectionModel<? super T> selectionModel,
                                   final CellPreviewEvent.Handler<T> selectionEventManager ) {
        .setSelectionModel( selectionModel,
                                    selectionEventManager );
    }
    @Override
    public void setVisibleRangeAndClearDatafinal Range range,
                                             final boolean forceRangeChangeEvent ) {
        .setVisibleRangeAndClearData( range,
                                              forceRangeChangeEvent );
    }
    public void addColumns(List<ColumnMeta<T>> columnMetas) {
        for (ColumnMeta columnMeta : columnMetas) {
            if (columnMeta.getHeader() == nullcolumnMeta.setHeader(getColumnHeader(columnMeta.getCaption(), columnMeta.getColumn()));
        }
        .addColumns(columnMetas);
    }
    public void addColumn( Column<T, ?> column,
                           String caption ) {
        addColumn(columncaptiontrue);
    }
    public void addColumn( Column<T, ?> column,
                           String caption,
                           boolean visible) {
        ColumnMeta<T> columnMeta = new ColumnMeta<T>(columncaptionvisible);
        addColumn(columnMeta);
    }
    protected void addColumn(ColumnMeta<T> columnMeta) {
        if (columnMeta.getHeader() == nullcolumnMeta.setHeader(getColumnHeader(columnMeta.getCaption(), columnMeta.getColumn()));
        .addColumn(columnMeta);
    }
    protected ResizableMovableHeader<T> getColumnHeader(String caption, Column column) {
        final ResizableMovableHeader header = new ResizableMovableHeader<T>( caption,
                ,
                ,
                column ) {
            @Override
            protected int getTableBodyHeight() {
                return .getOffsetHeight();
            }
        };
        header.addColumnChangedHandlernew ColumnChangedHandler() {
            @Override
            public void afterColumnChanged() {
                if (  != null &&  != null ) {
                    List<GridColumnPreference> columnsState = .getColumnsState();
                    .resetGridColumnPreferences();
                    for ( GridColumnPreference gcp : columnsState ) {
                            .addGridColumnPreference( gcp );
                    }
                    .call( new RemoteCallback<Void>() {
                        @Override
                        public void callbackVoid response ) {
                        }
                    } ).saveGridPreferences(  );
                }
            }
            @Override
            public void beforeColumnChanged() {
            }
        } );
        return header;
    }
    public void setColumnWidthfinal Column<T, ?> column,
                                final double width,
                                final Style.Unit unit ) {
        .setColumnWidth( column,
                                 width,
                                 unit );
    }
    @Override
    public void setHeightString height ) {
        .setHeight( height );
    }
    @Override
    public void setPixelSizeint width,
                              int height ) {
        .setPixelSize( widthheight );
    }
    @Override
    public void setSizeString width,
                         String height ) {
        .setSize( widthheight );
    }
    @Override
    public void setWidthString width ) {
        .setWidth( width );
    }
    public void setToolBarVisibleboolean visible ) {
        .setVisible( visible );
    }
    public ColumnSortList getColumnSortList() {
        return .getColumnSortList();
    }
    public HasWidgets getToolbar() {
        return ;
    }
    public HasWidgets getRightToolbar() {
        return ;
    }
    public HasWidgets getLeftToolbar() {
        return ;
    }
    public HasWidgets getCenterToolbar() {
        return ;
    }
    public void setRowStyles( RowStyles<T> styles ) {
        .setRowStyles( styles );
    }
    public void setGridPreferencesStore( GridPreferencesStore gridPreferences ) {
        // I need to update my local copy of the preferences 
        //   if I would like to compare with the current state for changes
        this. = gridPreferences;
        .setGridPreferencesStoregridPreferences );
    }
New to GrepCode? Check out our FAQ X