mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
OC-18215 Fold local PIDs if any attach host present in "Attach to Process" dialog
This commit is contained in:
+12
-9
@@ -74,7 +74,7 @@ public class AttachToProcessAction extends AnAction {
|
||||
@Override
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
|
||||
List<AttachItem> allItems = getTopLevelItems(indicator, project);
|
||||
List<AttachItem> allItems = ContainerUtil.immutableList(getTopLevelItems(indicator, project));
|
||||
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
AttachListStep step = new AttachListStep(allItems, XDebuggerBundle.message("xdebugger.attach.popup.title.default"), project);
|
||||
@@ -119,15 +119,18 @@ public class AttachToProcessAction extends AnAction {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected List<AttachItem> getTopLevelItems(@NotNull ProgressIndicator indicator, @NotNull Project project) {
|
||||
List<AttachToProcessItem> localAttachToProcessItems = collectAttachProcessItems(
|
||||
project, LocalAttachHost.INSTANCE, indicator
|
||||
);
|
||||
List<AttachItem> remoteAttachToProcessItems = collectAttachHostsItems(
|
||||
project, indicator
|
||||
);
|
||||
protected List<? extends AttachItem> getTopLevelItems(@NotNull ProgressIndicator indicator, @NotNull Project project) {
|
||||
List<AttachItem> attachHostItems = collectAttachHostsItems(project, indicator);
|
||||
|
||||
return ContainerUtil.concat(remoteAttachToProcessItems, localAttachToProcessItems);
|
||||
// If any of hosts available, fold local PIDs into "Local Host" subgroup
|
||||
if (!attachHostItems.isEmpty()) {
|
||||
AttachItem localHostGroupItem = new AttachHostItem(
|
||||
LocalAttachHostPresentationGroup.INSTANCE, false, LocalAttachHost.INSTANCE, project, new UserDataHolderBase());
|
||||
attachHostItems.add(localHostGroupItem);
|
||||
doUpdateFirstInGroup(attachHostItems);
|
||||
return attachHostItems;
|
||||
}
|
||||
return collectAttachProcessItems(project, LocalAttachHost.INSTANCE, indicator);
|
||||
}
|
||||
|
||||
private static void doUpdateFirstInGroup(@NotNull List<? extends AttachItem> items) {
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.xdebugger.impl.actions
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.UserDataHolder
|
||||
import com.intellij.util.ui.EmptyIcon
|
||||
import com.intellij.xdebugger.attach.XAttachHost
|
||||
import com.intellij.xdebugger.attach.XAttachPresentationGroup
|
||||
import javax.swing.Icon
|
||||
|
||||
object LocalAttachHostPresentationGroup: XAttachPresentationGroup<XAttachHost> {
|
||||
// Should be at the bottom of the list
|
||||
override fun getOrder(): Int {
|
||||
return Int.MAX_VALUE
|
||||
}
|
||||
|
||||
override fun getGroupName(): String {
|
||||
return ""
|
||||
}
|
||||
|
||||
override fun getProcessIcon(project: Project, info: XAttachHost, dataHolder: UserDataHolder): Icon {
|
||||
TODO("deprecated method should not be invoked")
|
||||
}
|
||||
|
||||
override fun getItemIcon(project: Project, info: XAttachHost, dataHolder: UserDataHolder): Icon {
|
||||
return EmptyIcon.ICON_16
|
||||
}
|
||||
|
||||
override fun getProcessDisplayText(project: Project, info: XAttachHost, dataHolder: UserDataHolder): String {
|
||||
TODO("deprecated method should not be invoked")
|
||||
}
|
||||
|
||||
override fun getItemDisplayText(project: Project, info: XAttachHost, dataHolder: UserDataHolder): String {
|
||||
return "Local Host"
|
||||
}
|
||||
|
||||
override fun compare(o1: XAttachHost?, o2: XAttachHost?): Int {
|
||||
return compareValuesBy(o1, o2, Any?::hashCode)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user