diff --git a/platform/lang-api/src/com/intellij/execution/RunnerIconProvider.java b/platform/lang-api/src/com/intellij/execution/RunnerIconProvider.java new file mode 100644 index 000000000000..a1451b3afbb7 --- /dev/null +++ b/platform/lang-api/src/com/intellij/execution/RunnerIconProvider.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.execution; + +import com.intellij.execution.configurations.RunConfiguration; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +/** + * Marker interface for a {@link RunConfiguration} to indicate that it can provide custom icons. + */ +public interface RunnerIconProvider { + @Nullable Icon getExecutorIcon(@NotNull RunConfiguration configuration, @NotNull Executor executor); +} diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java index e479c5c94a25..18df37d5a567 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java @@ -16,6 +16,7 @@ package com.intellij.execution; import com.intellij.execution.actions.RunContextAction; +import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.impl.ExecutionManagerImpl; import com.intellij.execution.process.ProcessHandler; @@ -247,6 +248,15 @@ public class ExecutorRegistryImpl extends ExecutorRegistry { private Icon getInformativeIcon(Project project, final RunnerAndConfigurationSettings selectedConfiguration) { final ExecutionManagerImpl executionManager = ExecutionManagerImpl.getInstance(project); + RunConfiguration configuration = selectedConfiguration.getConfiguration(); + if (configuration instanceof RunnerIconProvider) { + RunnerIconProvider provider = (RunnerIconProvider)configuration; + Icon icon = provider.getExecutorIcon(configuration, myExecutor); + if (icon != null) { + return icon; + } + } + List runningDescriptors = executionManager.getRunningDescriptors(new Condition() { @Override