Я использую NatTable. Как показать пункт контекстного меню при определенном условии в зависимости от содержимого ячейки? А как выделить ячейку, над которой вызывалось контекстное меню? Я связываю меню со следующим кодом
uiBindingRegistry.registerMouseDownBinding(
new MouseEventMatcher(SWT.NONE, null, MouseEventMatcher.RIGHT_BUTTON), new PopupMenuAction(menu));
UPD: Я создаю такое меню, но пункт «Тест» виден, несмотря на то, что isActive
всегда возвращает false
. Что с этим не так?
menu = new PopupMenuBuilder(natTable).withMenuItemProvider(ITEM_ID, new IMenuItemProvider() {
@Override
public void addMenuItem(final NatTable natTable, final Menu popupMenu) {
final MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
menuItem.setText("Test");
menuItem.setEnabled(true);
menuItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent event) {
System.out.println("test");
}
});
}
}).withVisibleState(ITEM_ID, new IMenuItemState() {
@Override
public boolean isActive(final NatEventData natEventData) {
return false;
}
}).build();
CellPopupMenuAction
run()
у меня естьmenu.setData(event.data)
, но должно бытьmenu.setData(MenuItemProviders.NAT_EVENT_DATA_KEY, event.data)
. Тогда все работает как задумано. - person Joel   schedule 14.01.2016