// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.ui.components.gmenu; import graphtea.platform.core.BlackBoard; import graphtea.ui.actions.UIEventData; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * this is the same as JMenuItem with the diffrece that it sends its events to the blackboard automatically. * see GButton for more details. * * @author Azin Azadi */ //todo: like GButton public class GMenuItem extends JMenuItem implements ActionListener { /** * */ private static final long serialVersionUID = 6309834468678258546L; public GMenuItem(String label, String action, BlackBoard b) { super(label); blackboard = b; addActionListener(this); // add(new JButton(" ...")); // validate(); //----------- t = new UIEventData(); t.action = action; } public GMenuItem(String label, String action, BlackBoard b, String accelerator, int index) { //icons R ! supported yet. now it is important to just work correctly super(label); blackboard = b; addActionListener(this); //----------- t = new UIEventData(); t.action = action; KeyBoardShortCut shortcut = KeyBoardShortCutProvider.registerKeyBoardShortcut(accelerator, label, index); if (shortcut != null) { if (!shortcut.isAccelerator()) { setMnemonic(shortcut.getKeyMnemonic()); setDisplayedMnemonicIndex(shortcut.getKeyWordIndex()); } else { setAccelerator(KeyStroke.getKeyStroke(shortcut.getKeyEvent(), shortcut.getKeyModifiers())); setDisplayedMnemonicIndex(shortcut.getKeyWordIndex()); setMnemonic(shortcut.getKeyMnemonic()); } } // setLayout(new BorderLayout(10,0)); // // JButton pref = new JButton("Prefs"); // pref.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){ // t.eventType=0; // blackboard.listen4Event(UIEventData.event(""), t);}}); // add(pref, BorderLayout.EAST); // validate(); } public String toString() { return getText(); } public void actionPerformed(ActionEvent e) { blackboard.setData(UIEventData.name(""), t); } private BlackBoard blackboard; private UIEventData t; }