View Javadoc
1   /*
2    * Copyright 2000-2018 Vaadin Ltd.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5    * use this file except in compliance with the License. You may obtain a copy of
6    * the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations under
14   * the License.
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  }