CellTable<Contact> table = new CellTable<Contact>(); // Create name column. final TextColumn<Contact> nameColumn = new TextColumn<Contact>() { @Override public String getValue(Contact contact) { return contact.name; } }; // Create a data provider. ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>(); // Connect the table to the data provider. dataProvider.addDataDisplay(table); final List<Contact> list = dataProvider.getList(); for (Contact contact : CONTACTS) { list.add(contact); } final ListHandler<Contact> columnSortHandler = new ListHandler<Contact>( list); Header<String> columnHeader = new Header<String>(new ClickableTextCell()) { @Override public String getValue() { return "Name"; } }; columnHeader.setUpdater(new ValueUpdater<String>() { @Override public void update(String value) { if (Window.confirm("Want to do?")){ nameColumn.setSortable(true); columnSortHandler.setComparator(nameColumn, new Comparator<Contact>() { public int compare(Contact o1, Contact o2) { if (o1 == o2) { return 0; } // Compare the name columns. if (o1 != null) { return (o2 != null) ? o1.name.compareTo(o2.name) : 1; } return -1; } }); } else nameColumn.setSortable(false); } }); // Make the name column sortable. nameColumn.setSortable(false); // Create address column. TextColumn<Contact> addressColumn = new TextColumn<Contact>() { @Override public String getValue(Contact contact) { return contact.address; } }; // Add the columns. table.addColumn(nameColumn, columnHeader); table.addColumn(addressColumn, "Address"); // Add the data to the data provider, which automatically pushes it to the // widget. // Add a ColumnSortEvent.ListHandler to connect sorting to the // java.util.List. //------------------ Code to add --------------------------------// VerticalPanel vp = new VerticalPanel(); table.addColumnSortHandler(columnSortHandler); //------------------ Code end --------------------------------// // We know that the data is sorted alphabetically by default. table.getColumnSortList().push(nameColumn); // Add it to the root panel. vp.add(table); RootPanel.get().add(vp);
user1227465 Feb 23 2018-12-12T00: 00Z
source share