View Javadoc
1   package info.magnolia.ui.contentapp.browser;
2   
3   import info.magnolia.ui.contentapp.Datasource;
4   
5   import java.util.function.Predicate;
6   
7   import com.vaadin.ui.Grid;
8   
9   /**
10   * Functionality common to Magnolia-specific {@link com.vaadin.ui.Grid} implementations.
11   */
12  class MagnoliaGridDecoration {
13  
14      static <T> void addCommonConfiguration(Grid<T> grid,
15                                         Predicate<T> itemInteractionAvailability,
16                                         Datasource<T> datasource) {
17          grid.getEditor().addOpenListener(e -> {
18              if (!itemInteractionAvailability.test(e.getBean())) {
19                  grid.getEditor().cancel();
20                  grid.getDataProvider().refreshAll();
21              }
22          });
23          grid.addSelectionListener(e -> e.getAllSelectedItems().forEach(item -> {
24              if (!itemInteractionAvailability.test(item)) {
25                  grid.deselect(item);
26              }
27          }));
28      }
29  
30  }