From 306b4b7747d9bd4606a88176fef86b787f671604 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 29 Jul 2013 00:53:17 +0200 Subject: [PATCH] goto action and settings --- .../ide/actions/SearchEverywhereAction.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java index cd75dfcf27c1..7545f48832ec 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java @@ -76,6 +76,8 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication()); private JList myList = new JList(); //don't use JBList here!!! todo[kb] + private AnActionEvent myActionEvent; + private Component myContextComponent; public SearchEverywhereAction() { createSearchField(); @@ -130,7 +132,6 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA }, 300); } }); - final Project project = PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(editor)); editor.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { @@ -164,7 +165,7 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA IdeFocusManager focusManager = IdeFocusManager.findInstanceByComponent(editor); focusManager.requestDefaultFocus(true); } else if (keyCode == KeyEvent.VK_ENTER) { - doNavigate(project); + doNavigate(); } } }); @@ -189,8 +190,9 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA }); } - private void doNavigate(Project project) { - Object value = myList.getSelectedValue(); + private void doNavigate() { + final Object value = myList.getSelectedValue(); + final Project project = PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(field.getTextEditor())); IdeFocusManager focusManager = IdeFocusManager.findInstanceByComponent(field.getTextEditor()); if (myPopup != null && myPopup.isVisible()) { myPopup.cancel(); @@ -206,6 +208,15 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA navigatable.navigate(true); return; } + } else { + focusManager.requestDefaultFocus(true); + IdeFocusManager.getInstance(project).doWhenFocusSettlesDown(new Runnable() { + @Override + public void run() { + GotoActionAction.openOptionOrPerformAction(value, field.getText(), project, myContextComponent ,myActionEvent); + } + }); + return; } } finally { token.finish(); @@ -339,6 +350,8 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA public void actionPerformed(AnActionEvent e) { IdeFocusManager focusManager = IdeFocusManager.getInstance(e.getProject()); focusManager.requestFocus(field.getTextEditor(), true); + myActionEvent = e; + myContextComponent = PlatformDataKeys.CONTEXT_COMPONENT.getData(e.getDataContext()); } @Override