@Override protected void initHeader() { if (header == null) { header = new CustomColumnHeader<Integer>(grid, cm); } header.setMenuFactory(new ColumnHeader.HeaderContextMenuFactory() { @Override public Menu getMenuForColumn(int columnIndex) { return createContextMenu(columnIndex); } }); header.setSplitterWidth(splitterWidth); } }
public void maybeUpdateSortingView(List<SortModel> sorting) { if(!currentSorting.equals(sorting)) { ColumnModel<Integer> columnModel = grid.getColumnModel(); ColumnHeader<Integer> tableHeading = grid.getView().getHeader(); if (sorting.isEmpty()) { tableHeading.updateSortIcon(-1, SortDir.ASC); } else { SortModel sortModel = sorting.get(0); for (int i = 0; i < columnModel.getColumnCount(); i++) { String path = columnModel.getValueProvider(i).getPath(); if (path.equals(sortModel.getField())) { tableHeading.updateSortIcon(i, sortModel.getDir() == org.activityinfo.model.query.SortDir.ASC ? SortDir.ASC : SortDir.DESC); break; } } } currentSorting = sorting; } }
/** * Creates a context menu for the given column, including sort menu items and column visibility sub-menu. * * @param colIndex the column index * @return the context menu for the given column */ protected Menu createContextMenu(final int colIndex) { final Menu menu = new Menu(); if (cm.isSortable(colIndex)) { MenuItem item = new MenuItem(); item.setText(DefaultMessages.getMessages().gridView_sortAscText()); item.setIcon(header.getAppearance().sortAscendingIcon()); item.addSelectionHandler(event -> doSort(colIndex, SortDir.ASC)); menu.add(item); item = new MenuItem(); item.setText(DefaultMessages.getMessages().gridView_sortDescText()); item.setIcon(header.getAppearance().sortDescendingIcon()); item.addSelectionHandler(event -> doSort(colIndex, SortDir.DESC)); menu.add(item); item = new MenuItem(); item.setText(I18N.CONSTANTS.clearSort()); item.addSelectionHandler(event -> fireEvent(new SortChangeEvent())); menu.add(item); } return menu; }