Различные ContextMenus для GWT CellTable заголовка и тела - PullRequest
0 голосов
/ 01 июня 2018

Я просматриваю Stackoverflow в течение часа и просто не могу найти ответ, это именно то, что мне нужно.

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

if ( contextMenu == null )
        {
            contextMenu = new ContextMenu();

            table.sinkEvents(Event.ONCONTEXTMENU);
            table.addHandler(new ContextMenuHandler()
            {

                @Override
                public void onContextMenu(ContextMenuEvent event)
                {
                    //here I'd like to check if the clicked row index == 0 and display a different context menu
                    event.preventDefault();
                    event.stopPropagation();
                    contextMenu.setPopupPosition(event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY());
                    contextMenu.setAutoHideEnabled(true);
                    contextMenu.show();
                }
            }, ContextMenuEvent.getType());
        }

1 Ответ

0 голосов
/ 01 июня 2018

Использование HeaderBuilder s isHeader () метод:

public void onContextMenu(ContextMenuEvent event) {

    // ...

    EventTarget eventTarget = event.getNativeEvent().getEventTarget();
    Element element = eventTarget.cast();
    if(table.getHeaderBuilder().isHeader(element))
        // display context menu for header
    else
        // display context menu for body
}
...