javagridvaadinvaadin-flow

How to select row in Grid on right click and show context menu simultaniously?


Using Vaadin 24:

I tried to use GridContextMenu grid.addContextMenu(), which opens with right click, however it does not select row on which I clicked and I can't find such option on GridContextMenu instance to set.

Secondly, I tried to add click listener and check mouse button, however I do not know how to get the row index I clicked:

grid.addItemClickListener(event -> {
    val column = event.getColumn(); // can get only column
    val buttonCode = event.getButton();
    if (buttonCode == 2) { // 2 is secondary button / right button
        // select here
    }
});

Keep in mind that Grid columns are sortable - setSortable(true) and reordable - setColumnReorderingAllowed(true). Please help, thank you.


Solution

  • Try use addGridContextMenuOpenedListener from GridContextMenu.

    final var menu = grid.addContextMenu();
    menu.addGridContextMenuOpenedListener(event -> event.getItem().ifPresent(grid::select));