diff --git a/README.md b/README.md index d25467f..25c4df4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Plugins for Jetbrains IDEs. It's provides a way to use run configurations as buttons on toolbar. Or assign shortcuts to execute specific run configuration. -Plugin is compatible with all major IDEs based on IntelliJ Platform starting from version 2016.x: +Plugin is compatible with all major IDEs based on IntelliJ Platform starting from version 2018.1: * IntelliJ IDEA * Android Studio * PhpStorm diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml index 784acb0..167775d 100644 --- a/resources/META-INF/plugin.xml +++ b/resources/META-INF/plugin.xml @@ -14,7 +14,8 @@ Also it allows to create button in toolbar to run specific configuration.

1.3

1.2

@@ -28,7 +29,7 @@ Also it allows to create button in toolbar to run specific configuration.
]]> - + com.intellij.modules.platform diff --git a/src/org/turbanov/actions/Bootstrap.java b/src/org/turbanov/actions/Bootstrap.java index b66ec27..191f6d8 100644 --- a/src/org/turbanov/actions/Bootstrap.java +++ b/src/org/turbanov/actions/Bootstrap.java @@ -8,6 +8,7 @@ import java.util.Map; import java.util.function.Function; +import com.intellij.execution.DefaultExecutionTarget; import com.intellij.execution.ExecutionTarget; import com.intellij.execution.ExecutionTargetManager; import com.intellij.execution.Executor; @@ -54,8 +55,13 @@ private void registerAction(@NotNull RunnerAndConfigurationSettings runConfig, AnAction action = actionManager.getAction(actionId); if (action == null) { Icon icon = makeIcon(runConfig, executor); - String text = executor.getActionName() + " '" + runConfig.getName() + "'" + - (target == null ? "" : " " + target.getDisplayName()); + String targetAdd; + if (target == null || DefaultExecutionTarget.INSTANCE.equals(target)) { + targetAdd = ""; + } else { + targetAdd = " " + target.getDisplayName(); + } + String text = executor.getActionName() + " '" + runConfig.getName() + "'" + targetAdd; String executionTargetId = target == null ? null : target.getId(); action = new RunConfigurationAsAction(runConfig.getName(), executor.getId(), icon, text, executionTargetId); actionManager.registerAction(actionId, action, PLUGIN_ID); @@ -113,7 +119,10 @@ private void registerForAllExecutors(@NotNull RunnerAndConfigurationSettings set @NotNull private List getTargets(@NotNull RunnerAndConfigurationSettings runConfig) { - List targets = ExecutionTargetManager.getTargetsToChooseFor(myProject, runConfig); + List targets = ExecutionTargetManager.getInstance(myProject).getTargetsFor(runConfig); + if (targets.size() == 1 && DefaultExecutionTarget.INSTANCE.equals(targets.get(0))) { + return targets; + } targets = new ArrayList<>(targets); targets.add(null); return targets; diff --git a/src/org/turbanov/actions/RunConfigurationAsAction.java b/src/org/turbanov/actions/RunConfigurationAsAction.java index bd0bac5..73a2e41 100644 --- a/src/org/turbanov/actions/RunConfigurationAsAction.java +++ b/src/org/turbanov/actions/RunConfigurationAsAction.java @@ -12,9 +12,9 @@ import com.intellij.execution.ExecutionTargetManager; import com.intellij.execution.Executor; import com.intellij.execution.ExecutorRegistry; -import com.intellij.execution.ProgramRunnerUtil; import com.intellij.execution.RunManagerEx; import com.intellij.execution.RunnerAndConfigurationSettings; +import com.intellij.execution.runners.ExecutionUtil; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.diagnostic.Logger; @@ -59,27 +59,26 @@ public void actionPerformed(@NotNull AnActionEvent e) { return; } - selectRequiredExecutionTarget(project, runConfig); + ExecutionTarget target = getExecutionTarget(project, runConfig); - ProgramRunnerUtil.executeConfiguration(project, runConfig, executor); + ExecutionUtil.runConfiguration(runConfig, executor, target); } - private void selectRequiredExecutionTarget(@NotNull Project project, @NotNull RunnerAndConfigurationSettings runConfig) { - if (executionTargetId == null) { - return; //use selected as is - } + @NotNull + private ExecutionTarget getExecutionTarget(@NotNull Project project, @NotNull RunnerAndConfigurationSettings runConfig) { ExecutionTargetManager targetManager = ExecutionTargetManager.getInstance(project); - ExecutionTarget executionTarget = targetManager.getActiveTarget(); - if (executionTargetId.equals(executionTarget.getId())) { - return; //already selected ours + ExecutionTarget active = targetManager.getActiveTarget(); + if (executionTargetId == null || executionTargetId.equals(active.getId())) { + return active; //use selected as is } + List targets = targetManager.getTargetsFor(runConfig); for (ExecutionTarget target : targets) { if (target.getId().equals(executionTargetId)) { - targetManager.setActiveTarget(target); - return; + return target; } } + return active; //fallback to active } public void register() {