mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-287497 Reuse existing configuration-action class in the new run-configurations popup
Also return possibility to select configuration GitOrigin-RevId: b2b97d64536bcfd99f25cc8051f371d4c3d5f0eb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fca52ab974
commit
bf1f4d88e0
+1
-1
@@ -442,7 +442,7 @@ public class RunConfigurationsComboBoxAction extends ComboBoxAction implements D
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static final class SelectConfigAction extends DefaultActionGroup implements DumbAware {
|
||||
public static class SelectConfigAction extends DefaultActionGroup implements DumbAware {
|
||||
private final RunnerAndConfigurationSettings myConfiguration;
|
||||
private final Project myProject;
|
||||
private final @NotNull Function<? super Executor, Boolean> myExecutorFilter;
|
||||
|
||||
@@ -218,17 +218,17 @@ private class OtherRunOptions : TogglePopupAction(
|
||||
}
|
||||
}
|
||||
|
||||
internal fun createOtherRunnersSubgroup(runConfiguration: RunnerAndConfigurationSettings?, project: Project): ActionGroup? {
|
||||
val executorFilter: (Executor) -> Boolean = {
|
||||
// Cannot use DefaultDebugExecutor.EXECUTOR_ID because of module dependencies
|
||||
it.id != ToolWindowId.RUN && it.id != ToolWindowId.DEBUG
|
||||
}
|
||||
internal val excludeRunAndDebug: (Executor) -> Boolean = {
|
||||
// Cannot use DefaultDebugExecutor.EXECUTOR_ID because of module dependencies
|
||||
it.id != ToolWindowId.RUN && it.id != ToolWindowId.DEBUG
|
||||
}
|
||||
|
||||
private fun createOtherRunnersSubgroup(runConfiguration: RunnerAndConfigurationSettings?, project: Project): ActionGroup? {
|
||||
if (runConfiguration != null) {
|
||||
return RunConfigurationsComboBoxAction.SelectConfigAction(runConfiguration, project, executorFilter)
|
||||
return RunConfigurationsComboBoxAction.SelectConfigAction(runConfiguration, project, excludeRunAndDebug)
|
||||
}
|
||||
if (RunConfigurationsComboBoxAction.hasRunCurrentFileItem(project)) {
|
||||
return RunConfigurationsComboBoxAction.RunCurrentFileAction(executorFilter)
|
||||
return RunConfigurationsComboBoxAction.RunCurrentFileAction(excludeRunAndDebug)
|
||||
}
|
||||
return ActionGroup.EMPTY_GROUP
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package com.intellij.execution.ui
|
||||
|
||||
import com.intellij.execution.*
|
||||
import com.intellij.execution.actions.RunConfigurationsComboBoxAction
|
||||
import com.intellij.execution.configurations.RunProfile
|
||||
import com.intellij.execution.executors.DefaultRunExecutor
|
||||
import com.intellij.execution.executors.ExecutorGroup
|
||||
@@ -10,7 +11,6 @@ import com.intellij.execution.impl.ExecutionManagerImpl.Companion.isProcessRunni
|
||||
import com.intellij.execution.impl.isOfSameType
|
||||
import com.intellij.execution.process.ProcessHandler
|
||||
import com.intellij.execution.runners.ExecutionEnvironment
|
||||
import com.intellij.execution.runners.ExecutionUtil
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.ide.ActivityTracker
|
||||
import com.intellij.ide.DataManager
|
||||
@@ -33,7 +33,10 @@ import com.intellij.openapi.project.DumbAwareAction
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.startup.StartupActivity
|
||||
import com.intellij.openapi.ui.popup.*
|
||||
import com.intellij.openapi.util.*
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.IconLoader
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.util.UserDataHolder
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.wm.ToolWindowId
|
||||
@@ -248,17 +251,7 @@ internal fun createRunConfigurationsActionGroup(project: Project, addHeader: Boo
|
||||
inlineActions.add(RunToolbarWidgetRunAction(runExecutor) { conf })
|
||||
inlineActions.add(RunToolbarWidgetRunAction(debugExecutor) { conf })
|
||||
|
||||
actions.add(ActionGroupWithInlineActions(conf.shortenName(), true, inlineActions).apply {
|
||||
templatePresentation.icon = conf.configuration.icon
|
||||
if (conf.isRunning(project)) {
|
||||
templatePresentation.icon = ExecutionUtil.getLiveIndicator(templatePresentation.icon)
|
||||
}
|
||||
|
||||
val subgroup = createOtherRunnersSubgroup(conf, project)
|
||||
if (subgroup != null) {
|
||||
addAll(subgroup)
|
||||
}
|
||||
})
|
||||
actions.add(ActionGroupWithInlineActions(inlineActions, conf, project))
|
||||
}
|
||||
actions.add(Separator.create())
|
||||
actions.add(DelegateAction({ ExecutionBundle.message("run.toolbar.widget.all.configurations") },
|
||||
@@ -302,7 +295,9 @@ private class DelegateAction(val string: Supplier<@Nls String>, delegate: AnActi
|
||||
}
|
||||
}
|
||||
|
||||
private class ActionGroupWithInlineActions(@NlsActions.ActionText name: String, popup: Boolean, private val actions: List<AnAction>) : DefaultActionGroup(name, popup), InlineActionsHolder {
|
||||
private class ActionGroupWithInlineActions(
|
||||
private val actions: List<AnAction>, configuration: RunnerAndConfigurationSettings, project: Project
|
||||
) : RunConfigurationsComboBoxAction.SelectConfigAction(configuration, project, excludeRunAndDebug), InlineActionsHolder {
|
||||
override fun getInlineActions(): List<AnAction> = actions
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user