diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java b/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java index 06410ba0cdda..8eeff7c416e1 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaAttachDebuggerProvider.java @@ -23,10 +23,10 @@ import com.intellij.rt.execution.application.AppMainV2; import com.intellij.util.ArrayUtil; import com.intellij.util.PathUtil; import com.intellij.util.execution.ParametersListUtil; -import com.intellij.xdebugger.attach.XAttachProcessPresentationGroup; import com.intellij.xdebugger.attach.XDefaultLocalAttachGroup; import com.intellij.xdebugger.attach.XLocalAttachDebugger; import com.intellij.xdebugger.attach.XLocalAttachDebuggerProvider; +import com.intellij.xdebugger.attach.XLocalAttachGroup; import com.jetbrains.sa.SaJdwp; import com.sun.tools.attach.AttachNotSupportedException; import com.sun.tools.attach.VirtualMachine; @@ -71,7 +71,7 @@ public class JavaAttachDebuggerProvider implements XLocalAttachDebuggerProvider private static final Key> ADDRESS_MAP_KEY = Key.create("ADDRESS_MAP"); - private static final XAttachProcessPresentationGroup ourAttachGroup = new JavaDebuggerAttachGroup("Java", -20); + private static final XLocalAttachGroup ourAttachGroup = new JavaDebuggerAttachGroup("Java", -20); static class JavaDebuggerAttachGroup extends XDefaultLocalAttachGroup { private final String myName; @@ -95,7 +95,7 @@ public class JavaAttachDebuggerProvider implements XLocalAttachDebuggerProvider @NotNull @Override - public String getItemDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { + public String getProcessDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { LocalAttachInfo attachInfo = getAttachInfo(project, info.getPid(), info.getCommandLine(), dataHolder.getUserData(ADDRESS_MAP_KEY)); assert attachInfo != null; String res; @@ -117,7 +117,7 @@ public class JavaAttachDebuggerProvider implements XLocalAttachDebuggerProvider @NotNull @Override - public XAttachProcessPresentationGroup getPresentationGroup() { + public XLocalAttachGroup getAttachGroup() { return ourAttachGroup; } diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaSAAttachDebuggerProvider.java b/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaSAAttachDebuggerProvider.java index 1e185a193da5..c67309c373d1 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaSAAttachDebuggerProvider.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/attach/JavaSAAttachDebuggerProvider.java @@ -1,18 +1,18 @@ // Copyright 2000-2018 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.debugger.impl.attach; -import com.intellij.xdebugger.attach.XAttachProcessPresentationGroup; +import com.intellij.xdebugger.attach.XLocalAttachGroup; import org.jetbrains.annotations.NotNull; /** * @author egor */ public class JavaSAAttachDebuggerProvider extends JavaAttachDebuggerProvider { - private static final XAttachProcessPresentationGroup ourAttachGroup = new JavaDebuggerAttachGroup("Java Read Only", -19); + private static final XLocalAttachGroup ourAttachGroup = new JavaDebuggerAttachGroup("Java Read Only", -19); @NotNull @Override - public XAttachProcessPresentationGroup getPresentationGroup() { + public XLocalAttachGroup getAttachGroup() { return ourAttachGroup; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachDebuggerProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachDebuggerProvider.java index 6b667194f83c..52cf5c79c22e 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachDebuggerProvider.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachDebuggerProvider.java @@ -6,6 +6,7 @@ import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.UserDataHolder; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -17,6 +18,11 @@ import java.util.List; public interface XAttachDebuggerProvider { ExtensionPointName EP = ExtensionPointName.create("com.intellij.xdebugger.attachDebuggerProvider"); + /** + * will be removed in 2020.1, right after {@link XLocalAttachDebuggerProvider} + */ + @Deprecated + @ApiStatus.ScheduledForRemoval(inVersion = "2020.1") @NotNull static List getAttachDebuggerProviders() { return ContainerUtil.concat(new ArrayList<>(EP.getExtensionList()), diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachPresentationGroup.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachPresentationGroup.java index 48bb2c9690c6..0c17a6c0f697 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachPresentationGroup.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XAttachPresentationGroup.java @@ -18,6 +18,7 @@ package com.intellij.xdebugger.attach; import com.intellij.execution.process.ProcessInfo; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.UserDataHolder; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -26,9 +27,8 @@ import java.util.Comparator; /** * This interface describes visualization of attach items - * * @param type of the child items (belonging to this group) - * (applicable both for {@link XAttachHost} and {@link ProcessInfo} items) + * (applicable both for {@link XAttachHost} and {@link ProcessInfo} items) */ public interface XAttachPresentationGroup extends Comparator { /** @@ -39,13 +39,31 @@ public interface XAttachPresentationGroup extends Comparator { @NotNull String getGroupName(); + /** + * @deprecated Use {@link #getItemIcon(Project, Object, UserDataHolder)} (will be removed in 2020.1) + */ + @Deprecated + @NotNull + @ApiStatus.ScheduledForRemoval(inVersion = "2020.1") + Icon getProcessIcon(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder); + /** * @param dataHolder you may put your specific data into the holder at previous step in {@link XAttachDebuggerProvider#getAvailableDebuggers} * and use it for presentation * @return an icon to be shown in popup menu for your item, described by info */ @NotNull - Icon getItemIcon(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder); + default Icon getItemIcon(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder) { + return getProcessIcon(project, info, dataHolder); + } + + /** + * @deprecated Use {@link #getItemDisplayText(Project, Object, UserDataHolder)} (will be removed in 2020.1) + */ + @Deprecated + @NotNull + @ApiStatus.ScheduledForRemoval(inVersion = "2020.1") + String getProcessDisplayText(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder); /** * @param dataHolder you may put your specific data into the holder at previous step in {@link XAttachDebuggerProvider#getAvailableDebuggers} @@ -53,7 +71,9 @@ public interface XAttachPresentationGroup extends Comparator { * @return a text to be shown on your item, described by info */ @NotNull - String getItemDisplayText(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder); + default String getItemDisplayText(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder) { + return getProcessDisplayText(project, info, dataHolder); + } /** * @param dataHolder you may put your specific data into the holder at previous step in {@link XAttachDebuggerProvider#getAvailableDebuggers} @@ -64,4 +84,18 @@ public interface XAttachPresentationGroup extends Comparator { default String getItemDescription(@NotNull Project project, @NotNull T info, @NotNull UserDataHolder dataHolder) { return null; } + + /** + * @deprecated use {@link #compare(Object, Object)} (will be removed in 2020.1) + * + * Specifies process order in your group + * + * @param dataHolder you may put your specific data into the holder at previous step in {@link XAttachDebuggerProvider#getAvailableDebuggers} + * and use it for comparison + */ + @Deprecated + @ApiStatus.ScheduledForRemoval(inVersion = "2020.1") + default int compare(@NotNull Project project, @NotNull T a, @NotNull T b, @NotNull UserDataHolder dataHolder) { + return compare(a, b); + } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XDefaultLocalAttachGroup.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XDefaultLocalAttachGroup.java index 873d754f2b42..9e9708779189 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XDefaultLocalAttachGroup.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XDefaultLocalAttachGroup.java @@ -24,7 +24,11 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; -public class XDefaultLocalAttachGroup implements XAttachProcessPresentationGroup { +/** + * @deprecated use {@link XAttachPresentationGroup} instead + */ +@Deprecated +public class XDefaultLocalAttachGroup implements XLocalAttachGroup { public static final XDefaultLocalAttachGroup INSTANCE = new XDefaultLocalAttachGroup(); @Override @@ -41,13 +45,13 @@ public class XDefaultLocalAttachGroup implements XAttachProcessPresentationGroup @NotNull @Override public Icon getItemIcon(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { - return AllIcons.RunConfigurations.Application; + return getProcessIcon(project, info, dataHolder); } @NotNull @Override public String getItemDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { - return info.getExecutableDisplayName(); + return getProcessDisplayText(project, info, dataHolder); } @Nullable @@ -55,4 +59,16 @@ public class XDefaultLocalAttachGroup implements XAttachProcessPresentationGroup public String getItemDescription(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { return null; } + + @Override + @NotNull + public Icon getProcessIcon(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { + return AllIcons.RunConfigurations.Application; + } + + @Override + @NotNull + public String getProcessDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { + return info.getExecutableDisplayName(); + } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachDebuggerProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachDebuggerProvider.java index 78bf9055cbb0..751cc5a5aef0 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachDebuggerProvider.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachDebuggerProvider.java @@ -10,17 +10,34 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +/** + * @deprecated use {@link XAttachDebuggerProvider} instead + */ +@Deprecated public interface XLocalAttachDebuggerProvider extends XAttachDebuggerProvider { ExtensionPointName EP = ExtensionPointName.create("com.intellij.xdebugger.localAttachDebuggerProvider"); + /** + * @deprecated use {@link XAttachDebuggerProvider#getAvailableDebuggers(Project, XAttachHost, ProcessInfo, UserDataHolder)} instead + */ + @Deprecated List getAvailableDebuggers(@NotNull Project project, - @NotNull ProcessInfo process, - @NotNull UserDataHolder contextHolder); + @NotNull ProcessInfo process, + @NotNull UserDataHolder contextHolder); + + /** + * @deprecated use {@link XAttachDebuggerProvider#getPresentationGroup()} instead + */ + @Deprecated + @NotNull + default XAttachPresentationGroup getAttachGroup() { + return XDefaultLocalAttachGroup.INSTANCE; + } @NotNull @Override default XAttachPresentationGroup getPresentationGroup() { - return XDefaultLocalAttachGroup.INSTANCE; + return getAttachGroup(); } @Override @@ -31,9 +48,9 @@ public interface XLocalAttachDebuggerProvider extends XAttachDebuggerProvider { @NotNull @Override default List getAvailableDebuggers(@NotNull Project project, - @NotNull XAttachHost hostInfo, - @NotNull ProcessInfo process, - @NotNull UserDataHolder contextHolder) { + @NotNull XAttachHost hostInfo, + @NotNull ProcessInfo process, + @NotNull UserDataHolder contextHolder) { assert hostInfo instanceof LocalAttachHost; return new ArrayList<>(getAvailableDebuggers(project, process, contextHolder)); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachGroup.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachGroup.java new file mode 100644 index 000000000000..3270e928d837 --- /dev/null +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/attach/XLocalAttachGroup.java @@ -0,0 +1,46 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * 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.xdebugger.attach; + +import com.intellij.execution.process.ProcessInfo; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.UserDataHolder; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +/** + * @deprecated Use {@link XAttachProcessPresentationGroup} (will be removed in 2020.1) + */ +@ApiStatus.ScheduledForRemoval(inVersion = "2020.1") +@Deprecated +public interface XLocalAttachGroup extends XAttachProcessPresentationGroup { + /** + * @deprecated will be removed in 2020.1 + */ + @ApiStatus.ScheduledForRemoval(inVersion = "2020.1") + @Deprecated @NotNull + XLocalAttachGroup DEFAULT = new XDefaultLocalAttachGroup(); + + /** + * @deprecated use {@link #compare(ProcessInfo, ProcessInfo)} (will be removed in 2020.1) + */ + @ApiStatus.ScheduledForRemoval(inVersion = "2020.1") + @Override + @Deprecated + default int compare(@NotNull Project project, @NotNull ProcessInfo a, @NotNull ProcessInfo b, @NotNull UserDataHolder dataHolder) { + return compare(a, b); + } +} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/LocalAttachHostPresentationGroup.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/LocalAttachHostPresentationGroup.kt index 815636221e81..991f63170b15 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/LocalAttachHostPresentationGroup.kt +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/LocalAttachHostPresentationGroup.kt @@ -18,10 +18,18 @@ object LocalAttachHostPresentationGroup: XAttachPresentationGroup { 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" } diff --git a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/actions/AttachToProcessActionTest.java b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/actions/AttachToProcessActionTest.java index 850b4244608a..5a61186ad727 100644 --- a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/actions/AttachToProcessActionTest.java +++ b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/actions/AttachToProcessActionTest.java @@ -246,7 +246,7 @@ public class AttachToProcessActionTest extends HeavyPlatformTestCase { new TestDebuggerProvider(new TestAttachGroup("group", 0) { @NotNull @Override - public String getItemDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { + public String getProcessDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { return "custom"; } }, "dbg1")); @@ -639,22 +639,22 @@ public class AttachToProcessActionTest extends HeavyPlatformTestCase { private static class TestDebuggerProvider implements XLocalAttachDebuggerProvider { @Nullable private final Integer myFilterPID; - @NotNull private final XAttachPresentationGroup myGroup; + @NotNull private final XLocalAttachGroup myGroup; @NotNull private final List myDebuggers; TestDebuggerProvider(@Nullable Integer filterPID, - @NotNull XAttachPresentationGroup group, + @NotNull XLocalAttachGroup group, @NotNull List debuggers) { myFilterPID = filterPID; myGroup = group; myDebuggers = debuggers; } - TestDebuggerProvider(@Nullable Integer filterPID, @NotNull XAttachPresentationGroup group, String... names) { + TestDebuggerProvider(@Nullable Integer filterPID, @NotNull XLocalAttachGroup group, String... names) { this(filterPID, group, createDebuggers(names)); } - TestDebuggerProvider(@NotNull XAttachPresentationGroup group, String... names) { + TestDebuggerProvider(@NotNull XLocalAttachGroup group, String... names) { this(null, group, names); } @@ -664,7 +664,7 @@ public class AttachToProcessActionTest extends HeavyPlatformTestCase { @NotNull @Override - public XAttachPresentationGroup getPresentationGroup() { + public XLocalAttachGroup getAttachGroup() { return myGroup; } diff --git a/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachDebuggerProvider.java b/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachDebuggerProvider.java index 4e78008a5163..b41b3807d5cf 100644 --- a/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachDebuggerProvider.java +++ b/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachDebuggerProvider.java @@ -26,9 +26,9 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolder; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.xdebugger.attach.XAttachProcessPresentationGroup; import com.intellij.xdebugger.attach.XLocalAttachDebugger; import com.intellij.xdebugger.attach.XLocalAttachDebuggerProvider; +import com.intellij.xdebugger.attach.XLocalAttachGroup; import com.jetbrains.python.debugger.PyDebuggerOptionsProvider; import com.jetbrains.python.run.AbstractPythonRunConfiguration; import com.jetbrains.python.sdk.PreferredSdkComparator; @@ -46,7 +46,7 @@ public class PyLocalAttachDebuggerProvider implements XLocalAttachDebuggerProvid @NotNull @Override - public XAttachProcessPresentationGroup getPresentationGroup() { + public XLocalAttachGroup getAttachGroup() { return PyLocalAttachGroup.INSTANCE; } diff --git a/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachGroup.java b/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachGroup.java index dd4710793223..75e38fc8ab14 100644 --- a/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachGroup.java +++ b/python/src/com/jetbrains/python/debugger/attach/PyLocalAttachGroup.java @@ -19,13 +19,12 @@ import com.intellij.execution.process.ProcessInfo; import com.intellij.icons.AllIcons; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.UserDataHolder; -import com.intellij.xdebugger.attach.XAttachProcessPresentationGroup; -import com.intellij.xdebugger.attach.XDefaultLocalAttachGroup; +import com.intellij.xdebugger.attach.XLocalAttachGroup; import org.jetbrains.annotations.NotNull; import javax.swing.*; -class PyLocalAttachGroup implements XAttachProcessPresentationGroup { +class PyLocalAttachGroup implements XLocalAttachGroup { public static final PyLocalAttachGroup INSTANCE = new PyLocalAttachGroup(); private PyLocalAttachGroup() { @@ -33,7 +32,7 @@ class PyLocalAttachGroup implements XAttachProcessPresentationGroup { @Override public int getOrder() { - return XDefaultLocalAttachGroup.INSTANCE.getOrder() - 10; + return XLocalAttachGroup.DEFAULT.getOrder() - 10; } @NotNull @@ -44,13 +43,13 @@ class PyLocalAttachGroup implements XAttachProcessPresentationGroup { @NotNull @Override - public Icon getItemIcon(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { + public Icon getProcessIcon(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { return AllIcons.RunConfigurations.Application; } @NotNull @Override - public String getItemDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { + public String getProcessDisplayText(@NotNull Project project, @NotNull ProcessInfo info, @NotNull UserDataHolder dataHolder) { return info.getArgs(); } }