summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java')
-rw-r--r--platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java43
1 files changed, 40 insertions, 3 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 d704e738efa3..bfd00da9107d 100644
--- a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
+++ b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
@@ -18,9 +18,11 @@ package com.intellij.ide.actions;
import com.intellij.codeInsight.navigation.NavigationUtil;
import com.intellij.execution.Executor;
import com.intellij.execution.ExecutorRegistry;
+import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.actions.ChooseRunConfigurationPopup;
import com.intellij.execution.actions.ExecutorProvider;
import com.intellij.execution.executors.DefaultRunExecutor;
+import com.intellij.execution.impl.RunDialog;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
@@ -116,7 +118,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
* @author Konstantin Bulenkov
*/
@SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
-public class SearchEverywhereAction extends AnAction implements CustomComponentAction, DumbAware{
+public class SearchEverywhereAction extends AnAction implements CustomComponentAction, DumbAware, DataProvider, RightAlignedToolbarAction {
public static final String SE_HISTORY_KEY = "SearchEverywhereHistoryKey";
public static final int SEARCH_FIELD_COLUMNS = 25;
private static final int MAX_CLASSES = 6;
@@ -321,6 +323,12 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
}
+ @Nullable
+ @Override
+ public Object getData(@NonNls String dataId) {
+ return null;
+ }
+
private static String getShortcut() {
String shortcutText;
final Shortcut[] shortcuts = KeymapManager.getInstance().getActiveKeymap().getShortcuts(IdeActions.ACTION_SEARCH_EVERYWHERE);
@@ -673,6 +681,7 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
panel.add(myPopupField, BorderLayout.CENTER);
panel.add(topPanel, BorderLayout.NORTH);
panel.setBorder(IdeBorderFactory.createEmptyBorder(3, 5, 4, 5));
+ DataManager.registerDataProvider(panel, this);
final ComponentPopupBuilder builder = JBPopupFactory.getInstance().createComponentPopupBuilder(panel, editor);
myBalloon = builder
.setCancelOnClickOutside(true)
@@ -695,7 +704,7 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
});
Component parent = UIUtil.findUltimateParent(window);
- registerDataProvider(panel);
+ registerDataProvider(panel, e.getProject());
final RelativePoint showPoint;
if (me != null) {
final Component label = me.getComponent();
@@ -773,7 +782,12 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
storage.setValues(SE_HISTORY_KEY, newValues);
}
- private void registerDataProvider(JPanel panel) {
+ public Executor getExecutor() {
+ return ourShiftIsPressed.get() ? DefaultRunExecutor.getRunExecutorInstance()
+ : ExecutorRegistry.getInstance().getExecutorById(ToolWindowId.DEBUG);
+ }
+
+ private void registerDataProvider(JPanel panel, final Project project) {
DataManager.registerDataProvider(panel, new DataProvider() {
@Nullable
@Override
@@ -783,6 +797,29 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
return value;
} else if (CommonDataKeys.VIRTUAL_FILE.is(dataId) && value instanceof VirtualFile) {
return value;
+ } else if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
+ if (value instanceof Navigatable) return value;
+ if (value instanceof ChooseRunConfigurationPopup.ItemWrapper) {
+ final Object config = ((ChooseRunConfigurationPopup.ItemWrapper)value).getValue();
+ if (config instanceof RunnerAndConfigurationSettings) {
+ return new Navigatable() {
+ @Override
+ public void navigate(boolean requestFocus) {
+ RunDialog.editConfiguration(project, (RunnerAndConfigurationSettings)config, "Edit Configuration", getExecutor());
+ }
+
+ @Override
+ public boolean canNavigate() {
+ return true;
+ }
+
+ @Override
+ public boolean canNavigateToSource() {
+ return true;
+ }
+ };
+ }
+ }
}
return null;
}