@Override public void setSelected(Collection<E> items) { DataGridItems<E> dataGridItems = getDataGridItemsNN(); for (E item : items) { if (!dataGridItems.containsItem(item)) { throw new IllegalStateException("Datasource doesn't contain items"); } } setSelectedItems(items); }
@Override public void scrollTo(E item, ScrollDestination destination) { Preconditions.checkNotNullArgument(item); Preconditions.checkNotNullArgument(destination); DataGridItems<E> dataGridItems = getDataGridItemsNN(); if (!dataGridItems.containsItem(item)) { throw new IllegalArgumentException("Unable to find item in DataGrid"); } int rowIndex = dataGridItems.indexOfItem(item); component.scrollTo(rowIndex, WebWrapperUtils.convertToGridScrollDestination(destination)); }
@Override public void edit(E item) { checkNotNullArgument(item, "Entity must be non null"); DataGridItems<E> dataGridItems = getItems(); if (dataGridItems == null || dataGridItems.getState() == BindingState.INACTIVE) { return; } if (!dataGridItems.containsItem(item)) { throw new IllegalArgumentException("Datasource doesn't contain item"); } int rowIndex = dataGridItems.indexOfItem(item); component.getEditor().editRow(rowIndex); }
@Override public void dataGridSourceItemSetChanged(DataGridItems.ItemSetChangeEvent<E> event) { // #PL-2035, reload selection from ds Set<E> selectedItems = getSelected(); Set<E> newSelection = new HashSet<>(); for (E item : selectedItems) { if (event.getSource().containsItem(item)) { newSelection.add(event.getSource().getItem(item.getId())); } } if (event.getSource().getState() == BindingState.ACTIVE && event.getSource().getSelectedItem() != null) { newSelection.add(event.getSource().getSelectedItem()); } if (newSelection.isEmpty()) { setSelected((E) null); } else { // Workaround for the MultiSelect model. // Set the selected items only if the previous selection is different // Otherwise, the DataGrid rows will display the values before editing if (isMultiSelect() && !selectedItems.equals(newSelection)) { setSelectedItems(newSelection); } } refreshActionsState(); }