diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessAction.java index c1b74d958834..eac90790b0a6 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessAction.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessAction.java @@ -4,6 +4,7 @@ package com.intellij.xdebugger.impl.actions; import com.intellij.icons.AllIcons; import com.intellij.xdebugger.XDebuggerBundle; import com.intellij.xdebugger.attach.XAttachDebuggerProvider; +import com.intellij.xdebugger.attach.XAttachHostProvider; public class AttachToProcessAction extends AttachToProcessActionBase { public AttachToProcessAction() { @@ -11,6 +12,7 @@ public class AttachToProcessAction extends AttachToProcessActionBase { XDebuggerBundle.message("xdebugger.attach.action.description"), AllIcons.Debugger.AttachToProcess, () -> XAttachDebuggerProvider.getAttachDebuggerProviders(), + () -> XAttachHostProvider.EP.getExtensionList(), XDebuggerBundle.message("xdebugger.attach.popup.selectDebugger.title") ); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessActionBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessActionBase.java index f56c1356b97c..3400e6380f2f 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessActionBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/AttachToProcessActionBase.java @@ -47,16 +47,23 @@ public abstract class AttachToProcessActionBase extends AnAction { Key.create("AttachToProcessAction.RECENT_ITEMS_KEY"); private static final Logger LOG = Logger.getInstance(AttachToProcessActionBase.class); - private final Supplier> attachProvidersSupplier; - private final String attachActionsListTitle; + @NotNull + private final Supplier> myAttachProvidersSupplier; + @NotNull + private final String myAttachActionsListTitle; + @NotNull + private final Supplier> myAttachHostProviderSupplier; public AttachToProcessActionBase(@Nullable String text, @Nullable String description, - @Nullable Icon icon, @NotNull Supplier> attachProvidersSupplier, + @Nullable Icon icon, + @NotNull Supplier> attachProvidersSupplier, + @NotNull Supplier> attachHostProviderSupplier, @NotNull String attachActionsListTitle) { super(text, description, icon); - this.attachProvidersSupplier = attachProvidersSupplier; - this.attachActionsListTitle = attachActionsListTitle; + myAttachProvidersSupplier = attachProvidersSupplier; + myAttachActionsListTitle = attachActionsListTitle; + myAttachHostProviderSupplier = attachHostProviderSupplier; } @Override @@ -64,7 +71,7 @@ public abstract class AttachToProcessActionBase extends AnAction { super.update(e); Project project = getEventProject(e); - int attachDebuggerProvidersNumber = attachProvidersSupplier.get().size(); + int attachDebuggerProvidersNumber = myAttachProvidersSupplier.get().size(); boolean enabled = project != null && attachDebuggerProvidersNumber > 0; e.getPresentation().setEnabledAndVisible(enabled); } @@ -163,7 +170,7 @@ public abstract class AttachToProcessActionBase extends AnAction { UserDataHolderBase dataHolder = new UserDataHolderBase(); - for (XAttachHostProvider hostProvider : XAttachHostProvider.EP.getExtensionList()) { + for (XAttachHostProvider hostProvider : myAttachHostProviderSupplier.get()) { indicator.checkCanceled(); //noinspection unchecked Set hosts = new HashSet<>(hostProvider.getAvailableHosts(project)); @@ -234,7 +241,7 @@ public abstract class AttachToProcessActionBase extends AnAction { @NotNull private List getProvidersApplicableForHost(@NotNull XAttachHost host) { - return ContainerUtil.filter(attachProvidersSupplier.get(), provider -> provider.isAttachHostApplicable(host)); + return ContainerUtil.filter(myAttachProvidersSupplier.get(), provider -> provider.isAttachHostApplicable(host)); } @NotNull @@ -695,7 +702,7 @@ public abstract class AttachToProcessActionBase extends AnAction { private class ActionListStep extends MyBasePopupStep { ActionListStep(List items, int selectedItem) { - super(AttachListStep.this.myProject, AttachToProcessActionBase.this.attachActionsListTitle, items); + super(AttachListStep.this.myProject, AttachToProcessActionBase.this.myAttachActionsListTitle, items); setDefaultOptionIndex(selectedItem); }