package org.robotframework.swing.testapp;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class ContextMenu extends JPopupMenu implements ActionListener {
private static final Map<String, Operation> commands = new HashMap<String, Operation>();
private volatile Component operatedComponent = null;
public ContextMenu() {
setOpaque(true);
setLightWeightPopupEnabled(true);
setName("contextMenu");
}
public ContextMenu add(String text, Operation command) {
add(new ContextMenuItem(text, command));
return this;
}
@Override
public void show(Component invoker, int x, int y) {
Delay.delay();
operatedComponent = invoker;
super.show(invoker, x, y);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
commands.get(command).perform(operatedComponent);
}
private class ContextMenuItem extends JMenuItem {
public ContextMenuItem(String text, Operation command) {
super(text);
setName(text.toUpperCase());
addActionListener(ContextMenu.this);
setActionCommand(text);
commands.put(text, command);
}
}
}