Как использовать ContextMenu с сеткой в ​​Vaadin Flow? - PullRequest
0 голосов
/ 16 сентября 2018

При использовании Vaadin Flow (11.0.0) должно быть возможно использовать Grid с ContextMenu (1.0.0).Смотрите вопрос https://github.com/vaadin/vaadin-context-menu-flow/issues/5.

Вот что у меня есть:

@Route("menu")
public class MenuTestView extends VerticalLayout {

    public MenuTestView() {
        final Grid<String> g = new Grid<>();
        g.setWidth("20em");
        g.addColumn(s -> s).setHeader("Word");
        g.addColumn(s -> s.length()).setHeader("Length");
        g.setItems("The quick brown fox jumps over the lazy dog".split("\\s+"));

        final Label label = new Label();

        final ContextMenu contextMenu = new ContextMenu();
        contextMenu.setTarget(g);

        contextMenu.addItem("Item 1", e -> label.setText(e.getSource().getText()));
        contextMenu.addItem("Item 2", e -> label.setText(e.getSource().getText()));

        add(g, label);
    }

}

Вопросы:

  • Есть ли какой-нибудь пример для Ваадина Поток ?
  • В нашем случае ContextMenu должен быть включен, только если он находится над выбранной строкой.Как этого добиться?
  • Как выбрать строку, исходя из положения мыши в момент активации контекстного меню?

1 Ответ

0 голосов
/ 16 сентября 2018

vaadin-grid-flow 1.2 принесла особую поддержку, чтобы Grid и контекстное меню играли вместе. Он был выпущен три дня назад. Можно было заставить их работать вместе раньше, но событие не сообщало, по какому пункту было запущено контекстное меню. Смотри https://github.com/vaadin/vaadin-grid-flow/releases/tag/1.2.0

Вы можете обновить свою сетку до 1.2, добавив следующее в pom.

<dependency>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-grid-flow</artifactId>
    <version>1.2.0</version>
</dependency>

Вот пример использования из тестов: https://github.com/vaadin/vaadin-grid-flow/blob/master/src/test/java/com/vaadin/flow/component/grid/it/ContextMenuGridPage.java

    GridContextMenu<Person> contextMenu = grid.addContextMenu();
    contextMenu.addItem("Show name of context menu target item", e -> {
        String name = e.getItem().map(Person::getName)
                .orElse("no target item");
        message.setText(name);
    });
...