1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.vaadin.contextmenu;
18
19 import com.vaadin.contextmenu.ContextMenu.ContextMenuOpenListener.ContextMenuOpenEvent;
20 import com.vaadin.v7.ui.Tree;
21 import com.vaadin.v7.ui.Tree.TreeContextClickEvent;
22
23 @SuppressWarnings("serial")
24 public class TreeContextMenu<T> extends ContextMenu {
25
26 public TreeContextMenu(Tree<T> parentComponent) {
27 super(parentComponent, true);
28 }
29
30 public void addTreeContextMenuListener(final TreeContextMenuOpenListener<T> listener) {
31 addContextMenuOpenListener((final ContextMenuOpenEvent event) -> {
32 if (event
33 .getContextClickEvent() instanceof Tree.TreeContextClickEvent) {
34 @SuppressWarnings("unchecked")
35 TreeContextClickEvent<T> treeEvent = (TreeContextClickEvent<T>) event
36 .getContextClickEvent();
37 listener.onContextMenuOpen(new TreeContextMenuOpenListener.TreeContextMenuOpenEvent<>(
38 TreeContextMenu.this, treeEvent ));
39 }
40 });
41 }
42
43 public interface TreeContextMenuOpenListener<T>
44 extends java.util.EventListener, java.io.Serializable {
45
46 public void onContextMenuOpen(TreeContextMenuOpenEvent<T> event);
47
48 public static class TreeContextMenuOpenEvent<T>
49 extends ContextMenuOpenEvent {
50
51 private final T item;
52 private final Tree<T> component;
53
54 public TreeContextMenuOpenEvent(ContextMenu contextMenu,
55 TreeContextClickEvent<T> contextClickEvent) {
56 super(contextMenu, contextClickEvent);
57 item = contextClickEvent.getItem();
58 component = contextClickEvent.getComponent();
59 }
60
61 public T getItem() {
62 return item;
63 }
64
65 public Tree<T> getComponent() {
66 return component;
67 }
68 }
69 }
70 }