FileDocCategorySizeDatePackage
CommandAction.javaAPI DocExample2220Sat Jan 24 10:44:32 GMT 2004je3.gui

CommandAction.java

/*
 * Copyright (c) 2004 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose,
 * including teaching and use in open-source projects.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book, 
 * please visit http://www.davidflanagan.com/javaexamples3.
 */
package je3.gui;
import je3.reflect.*;
import javax.swing.*;
import java.awt.event.*;

public class CommandAction extends AbstractAction {
    Command command;  // The command to execute in response to an ActionEvent
    
    /**
     * Create an Action object that has the various specified attributes, 
     * and invokes the specified Command object in response to ActionEvents
     **/
    public CommandAction(Command command, String label,
			 Icon icon, String tooltip, 
			 KeyStroke accelerator, int mnemonic,
			 boolean enabled) 
    {
	this.command = command;  // Remember the command to invoke
	
	// Set the various action attributes with putValue()
	if (label != null) putValue(NAME, label);
	if (icon != null) putValue(SMALL_ICON, icon);
	if (tooltip != null) putValue(SHORT_DESCRIPTION, tooltip);
	if (accelerator != null) putValue(ACCELERATOR_KEY, accelerator);
	if (mnemonic != KeyEvent.VK_UNDEFINED) 
	    putValue(MNEMONIC_KEY, new Integer(mnemonic));

	// Tell the action whether it is currently enabled or not
	setEnabled(enabled);
    }
    
    /**
     * This method implements ActionListener, which is a super-interface of
     * Action.  When a component generates an ActionEvent, it is passed to
     * this method.  This method simply passes it on to the Command object
     * which is also an ActionListener object
     **/
    public void actionPerformed(ActionEvent e) { command.actionPerformed(e); }

    // These constants are defined by Action in Java 1.3.
    // For compatibility with Java 1.2, we re-define them here.
    public static final String ACCELERATOR_KEY = "AcceleratorKey";
    public static final String MNEMONIC_KEY = "MnemonicKey";
}