Hi everyone,

I'm currently trying to implement column sorting in a cell table for my 
data, however my data doesn't sort and the sort arrow only moves when I 
click on a row after clicking on a column header. Not sure what I did wrong 
since most of what I have follows closely to the GWT tutorials and the GWT 
show case example.

If anyone could give me some pointers that would be great :) 

I'm thinking either I'm not properly triggering the sorting or the cell 
table content isn't loading.

public class BrowseVendorsContent extends Content {
private static final String pageName = "Browse Vendors";
private static final String pageStub = "vendors";

private final BrowseVendorsServiceAsync browseVendorsService = GWT
.create(BrowseVendorsService.class);

public BrowseVendorsContent(Sneaky_Xpress module) {
super(module);
}

@Override
public String getPageName() {
return pageName;
}

@Override
public String getPageStub() {
return pageStub;
}

@Override
public void getAndChangeContent(final String input) {
browseVendorsService.browseVendorsServer(input,
new AsyncCallback>() {
public void onFailure(Throwable caught) {
module.addMessage(GENERIC_ERROR_MESSAGE);
}

            public void onSuccess(List<Vendor> result) {
                HTMLPanel content = new HTMLPanel(""); // The new
                                                        // content to
                                                        // return

                // The sub-navigation bar
                HTMLPanel list = new HTMLPanel("ul", "");
                list.addStyleName("nav nav-tabs");

                // The tabs in the sub-navigation bar
                HTMLPanel listView = new HTMLPanel("li", "");
                HTMLPanel mapView = new HTMLPanel("li", "");

                // Links for the tabs
                Anchor listViewLink = new Anchor("List View");
                listViewLink.addClickHandler(new PageClickHandler(
                        BrowseVendorsContent.this, "list"));
                listView.add(listViewLink);

                Anchor mapViewLink = new Anchor("Map View");
                mapViewLink.addClickHandler(new PageClickHandler(
                        BrowseVendorsContent.this, "map"));
                mapView.add(mapViewLink);

                // Create the sub-navigation bar
                list.add(listView);
                list.add(mapView);
                content.add(list);

                // Load the appropriate view
                if (input.equals("map")) {
                    mapView.addStyleName("active");
                    listView.removeStyleName("active");
                    // Add the map etc.
                } else {
                    // By default load the list view
                    listView.addStyleName("active");
                    mapView.removeStyleName("active");

                    // Add data table under List view
                    Widget table = displayDataInTable(result);
                    content.add(table);
                }

                module.changeContent(content);
            }
        });

}

public Widget displayDataInTable(List vendorList) {
// Create new cell table object
CellTable table = new CellTable();

// Configure table to display all results onto one page
table.setPageSize(vendorList.size());

// Configure to select a row vs one cell at a time
MultiSelectionModel<Vendor> selectionModel = new MultiSelectionModel<Vendor>();
table.setSelectionModel(selectionModel);

// Create a list data provider.
final ListDataProvider<Vendor> dataProvider = new ListDataProvider<Vendor>();

// Instantiate sort handler
ListHandler<Vendor> colSortHandler = new ListHandler<Vendor>(
        vendorList);

// Add Key column and sort to column
TextColumn<Vendor> keyCol = new TextColumn<Vendor>() {
    @Override
    public String getValue(Vendor vendor) {
        return vendor.getVendorId();
    }
};
table.addColumn(keyCol, "Key");
keyCol.setSortable(true);
colSortHandler.setComparator(keyCol, new KeyComparator());

// Add Name column and sort to column
TextColumn<Vendor> nameCol = new TextColumn<Vendor>() {
    @Override
    public String getValue(Vendor vendor) {
        return vendor.getName();
    }
};
table.addColumn(nameCol, "Name");
nameCol.setSortable(true);
colSortHandler.setComparator(nameCol, new NameComparator());

// Add Location column
TextColumn<Vendor> locCol = new TextColumn<Vendor>() {
    @Override
    public String getValue(Vendor vendor) {
        return vendor.getLocation();
    }
};
table.addColumn(locCol, "Location");
locCol.setSortable(true);
colSortHandler.setComparator(locCol, new LocComparator());

// Add Description column
TextColumn<Vendor> desCol = new TextColumn<Vendor>() {
    @Override
    public String getValue(Vendor vendor) {
        return vendor.getDescription();
    }
};
table.addColumn(desCol, "Description");
desCol.setSortable(true);
colSortHandler.setComparator(desCol, new DesComparator());

// Add the cellList to the dataProvider.
dataProvider.addDataDisplay(table);

// Add col sort handler to table
table.addColumnSortHandler(colSortHandler);
table.getColumnSortList().push(keyCol);

// Set to query result
dataProvider.setList(vendorList);

// return table and display on page
return table;

}
}

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to