001    /*
002     * LAPIS lightweight structured text processing system
003     *
004     * Copyright (C) 1998-2002 Carnegie Mellon University,
005     * Copyright (C) 2003 Massachusetts Institute of Technology.
006     * All rights reserved.
007     *
008     * This library is free software; you can redistribute it
009     * and/or modify it under the terms of the GNU General
010     * Public License as published by the Free Software
011     * Foundation, version 2.
012     *
013     * LAPIS homepage: http://graphics.lcs.mit.edu/lapis/
014     */
015    
016    package lapisx.swing;
017    
018    import javax.swing.*;
019    
020    public class AcceleratedMenu extends JMenu {
021        public AcceleratedMenu (String name) {
022            int ampersand = name.indexOf ('&');
023            if (ampersand > -1 && ampersand < name.length()) {
024                char mnemonic = Character.toUpperCase (name.charAt (ampersand+1));
025                setMnemonic (mnemonic);
026                name = name.substring (0, ampersand) + name.substring (ampersand + 1);
027            }
028            setText (name);
029        }
030    
031        public JMenuItem add (Action action) {
032            JMenuItem item = super.add (action);
033    
034            Object mn = action.getValue (AcceleratedAction.MNEMONIC);
035            if (mn != null)
036                item.setMnemonic (((Character)mn).charValue ());
037    
038            Object acc = action.getValue (AcceleratedAction.ACCELERATOR);
039            if (acc != null)
040                item.setAccelerator ((KeyStroke) acc);
041    
042            return item;
043        }
044    }
045