@Override
    protected void onEnterKeyDown(final Context context,
                                  final Element parent,
                                  final T value,
                                  final NativeEvent event,
                                  final ValueUpdater<T> valueUpdater) {
        final Element element = event.getEventTarget().cast();
        if (ElementUtil.hasClassName(element, HOVER_ACTION_MENU_CLASS_NAME, 5)) {
            final List<Item> items = NullSafe.get(menuCreator, mc -> mc.apply(value));
            if (NullSafe.hasItems(items)) {
                if (items.size() == 1
                    && items.get(0) instanceof MenuItem
                    && ((MenuItem) items.get(0)).getCommand() != null) {
                    // Single item with a command so no menu popup needed
                    ((MenuItem) items.get(0)).getCommand().execute();
                } else {
                    // Build the menu popup
                    showActionMenu(value, event);
                }
            }
        }
        if (valueUpdater != null) {
            valueUpdater.update(value);
        }
    }
@param cellTextExtractor Function to supply the text value of the cell
@param menuCreator       A function to create a list of menu items to show when the hover
                         icon is clicked. If the list contains only one item and that item
                         is an instance of {@link stroom.widget.menu.client.presenter.MenuItem}
                         and has a command, then clicking the hover icon will fire the command
                         without showing the menu.
stroom-core-client-widget/src/main/java/stroom/cell/info/client/HoverActionMenuCell.java