1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.dishevelled.identify;
25
26 import java.awt.event.MouseAdapter;
27 import java.awt.event.MouseEvent;
28 import java.awt.event.MouseListener;
29
30 import javax.swing.ImageIcon;
31 import javax.swing.JButton;
32 import javax.swing.JPopupMenu;
33
34
35
36
37
38
39 public final class ContextMenuButton
40 extends JButton
41 {
42
43 private final JPopupMenu contextMenu;
44
45
46 private final MouseListener listener = new MouseAdapter()
47 {
48 @Override
49 public void mousePressed(final MouseEvent event)
50 {
51 contextMenu.show(event.getComponent(), 0, event.getComponent().getHeight());
52 }
53 };
54
55
56 private static final ImageIcon DEFAULT_ICON = new ImageIcon(ContextMenuButton.class.getResource("context-menu.png"));
57
58
59 private static final ImageIcon GTK_ICON = new ImageIcon(ContextMenuButton.class.getResource("context-menu-gtk.png"));
60
61
62
63
64
65
66
67 public ContextMenuButton(final JPopupMenu contextMenu)
68 {
69 super();
70 if (contextMenu == null)
71 {
72 throw new IllegalArgumentException("contextMenu must not be null");
73 }
74 this.contextMenu = contextMenu;
75 setIcon(IdentifyUtils.isGTKLookAndFeel() ? GTK_ICON : DEFAULT_ICON);
76 setToolTipText("View menu");
77 addMouseListener(listener);
78 }
79
80
81
82
83
84 public void dispose()
85 {
86 removeMouseListener(listener);
87 }
88 }