01: /*
02: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
03: * notice. All rights reserved.
04: */
05: package com.tc.admin.common;
06:
07: import java.awt.event.MouseAdapter;
08: import java.awt.event.MouseEvent;
09:
10: import javax.swing.JComponent;
11: import javax.swing.JPopupMenu;
12:
13: /**
14: * A utility helper for components that want to have a context menu.
15: */
16:
17: public class XPopupListener extends MouseAdapter {
18: protected JComponent m_target;
19: protected JPopupMenu m_popupMenu;
20:
21: public XPopupListener() {
22: super ();
23: }
24:
25: public XPopupListener(JComponent target) {
26: this ();
27: m_target = target;
28: }
29:
30: public void setTarget(JComponent target) {
31: if (m_target != null) {
32: if (m_popupMenu != null) {
33: m_target.removeMouseListener(this );
34: m_target.setComponentPopupMenu(null);
35: }
36: }
37:
38: if ((m_target = target) != null) {
39: if (m_popupMenu != null) {
40: m_target.setComponentPopupMenu(m_popupMenu);
41: m_target.addMouseListener(this );
42: }
43: }
44: }
45:
46: public void mousePressed(MouseEvent e) {
47: testPopup(e);
48: }
49:
50: public void mouseReleased(MouseEvent e) {
51: testPopup(e);
52: }
53:
54: public void testPopup(MouseEvent e) {
55: if (e.isPopupTrigger()) {
56: m_popupMenu.show(m_target, e.getX(), e.getY());
57: }
58: }
59:
60: public void setPopupMenu(JPopupMenu popupMenu) {
61: if (m_popupMenu != null) {
62: if (m_target != null) {
63: m_target.removeMouseListener(this );
64: m_target.remove(m_popupMenu);
65: }
66: }
67:
68: if ((m_popupMenu = popupMenu) != null) {
69: if (m_target != null) {
70: m_target.add(popupMenu);
71: m_target.addMouseListener(this );
72: }
73: }
74: }
75:
76: public JPopupMenu getPopupMenu() {
77: return m_popupMenu;
78: }
79: }
|