From 1e68b2318722103061b427c9f8f9d3a5e73d6031 Mon Sep 17 00:00:00 2001 From: Stanislav Dombrovsky Date: Sat, 22 Jul 2017 20:49:51 +0300 Subject: [PATCH 1/3] OC 4458 Select the simulator when there s no device connected change logic fix tests --- .../intellij/execution/DefaultExecutionTarget.java | 5 +++++ .../src/com/intellij/execution/ExecutionTarget.java | 2 ++ .../execution/ExecutionTargetManagerImpl.java | 12 ++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java b/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java index 80643b9633ac..6d3ee5e76169 100644 --- a/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java +++ b/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java @@ -44,4 +44,9 @@ public class DefaultExecutionTarget extends ExecutionTarget { public boolean canRun(@NotNull RunnerAndConfigurationSettings configuration) { return true; } + + @Override + public boolean isReady() { + return true; + } } diff --git a/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java b/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java index 353c269b7fd5..f7c5f1b656c1 100644 --- a/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java +++ b/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java @@ -55,6 +55,8 @@ public abstract class ExecutionTarget { */ public abstract boolean canRun(@NotNull RunnerAndConfigurationSettings configuration); + public abstract boolean isReady(); + @Override public boolean equals(Object obj) { return obj == this || (getClass().isInstance(obj) && getId().equals(((ExecutionTarget)obj).getId())); diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java index 8206141f0741..887d1cde0cd2 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java @@ -22,7 +22,6 @@ import com.intellij.openapi.components.Storage; import com.intellij.openapi.components.StoragePathMacros; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; -import com.intellij.util.containers.ContainerUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -125,7 +124,7 @@ public class ExecutionTargetManagerImpl extends ExecutionTargetManager implement } } toNotify = - doSetActiveTarget(index >= 0 ? suitable.get(index) : ContainerUtil.getFirstItem(suitable, DefaultExecutionTarget.INSTANCE)); + doSetActiveTarget(index >= 0 ? suitable.get(index) : getDefaultTarget(suitable)); } if (toNotify != null) { @@ -133,6 +132,15 @@ public class ExecutionTargetManagerImpl extends ExecutionTargetManager implement } } + private static ExecutionTarget getDefaultTarget(List suitable){ + for (ExecutionTarget target: suitable){ + if (target.isReady()){ + return target; + } + } + return DefaultExecutionTarget.INSTANCE; + } + @Nullable private ExecutionTarget doSetActiveTarget(@NotNull ExecutionTarget newTarget) { mySavedActiveTargetId = null; From 8bb7148e1409c22116cb1a310a5fc4024a192265 Mon Sep 17 00:00:00 2001 From: Stanislav Dombrovsky Date: Mon, 24 Jul 2017 17:17:28 +0300 Subject: [PATCH 2/3] OC 4458 Select the simulator when there s no device connected [default implementation for ExecutionTarget#isReady] --- .../src/com/intellij/execution/DefaultExecutionTarget.java | 5 ----- .../lang-api/src/com/intellij/execution/ExecutionTarget.java | 4 +++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java b/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java index 6d3ee5e76169..80643b9633ac 100644 --- a/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java +++ b/platform/lang-api/src/com/intellij/execution/DefaultExecutionTarget.java @@ -44,9 +44,4 @@ public class DefaultExecutionTarget extends ExecutionTarget { public boolean canRun(@NotNull RunnerAndConfigurationSettings configuration) { return true; } - - @Override - public boolean isReady() { - return true; - } } diff --git a/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java b/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java index f7c5f1b656c1..0f68710c852b 100644 --- a/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java +++ b/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java @@ -55,7 +55,9 @@ public abstract class ExecutionTarget { */ public abstract boolean canRun(@NotNull RunnerAndConfigurationSettings configuration); - public abstract boolean isReady(); + public boolean isReady() { + return true; + } @Override public boolean equals(Object obj) { From 10b1f4700decaaf358a52b6e6d303975763ac79e Mon Sep 17 00:00:00 2001 From: Stanislav Dombrovsky Date: Thu, 27 Jul 2017 21:23:13 +0300 Subject: [PATCH 3/3] OC-4458 Select the simulator when there's no device connected [remove not needed files from the test project, review fixes] --- .../src/com/intellij/execution/ExecutionTarget.java | 4 ++++ .../intellij/execution/ExecutionTargetManagerImpl.java | 9 +++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java b/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java index 0f68710c852b..d5c56aabba49 100644 --- a/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java +++ b/platform/lang-api/src/com/intellij/execution/ExecutionTarget.java @@ -55,6 +55,10 @@ public abstract class ExecutionTarget { */ public abstract boolean canRun(@NotNull RunnerAndConfigurationSettings configuration); + /** + * Checks if the target is ready to be selected as a default choice in the Run Configurations popup + * @return true if the target is ready, false otherwise + */ public boolean isReady() { return true; } diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java b/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java index 887d1cde0cd2..29cc62dcda7f 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ExecutionTargetManagerImpl.java @@ -22,6 +22,7 @@ import com.intellij.openapi.components.Storage; import com.intellij.openapi.components.StoragePathMacros; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; +import com.intellij.util.containers.ContainerUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -133,12 +134,8 @@ public class ExecutionTargetManagerImpl extends ExecutionTargetManager implement } private static ExecutionTarget getDefaultTarget(List suitable){ - for (ExecutionTarget target: suitable){ - if (target.isReady()){ - return target; - } - } - return DefaultExecutionTarget.INSTANCE; + ExecutionTarget result = ContainerUtil.find(suitable, ExecutionTarget::isReady); + return result != null ? result : DefaultExecutionTarget.INSTANCE; } @Nullable