001 package nl.cwi.sen1.util;
002
003 import java.awt.event.MouseEvent;
004 import javax.swing.SwingUtilities;
005
006
007 import nl.cwi.sen1.configapi.types.ActionDescriptionList;
008 import toolbus.AbstractTool;
009 import aterm.ATerm;
010
011 public class DefaultPopupImpl {
012 private AbstractTool bridge;
013
014 public DefaultPopupImpl(AbstractTool bridge) {
015 this.bridge = bridge;
016 }
017
018 public void showPopup(final ATerm id, final ActionDescriptionList menuList) {
019 SwingUtilities.invokeLater(new Runnable() {
020 public void run() {
021 MouseEvent popupEvent = MouseAdapter.getPreviousPopupEvent();
022
023 if (popupEvent != null) {
024 StudioPopupMenu popup = new StudioPopupMenu(id, bridge, menuList,
025 null);
026 try {
027 popup.show(popupEvent.getComponent(), popupEvent.getX(),
028 popupEvent.getY());
029 } catch (IllegalStateException e) {
030 // Happens when user selects another tab, so that the original
031 // component is not visible anymore
032 }
033 } else {
034 System.err.println("Popup got lost!");
035 }
036 }
037 });
038 }
039 }