Как создать выпадающий список по правому клику в GWT

Я создаю выпадающий список, который должен иметь CREATE, DELETE, SUBMIT для конкретной строки в таблице. Может кто-нибудь помочь мне, как создать один в GWT.

   table.addCellPreviewHandler(new Handler<RequestDto>()
    {

        @Override
        public void onCellPreview(CellPreviewEvent<RequestDto> event)
        {
            if (event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT)
            {


                MenuBar options = new MenuBar();
                MenuBar gwtPop = new MenuBar();
                options.addItem("Create", gwtPop);
                options.addItem("Submit", gwtPop);
                MenuItem Import = new MenuItem(new SafeHtmlBuilder().appendEscaped("Import").toSafeHtml());
                Import.setScheduledCommand(new ScheduledCommand()
                {

                    @Override
                    public void execute()
                    {
                        Window.alert("hello");
                    }
                });
            final DialogBox menuWrapper = new DialogBox(true);
                menuWrapper.add(options);
                gwtPop.addItem(Import);

1 ответ

Решение

Прежде всего, не создавайте свое меню внутри onCellPreview метод. Нет необходимости создавать один и тот же виджет снова и снова на каждом клике.

Вы можете сделать что-то вроде этого:

int clickedRow = -1;
...
// build your menu here
// use clickedRow where necessary, for example:

deleteMenuItem.setScheduledCommand(new ScheduledCommand() {

    @Override
    public void execute() {
        Window.alert("hello, I am about to delete row " + clickedRow);
    }
});
...
myTable.addCellPreviewHandler(new Handler<MyObject>() {

    @Override
    public void onCellPreview(CellPreviewEvent<MyObject> event) {
        if (event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT) {
            event.getNativeEvent().stopPropagation();
            clickedRow = event.getIndex();
            // show your menu - no need to construct it again 
    }
}
Другие вопросы по тегам