package beast.app.draw;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.KeyStroke;
import beast.app.util.Utils;
/**
* Base class used for definining actions with a name, tool tip text, possibly
* an icon and accelerator key.
*/
public abstract class MyAction extends AbstractAction {
/**
* for serialisation
*/
private static final long serialVersionUID = -1L;
/**
* path for icons
*/
public MyAction(String name, String toolTipText, String icon, int acceleratorKey) {
this(name, toolTipText, icon, KeyStroke.getKeyStroke(acceleratorKey, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
} // c'tor
public MyAction(String name, String toolTipText, String icon, String acceleratorKey) {
this(name, toolTipText, icon, KeyStroke.getKeyStroke(acceleratorKey));
} // c'tor
public MyAction(String name, String toolTipText, String icon, KeyStroke acceleratorKeystroke) {
super(name);
// setToolTipText(toolTipText);
putValue(Action.SHORT_DESCRIPTION, toolTipText);
putValue(Action.LONG_DESCRIPTION, toolTipText);
if (acceleratorKeystroke != null && acceleratorKeystroke.getKeyCode() >= 0) {
putValue(Action.ACCELERATOR_KEY, acceleratorKeystroke);
}
putValue(Action.MNEMONIC_KEY, new Integer(name.charAt(0)));
java.net.URL tempURL = ClassLoader.getSystemResource(ModelBuilder.ICONPATH + icon + ".png");
if (!Utils.isMac()) {
if (tempURL != null) {
putValue(Action.SMALL_ICON, new ImageIcon(tempURL));
} else {
putValue(Action.SMALL_ICON, new ImageIcon(new BufferedImage(20, 20, BufferedImage.TYPE_4BYTE_ABGR)));
}
}
} // c'tor
/*
* Place holder. Should be implemented by derived classes. (non-Javadoc)
* @see
* java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent
* )
*/
@Override
abstract public void actionPerformed(ActionEvent ae);
} // class MyAction