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 java.awt.event.*;
019    import javax.swing.*;
020    
021    public class AcceleratedAction extends AbstractAction {
022        public Action action;
023    
024        public static String MNEMONIC = "MNEMONIC";
025        public static String ACCELERATOR = "ACCELERATOR";
026    
027        public AcceleratedAction (String name) {
028            int ampersand = name.indexOf ('&');
029            if (ampersand > -1 && ampersand < name.length()) {
030                char mnemonic = Character.toUpperCase (name.charAt (ampersand+1));
031                putValue (MNEMONIC, new Character (mnemonic));
032                name = name.substring (0, ampersand) + name.substring (ampersand + 1);
033            }
034            putValue (NAME, name);
035        }
036    
037        public AcceleratedAction (String name, String tooltip) {
038            this (name);
039            putValue (SHORT_DESCRIPTION, tooltip);
040        }
041    
042        public AcceleratedAction (String name, Icon icon) {
043            this (name);
044            putValue (SMALL_ICON, icon);
045        }
046    
047        public AcceleratedAction (String name, Icon icon, String tooltip) {
048            this (name, icon);
049            putValue (SHORT_DESCRIPTION, tooltip);
050        }
051    
052        public AcceleratedAction (String name, int keycode, int modifiers) {
053            this (name);
054            putValue (ACCELERATOR, KeyStroke.getKeyStroke (keycode, modifiers));
055        }
056    
057        public AcceleratedAction (String name, int keycode, int modifiers,
058                                  String tooltip) {
059            this (name, keycode, modifiers);
060            putValue (SHORT_DESCRIPTION, tooltip);
061        }
062    
063        public AcceleratedAction (String name, Icon icon, 
064                                  int keycode, int modifiers) {
065            this (name, keycode, modifiers);
066            putValue (SMALL_ICON, icon);
067        }
068    
069    
070        public AcceleratedAction (String name, Icon icon, 
071                                  int keycode, int modifiers, String tooltip) {
072            this (name, icon, keycode, modifiers);
073            putValue (SHORT_DESCRIPTION, tooltip);
074        }
075    
076        public AcceleratedAction (String name, int keycode, int modifiers, 
077                                  Action action) {
078            this (name, keycode, modifiers);
079            this.action = action;
080        }
081    
082        public AcceleratedAction (String name,
083                                  Action action) {
084            this (name);
085            this.action = action;
086        }
087    
088        public void actionPerformed (ActionEvent event) {
089            if (action != null)
090                action.actionPerformed (event);
091        }
092    }