package au.com.vaadinutils.fields.contextmenu; import java.util.ArrayList; import java.util.List; import com.vaadin.event.ContextClickEvent; import com.vaadin.event.ContextClickEvent.ContextClickListener; import com.vaadin.ui.Button; public class ButtonContextMenu<E> extends EntityContextMenu<E> { private static final long serialVersionUID = 1L; private List<ContextMenuEvent> eventsList = new ArrayList<>(); /** * Assigns this as the context menu of a button. */ public void setAsButtonContextMenu(final Button button, final E targetEntity) { this.targetEntity = targetEntity; extend(button); setOpenAutomatically(false); button.addContextClickListener(new ContextClickListener() { private static final long serialVersionUID = 4777762727944373063L; @Override public void contextClick(ContextClickEvent event) { openContext(event); } }); } private void openContext(final ContextClickEvent event) { for (ContextMenuEvent events : eventsList) { events.preContextMenuOpen(); } open(event.getClientX(), event.getClientY()); } public void addEvents(final ContextMenuEvent events) { eventsList.add(events); } }