package au.com.vaadinutils.fields;
import java.util.ArrayList;
import java.util.List;
import org.vaadin.peter.contextmenu.ContextMenu;
import com.vaadin.event.ContextClickEvent;
import com.vaadin.event.ContextClickEvent.ContextClickListener;
import com.vaadin.shared.MouseEventDetails.MouseButton;
import com.vaadin.ui.Tree;
import com.vaadin.ui.Tree.TreeContextClickEvent;
public class TreeContextMenu extends ContextMenu
{
private static final long serialVersionUID = 1L;
private List<TreeContextMenuEvent> eventList = new ArrayList<>();
private Tree tree;
@Override
public void setAsTreeContextMenu(final Tree tree)
{
this.tree = tree;
extend(tree);
setOpenAutomatically(false);
tree.addContextClickListener(new ContextClickListener()
{
private static final long serialVersionUID = 1L;
@Override
public void contextClick(ContextClickEvent event)
{
if (event.getButton() == MouseButton.RIGHT)
{
openContext((TreeContextClickEvent) event);
open(event.getClientX(), event.getClientY());
}
}
});
}
private void openContext(final TreeContextClickEvent event)
{
tree.select(event.getItemId());
for (TreeContextMenuEvent e : eventList)
{
e.preContextMenuOpen();
}
fireEvent(new ContextMenuOpenedOnTreeItemEvent(this, tree, event.getItemId()));
open(event.getClientX(), event.getClientY());
}
public void addEvent(final TreeContextMenuEvent event)
{
eventList.add(event);
}
}