Fix for http://www.jetbrains.net/jira/browse/IDEADEV-10644
[fedora-idea.git] / platform-impl / src / com / intellij / ide / actions / ShowPopupMenuAction.java
blobd73b8bda4ff2574de511d58f16ef6880aa4bf1e8
1 package com.intellij.ide.actions;
3 import com.intellij.openapi.actionSystem.AnAction;
4 import com.intellij.openapi.actionSystem.AnActionEvent;
5 import com.intellij.openapi.ui.popup.JBPopupFactory;
6 import com.intellij.ui.awt.RelativePoint;
8 import javax.swing.*;
9 import java.awt.*;
10 import java.awt.event.MouseEvent;
12 /**
13 * @author Vladimir Kondratyev
15 public class ShowPopupMenuAction extends AnAction {
16 public ShowPopupMenuAction() {
17 setEnabledInModalContext(true);
20 public void actionPerformed(AnActionEvent e) {
21 final RelativePoint relPoint = JBPopupFactory.getInstance().guessBestPopupLocation(e.getDataContext());
23 KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
24 Component focusOwner = focusManager.getFocusOwner();
26 Point popupMenuPoint = relPoint.getPoint(focusOwner);
28 focusOwner.dispatchEvent(
29 new MouseEvent(
30 focusOwner,
31 MouseEvent.MOUSE_PRESSED,
32 System.currentTimeMillis(), 0,
33 popupMenuPoint.x,
34 Math.max(0, popupMenuPoint.y - 1), //To avoid cursor jump to the line below. http://www.jetbrains.net/jira/browse/IDEADEV-10644
36 true
41 public void update(AnActionEvent e) {
42 KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
43 e.getPresentation().setEnabled(focusManager.getFocusOwner() instanceof JComponent);