/**
*
*/
package org.javabuilders.swing;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.KeyStroke;
import org.javabuilders.BuildException;
/**
* Default action created by the SwingBuilder. Enhanced AbstractAction with some nicer API
* @author Jacek Furmankiewicz
*/
public class SwingAction extends AbstractAction {
/**
* Serialization
*/
private static final long serialVersionUID = 914022683711186677L;
private IActionHandler actionHandler = null;
/**
* Constructor
*/
public SwingAction() {
}
/**
* @param text Name/text
*/
public SwingAction(String text) {
super(text);
}
/**
* @param name Name
* @param icon Icon
*/
public SwingAction(String name, Icon icon) {
super(name, icon);
}
/**
* @param text Name/text
*/
public void setText(String text) {
putValue(Action.NAME, text);
}
/**
* @return Name/text
*/
public String getText() {
return (String) getValue(Action.NAME);
}
/**
* @param icon Icon
*/
public void setIcon(Icon icon) {
putValue(SMALL_ICON, icon);
}
/**
* @return Action
*/
public Icon getIcon() {
return (Icon) getValue(SMALL_ICON);
}
/**
* @param text Tooltip
*/
public void setToolTipText(String text) {
putValue(SHORT_DESCRIPTION, text);
}
/**
* @return Tooltip
*/
public String getToolTipText() {
return (String) getValue(SMALL_ICON);
}
/**
* @param text Long description
*/
public void setLongDescription(String text) {
putValue(LONG_DESCRIPTION, text);
}
/**
* @return Long description
*/
public String getLongDescription() {
return (String) getValue(LONG_DESCRIPTION);
}
/**
* @param mnemonic Mnemonic
*/
public void setMnemonic(Integer mnemonic) {
putValue(MNEMONIC_KEY, mnemonic);
}
/**
* @return Mnemonic
*/
public Integer getMnemonic() {
return (Integer) getValue(MNEMONIC_KEY);
}
/**
* @param accelerator Accelerator key
*/
public void setAccelerator(KeyStroke accelerator) {
putValue(ACCELERATOR_KEY, accelerator);
}
/**
* @return Accelerator key
*/
public KeyStroke getAccelerator() {
return (KeyStroke) getValue(ACCELERATOR_KEY);
}
/**
* @param action Action command
*/
public void setActionCommand(String action) {
putValue(ACTION_COMMAND_KEY, action);
}
/**
* @return Action command
*/
public String getActionCommand() {
return (String) getValue(ACTION_COMMAND_KEY);
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
if (actionHandler != null) {
actionHandler.onAction(e);
} else {
throw new BuildException("No action handler defined for action: " + getText());
}
}
/**
* @return Action handler (called from actionPerformed());
*/
public IActionHandler getActionHandler() {
return actionHandler;
}
/**
* @param actionHandler Action handler
*/
public void setActionHandler(IActionHandler actionHandler) {
this.actionHandler = actionHandler;
}
/**
* Interface to dispatch the action execution to from actionPerformed()
*/
public interface IActionHandler {
void onAction(ActionEvent e);
}
}