Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.uberfire.ext.widgets.common.client.tables;
 
 import java.util.List;
 
 import  com.github.gwtbootstrap.client.ui.DataGrid;
public class SortableHeaderGroup<T extends Comparable> {
    private final DataGrid<T> dataGrid;
    // TODO change List into Deque after upgrade to java 6
    private List<SortableHeader<T, ?>> sortOrderList = new LinkedList<SortableHeader<T, ?>>();
    public SortableHeaderGroup( DataGrid<T> dataGrid ) {
        this. = dataGrid;
    }
    public void headerClickedSortableHeader<T, ?> header ) {
        updateSortOrderheader );
        .redrawHeaders();
        updateData();
    }
    private void updateSortOrderSortableHeader<T, ?> header ) {
        int index = .indexOfheader );
        if ( index == 0 ) {
            if ( header.getSortDirection() != . ) {
                header.setSortDirection. );
            } else {
                header.setSortDirection. );
            }
        } else {
            // Remove it if it's already sorted on this header later
            if ( index > 0 ) {
                .removeindex );
            }
            header.setSortDirection. );
            // Bring this header to front // Deque.addFirst(sortableHeader)
            .add( 0, header );
            // Update sortIndexes
            int sortIndex = 0;
            for ( SortableHeader<T, ?> sortableHeader :  ) {
                sortableHeader.setSortIndexsortIndex );
                sortIndex++;
            }
        }
    }
    private void updateData() {
        // TODO If paging is used, this should be a back-end call with a sorting meta data parameter
        List<T> displayedItems = new ArrayList<T>( .getDisplayedItems() );
        Collections.sortdisplayedItemsnew Comparator<T>() {
            public int compare( T leftRow,
                                T rightRow ) {
                for ( SortableHeader<T, ?> sortableHeader :  ) {
                    Comparable leftColumnValue = sortableHeader.getColumn().getValue( leftRow );
                    Comparable rightColumnValue = sortableHeader.getColumn().getValue( rightRow );
                    int comparison = ( leftColumnValue == rightColumnValue ) ? 0
                            : ( leftColumnValue == null ) ? -1
                            : ( rightColumnValue == null ) ? 1
                            : leftColumnValue.compareTorightColumnValue );
                    if ( comparison != 0 ) {
                        switch ( sortableHeader.getSortDirection() ) {
                            case :
                                break;
                            case :
                                comparison = -comparison;
                                break;
                            default:
                                throw new IllegalStateException"Sorting can only be enabled for ASCENDING or" +
                                                                         " DESCENDING, not sortDirection (" + sortableHeader.getSortDirection() + ") ." );
                        }
                        return comparison;
                    }
                }
                return leftRow.compareTorightRow );
            }
        } );
        .setRowData( 0, displayedItems );
        .redraw();
    }
New to GrepCode? Check out our FAQ X