package edu.harvard.wcfia.yoshikoder;
import java.awt.Event;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.KeyStroke;
import edu.harvard.wcfia.yoshikoder.util.DialogUtil;
import edu.harvard.wcfia.yoshikoder.util.DialogWorker;
import edu.harvard.wcfia.yoshikoder.util.FileUtil;
import edu.harvard.wcfia.yoshikoder.util.Messages;
import edu.harvard.wcfia.yoshikoder.util.TaskWorker;
abstract public class YoshikoderAction extends AbstractAction {
protected Yoshikoder yoshikoder;
protected DialogWorker dworker;
protected TaskWorker tworker;
public YoshikoderAction(Yoshikoder yk, String subclassFullPath) {
super();
yoshikoder = yk;
String[] path = subclassFullPath.split("\\.");
String prefix = path[path.length-1];
// Name
putValue(Action.NAME, Messages.getString(prefix + ".name"));
// Tooltip
putValue(Action.SHORT_DESCRIPTION, Messages.getString(prefix + ".desc"));
// Mnenomic and menu icons
if (!FileUtil.isMac()){
String iconName = Messages.getString(prefix + ".iconName");
putValue(Action.SMALL_ICON, DialogUtil.getDialogIcon(iconName));
String mnem = Messages.getString(prefix + ".mnem");
if (!mnem.startsWith("!"))
putValue(Action.MNEMONIC_KEY, new Integer(mnem.charAt(0)));
}
// Accelerator
String accel = Messages.getString(prefix + ".accel");
if (accel.startsWith("!"))
return;
else if (accel.startsWith("shift")){
putValue(Action.ACCELERATOR_KEY,
KeyStroke.getKeyStroke(
KeyStroke.getKeyStroke(accel).getKeyCode(),
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() +
Event.SHIFT_MASK
)
);
} else {
putValue(Action.ACCELERATOR_KEY,
KeyStroke.getKeyStroke(
KeyStroke.getKeyStroke(accel).getKeyCode(),
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()
)
);
}
}
// filled in by subclasses
abstract public void actionPerformed(ActionEvent e);
}