From 55da56427e45720f6e2f46c7d60ab390748e3be2 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 24 Jan 2013 21:09:30 +0100 Subject: [PATCH] Fixed host selector. --- .../com/intellij/tools/HackyDataContext.java | 17 ++++++++++++----- .../lang-impl/src/com/intellij/tools/Tool.java | 3 ++- .../src/com/intellij/tools/ToolAction.java | 8 ++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/tools/HackyDataContext.java b/platform/lang-impl/src/com/intellij/tools/HackyDataContext.java index 4b18c01c71f9..a540e1ff6abd 100644 --- a/platform/lang-impl/src/com/intellij/tools/HackyDataContext.java +++ b/platform/lang-impl/src/com/intellij/tools/HackyDataContext.java @@ -15,16 +15,17 @@ */ package com.intellij.tools; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.DataKey; -import com.intellij.openapi.actionSystem.LangDataKeys; -import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.actionSystem.*; import org.jetbrains.annotations.NonNls; import java.util.HashMap; import java.util.Map; /** + * Stores main keys from DataContext. + * + * Normally nobody needs this. This handles specific case when after action is invoked a dialog can appear, but + * we need the DataContext from the action. * * @author Konstantin Bulenkov */ @@ -40,8 +41,10 @@ class HackyDataContext implements DataContext { private final Map values = new HashMap(); + private AnActionEvent myActionEvent; - public HackyDataContext(DataContext context) { + public HackyDataContext(DataContext context, AnActionEvent e) { + myActionEvent = e; for (DataKey key : keys) { values.put(key.getName(), key.getData(context)); } @@ -56,4 +59,8 @@ class HackyDataContext implements DataContext { System.out.println("Please add " + dataId + " key in " + getClass().getName()); return null; } + + AnActionEvent getActionEvent() { + return myActionEvent; + } } diff --git a/platform/lang-impl/src/com/intellij/tools/Tool.java b/platform/lang-impl/src/com/intellij/tools/Tool.java index ef062945cb6f..7ebeb3c6d476 100644 --- a/platform/lang-impl/src/com/intellij/tools/Tool.java +++ b/platform/lang-impl/src/com/intellij/tools/Tool.java @@ -26,6 +26,7 @@ import com.intellij.execution.runners.ProgramRunner; import com.intellij.execution.util.ExecutionErrorDialog; import com.intellij.ide.macro.Macro; import com.intellij.ide.macro.MacroManager; +import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -259,7 +260,7 @@ public class Tool implements SchemeElement { return name.toString(); } - public void execute(DataContext dataContext) { + public void execute(AnActionEvent event, DataContext dataContext) { final Project project = PlatformDataKeys.PROJECT.getData(dataContext); if (project == null) { return; diff --git a/platform/lang-impl/src/com/intellij/tools/ToolAction.java b/platform/lang-impl/src/com/intellij/tools/ToolAction.java index 0a9c2a11c39c..caa2b6124c5b 100644 --- a/platform/lang-impl/src/com/intellij/tools/ToolAction.java +++ b/platform/lang-impl/src/com/intellij/tools/ToolAction.java @@ -37,7 +37,7 @@ public class ToolAction extends AnAction implements DumbAware { } public void actionPerformed(AnActionEvent e) { - runTool(myActionId, e.getDataContext()); + runTool(myActionId, e.getDataContext(), e); } @Override @@ -63,9 +63,13 @@ public class ToolAction extends AnAction implements DumbAware { } static void runTool(String actionId, DataContext context) { + runTool(actionId, context, null); + } + + static void runTool(String actionId, DataContext context, AnActionEvent e) { Tool tool = findTool(actionId, context); if (tool != null) { - tool.execute(new HackyDataContext(context)); + tool.execute(e, new HackyDataContext(context, e)); } } }