XJMenuItem.java
01 /*  XJMenuItem.java
02  *
03  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
04  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
05  *
06  *  This file is part of GATE (see http://gate.ac.uk/), and is free
07  *  software, licenced under the GNU Library General Public License,
08  *  Version 2, June 1991 (in the distribution as file licence.html,
09  *  and also available at http://gate.ac.uk/gate/licence.html).
10  *
11  *  Valentin Tablan 02/04/2001
12  *
13  *  $Id: XJMenuItem.java 17612 2014-03-10 08:51:17Z markagreenwood $
14  *
15  */
16 
17 package gate.swing;
18 
19 import gate.event.StatusListener;
20 
21 import java.awt.event.MouseAdapter;
22 import java.awt.event.MouseEvent;
23 
24 import javax.swing.Action;
25 import javax.swing.Icon;
26 import javax.swing.JMenuItem;
27 import javax.swing.event.ChangeEvent;
28 import javax.swing.event.ChangeListener;
29 
30 /**
31  * Extension of a JMenuItem that adds a description and a StatusListener
32  * as parameters. The description is used in the statusListener.
33  */
34 @SuppressWarnings("serial")
35 public class XJMenuItem extends JMenuItem {
36 
37   public XJMenuItem(Icon icon, String description, StatusListener listener){
38     super(icon);
39     this.description = description;
40     this.listener = listener;
41     initListeners();
42   }
43 
44   public XJMenuItem(String text, String description, StatusListener listener){
45     super(text);
46     this.description = description;
47     this.listener = listener;
48     initListeners();
49   }
50 
51   public XJMenuItem(Action a, StatusListener listener){
52     super(a);
53     this.description = (Stringa.getValue(Action.SHORT_DESCRIPTION);
54     this.listener = listener;
55     // stop showing tooltip in the menu, status bar is enough
56     setToolTipText(null);
57     initListeners();
58   }
59 
60   public XJMenuItem(String text, Icon icon,
61                     String description, StatusListener listener){
62     super(text, icon);
63     this.description = description;
64     this.listener = listener;
65     initListeners();
66   }
67 
68   public XJMenuItem(String text, int mnemonic,
69                     String description, StatusListener listener){
70     super(text, mnemonic);
71     this.description = description;
72     this.listener = listener;
73     initListeners();
74   }
75 
76   protected void initListeners(){
77     this.addMouseListener(new MouseAdapter() {
78       @Override
79       public void mouseExited(MouseEvent e) {
80         // clear the status
81         listener.statusChanged("");
82       }
83     });
84     this.addChangeListener(new ChangeListener() {
85       @Override
86       public void stateChanged(ChangeEvent e) {
87         // display the menu item description in the status
88         listener.statusChanged(description);
89       }
90     });
91   }
92 
93   private StatusListener listener;
94   String description;
95 }