Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,18 @@ action.show.watches.text.hide:
text: Hide Watches
action.show.watches.text.show:
text: Show Watches
action.thread.dump.text:
text: Get Thread Dump
action.thread.dump.description:
text: Get stacktraces of all the threads within JVM at current moment
action.thread.dump.text:
text: Get Thread Dump
action.toggle.field.breakpoint.description:
text: Toggle field watchpoint for the field at caret
action.toggle.field.breakpoint.text:
text: Toggle _Field Watchpoint
action.toggle.method.breakpoint.description:
text: Toggle method breakpoint for the method at caret
action.toggle.method.breakpoint.text:
text: Toggle _Method Breakpoint
action.watch.method.return.value.description:
text: Enables watching last executed method return value
action.watches.method.return.value.disable:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.intellij.java.debugger.impl.DebuggerManagerEx;
import com.intellij.java.debugger.impl.DebuggerSession;
import com.intellij.java.debugger.impl.ui.ExportDialog;
import consulo.annotation.component.ActionImpl;
import consulo.platform.Platform;
import consulo.platform.base.icon.PlatformIconGroup;
import consulo.platform.base.localize.ActionLocalize;
Expand All @@ -41,6 +42,7 @@
/**
* @author Jeka
*/
@ActionImpl(id = "ExportThreads")
public class ExportThreadsAction extends AnAction {
public ExportThreadsAction() {
super(ActionLocalize.actionExportthreadsText(), ActionLocalize.actionExportthreadsDescription(), PlatformIconGroup.actionsExport());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.intellij.java.debugger.impl.actions;

import consulo.annotation.component.ActionImpl;
import consulo.annotation.component.ActionParentRef;
import consulo.annotation.component.ActionRef;
import consulo.application.dumb.DumbAware;
import consulo.platform.base.localize.ActionLocalize;
import consulo.ui.ex.action.DefaultActionGroup;

/**
* @author UNV
* @since 2025-09-06
*/
@ActionImpl(
id = "JavaDebugMainMenu",
children = {
@ActionRef(type = ExportThreadsAction.class),
@ActionRef(type = ThreadDumpAction.class)
},
parents = @ActionParentRef(value = @ActionRef(id = "DebugMainMenu"))
)
public class JavaDebugMainMenuGroup extends DefaultActionGroup implements DumbAware {
public JavaDebugMainMenuGroup() {
super(ActionLocalize.groupDebugmainmenuText(), false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.intellij.java.debugger.impl.jdi.VirtualMachineProxyImpl;
import com.intellij.java.debugger.localize.JavaDebuggerLocalize;
import com.intellij.java.execution.unscramble.ThreadDumpParser;
import consulo.annotation.component.ActionImpl;
import consulo.execution.debug.XDebugSession;
import consulo.execution.unscramble.ThreadState;
import consulo.internal.com.sun.jdi.*;
Expand All @@ -48,6 +49,7 @@
* @author Eugene Zhuravlev
* @author Sascha Weinreuter
*/
@ActionImpl(id = "DumpThreads")
public class ThreadDumpAction extends AnAction {
public ThreadDumpAction() {
super(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.intellij.java.debugger.impl.actions;

import consulo.annotation.component.ActionImpl;
import consulo.annotation.component.ActionParentRef;
import consulo.annotation.component.ActionRef;
import consulo.annotation.component.ActionRefAnchor;
import consulo.application.dumb.DumbAware;
import consulo.platform.base.localize.ActionLocalize;
import consulo.ui.ex.action.DefaultActionGroup;
import consulo.ui.ex.action.IdeActions;

/**
* @author UNV
* @since 2025-09-06
*/
@ActionImpl(
id = "ToggleBreakpointAction",
children = {
@ActionRef(type = ToggleMethodBreakpointAction.class),
@ActionRef(type = ToggleFieldBreakpointAction.class)
},
parents = @ActionParentRef(
value = @ActionRef(id = "DebugMainMenu"),
anchor = ActionRefAnchor.AFTER,
relatedToAction = @ActionRef(id = IdeActions.ACTION_TOGGLE_LINE_BREAKPOINT)
)
)
public class ToggleBreakpointGroup extends DefaultActionGroup implements DumbAware {
public ToggleBreakpointGroup() {
super(ActionLocalize.groupDebugmainmenuText(), false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
import com.intellij.java.language.impl.JavaFileType;
import com.intellij.java.language.psi.PsiClass;
import com.intellij.java.language.psi.PsiField;
import consulo.annotation.access.RequiredReadAction;
import consulo.annotation.component.ActionImpl;
import consulo.codeEditor.Editor;
import consulo.dataContext.DataContext;
import consulo.document.Document;
Expand All @@ -57,7 +59,20 @@
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;

import java.util.Set;

@ActionImpl(id = "ToggleFieldBreakpoint")
public class ToggleFieldBreakpointAction extends AnAction {
private static final Set<String> POPUP_PLACES = Set.of(
ActionPlaces.PROJECT_VIEW_POPUP,
ActionPlaces.STRUCTURE_VIEW_POPUP,
ActionPlaces.FAVORITES_VIEW_POPUP
);

public ToggleFieldBreakpointAction() {
super(JavaDebuggerLocalize.actionToggleFieldBreakpointText(), JavaDebuggerLocalize.actionToggleFieldBreakpointDescription());
}

@Override
@RequiredUIAccess
public void actionPerformed(AnActionEvent e) {
Expand Down Expand Up @@ -111,9 +126,7 @@ public void update(@Nonnull AnActionEvent event) {
boolean toEnable = place != null;

Presentation presentation = event.getPresentation();
if (ActionPlaces.PROJECT_VIEW_POPUP.equals(event.getPlace())
|| ActionPlaces.STRUCTURE_VIEW_POPUP.equals(event.getPlace())
|| ActionPlaces.FAVORITES_VIEW_POPUP.equals(event.getPlace())) {
if (POPUP_PLACES.contains(event.getPlace())) {
presentation.setVisible(toEnable);
}
else if (DebuggerAction.isContextView(event)) {
Expand All @@ -123,7 +136,7 @@ else if (DebuggerAction.isContextView(event)) {
Document document = PsiDocumentManager.getInstance(project).getDocument(place.getFile());
if (document != null) {
int offset = place.getOffset();
BreakpointManager breakpointManager = (DebuggerManagerEx.getInstanceEx(project)).getBreakpointManager();
BreakpointManager breakpointManager = DebuggerManagerEx.getInstanceEx(project).getBreakpointManager();
Breakpoint fieldBreakpoint =
offset >= 0 ? breakpointManager.findBreakpoint(document, offset, FieldBreakpoint.CATEGORY) : null;
if (fieldBreakpoint != null) {
Expand All @@ -137,15 +150,14 @@ else if (DebuggerAction.isContextView(event)) {
}

@Nullable
@RequiredReadAction
public static SourcePosition getPlace(AnActionEvent event) {
DataContext dataContext = event.getDataContext();
Project project = event.getData(Project.KEY);
if (project == null) {
return null;
}
if (ActionPlaces.PROJECT_VIEW_POPUP.equals(event.getPlace())
|| ActionPlaces.STRUCTURE_VIEW_POPUP.equals(event.getPlace())
|| ActionPlaces.FAVORITES_VIEW_POPUP.equals(event.getPlace())) {
if (POPUP_PLACES.contains(event.getPlace())) {
return event.getData(PsiElement.KEY) instanceof PsiField field ? SourcePosition.createFromElement(field) : null;
}

Expand Down Expand Up @@ -178,14 +190,17 @@ public void threadAction() {
if (DebuggerAction.isContextView(event)) {
DebuggerTree tree = event.getData(DebuggerTree.DATA_KEY);
if (tree != null && tree.getSelectionPath() != null) {
DebuggerTreeNodeImpl node = ((DebuggerTreeNodeImpl)tree.getSelectionPath().getLastPathComponent());
DebuggerTreeNodeImpl node = (DebuggerTreeNodeImpl) tree.getSelectionPath().getLastPathComponent();
if (node != null && node.getDescriptor() instanceof FieldDescriptorImpl fieldDescriptor) {
Field field = fieldDescriptor.getField();
DebuggerSession session = tree.getDebuggerContext().getDebuggerSession();
PsiClass psiClass = DebuggerUtils.findClass(field.declaringType().name(), project, (session != null)
? session.getSearchScope() : GlobalSearchScope.allScope(project));
PsiClass psiClass = DebuggerUtils.findClass(
field.declaringType().name(),
project,
session != null ? session.getSearchScope() : GlobalSearchScope.allScope(project)
);
if (psiClass != null) {
psiClass = (PsiClass)psiClass.getNavigationElement();
psiClass = (PsiClass) psiClass.getNavigationElement();
PsiField psiField = psiClass.findFieldByName(field.name(), true);
if (psiField != null) {
return SourcePosition.createFromElement(psiField);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.intellij.java.debugger.impl.actions;

import com.intellij.java.debugger.impl.DebuggerManagerEx;
import com.intellij.java.debugger.impl.DebuggerUtilsEx;
import com.intellij.java.debugger.impl.ui.breakpoints.Breakpoint;
import com.intellij.java.debugger.impl.ui.breakpoints.BreakpointManager;
import com.intellij.java.debugger.impl.ui.breakpoints.MethodBreakpoint;
import com.intellij.java.debugger.localize.JavaDebuggerLocalize;
import com.intellij.java.language.impl.JavaClassFileType;
import com.intellij.java.language.impl.JavaFileType;
import com.intellij.java.language.psi.PsiMethod;
import consulo.annotation.component.ActionImpl;
import consulo.codeEditor.Editor;
import consulo.document.Document;
import consulo.document.util.DocumentUtil;
Expand All @@ -42,7 +43,21 @@
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;

import java.util.Set;

@ActionImpl(id = "ToggleMethodBreakpoint")
public class ToggleMethodBreakpointAction extends AnAction {
private static final Set<String> POPUP_PLACES = Set.of(
ActionPlaces.PROJECT_VIEW_POPUP,
ActionPlaces.STRUCTURE_VIEW_POPUP,
ActionPlaces.FAVORITES_VIEW_POPUP,
ActionPlaces.NAVIGATION_BAR_POPUP
);

public ToggleMethodBreakpointAction() {
super(JavaDebuggerLocalize.actionToggleMethodBreakpointText(), JavaDebuggerLocalize.actionToggleMethodBreakpointDescription());
}

@Override
@RequiredUIAccess
public void update(@Nonnull AnActionEvent event) {
Expand Down Expand Up @@ -89,10 +104,7 @@ private static PlaceInDocument getPlace(AnActionEvent event) {
Document document = null;

String place = event.getPlace();
if (ActionPlaces.PROJECT_VIEW_POPUP.equals(place)
|| ActionPlaces.STRUCTURE_VIEW_POPUP.equals(place)
|| ActionPlaces.FAVORITES_VIEW_POPUP.equals(place)
|| ActionPlaces.NAVIGATION_BAR_POPUP.equals(place)) {
if (POPUP_PLACES.contains(place)) {
if (event.getData(PsiElement.KEY) instanceof PsiMethod m) {
PsiFile containingFile = m.getContainingFile();
if (containingFile != null) {
Expand Down
94 changes: 47 additions & 47 deletions java-debugger-impl/src/main/java/module-info.java
Original file line number Diff line number Diff line change
@@ -1,57 +1,57 @@
/**
* @author VISTALL
* @since 05/12/2022
* @since 2022-12-05
*/
open module consulo.java.debugger.impl {
requires transitive consulo.java.debugger.api;
requires consulo.java.language.impl;
requires consulo.java.indexing.impl;
requires consulo.java.analysis.impl;
requires consulo.java.compiler.api;
requires consulo.java.rt.common;
requires transitive consulo.java.debugger.api;
requires consulo.java.language.impl;
requires consulo.java.indexing.impl;
requires consulo.java.analysis.impl;
requires consulo.java.compiler.api;
requires consulo.java.rt.common;

// TODO remove in future
requires java.desktop;
// TODO remove in future
requires consulo.ide.impl;
// TODO remove in future
requires java.desktop;
// TODO remove in future
requires consulo.ide.impl;

requires one.util.streamex;
requires one.util.streamex;

requires consulo.internal.jdi;
requires asm;
requires asm.analysis;
requires asm.commons;
requires asm.tree;
requires asm.util;
requires consulo.internal.jdi;
requires asm;
requires asm.analysis;
requires asm.commons;
requires asm.tree;
requires asm.util;

requires it.unimi.dsi.fastutil;
requires it.unimi.dsi.fastutil;

exports com.intellij.java.debugger.impl;
exports com.intellij.java.debugger.impl.actions;
exports com.intellij.java.debugger.impl.apiAdapters;
exports com.intellij.java.debugger.impl.breakpoints;
exports com.intellij.java.debugger.impl.breakpoints.properties;
exports com.intellij.java.debugger.impl.classFilter;
exports com.intellij.java.debugger.impl.codeinsight;
exports com.intellij.java.debugger.impl.descriptors.data;
exports com.intellij.java.debugger.impl.engine;
exports com.intellij.java.debugger.impl.engine.evaluation;
exports com.intellij.java.debugger.impl.engine.evaluation.expression;
exports com.intellij.java.debugger.impl.engine.events;
exports com.intellij.java.debugger.impl.engine.requests;
exports com.intellij.java.debugger.impl.externalSystem;
exports com.intellij.java.debugger.impl.jdi;
exports com.intellij.java.debugger.impl.settings;
exports com.intellij.java.debugger.impl.ui;
exports com.intellij.java.debugger.impl.ui.breakpoints;
exports com.intellij.java.debugger.impl.ui.impl;
exports com.intellij.java.debugger.impl.ui.impl.nodes;
exports com.intellij.java.debugger.impl.ui.impl.tree;
exports com.intellij.java.debugger.impl.ui.impl.watch;
exports com.intellij.java.debugger.impl.ui.tree;
exports com.intellij.java.debugger.impl.ui.tree.actions;
exports com.intellij.java.debugger.impl.ui.tree.render;
exports consulo.java.debugger.impl;
exports consulo.java.debugger.impl.apiAdapters;
exports consulo.java.debugger.impl.settings;
exports com.intellij.java.debugger.impl;
exports com.intellij.java.debugger.impl.actions;
exports com.intellij.java.debugger.impl.apiAdapters;
exports com.intellij.java.debugger.impl.breakpoints;
exports com.intellij.java.debugger.impl.breakpoints.properties;
exports com.intellij.java.debugger.impl.classFilter;
exports com.intellij.java.debugger.impl.codeinsight;
exports com.intellij.java.debugger.impl.descriptors.data;
exports com.intellij.java.debugger.impl.engine;
exports com.intellij.java.debugger.impl.engine.evaluation;
exports com.intellij.java.debugger.impl.engine.evaluation.expression;
exports com.intellij.java.debugger.impl.engine.events;
exports com.intellij.java.debugger.impl.engine.requests;
exports com.intellij.java.debugger.impl.externalSystem;
exports com.intellij.java.debugger.impl.jdi;
exports com.intellij.java.debugger.impl.settings;
exports com.intellij.java.debugger.impl.ui;
exports com.intellij.java.debugger.impl.ui.breakpoints;
exports com.intellij.java.debugger.impl.ui.impl;
exports com.intellij.java.debugger.impl.ui.impl.nodes;
exports com.intellij.java.debugger.impl.ui.impl.tree;
exports com.intellij.java.debugger.impl.ui.impl.watch;
exports com.intellij.java.debugger.impl.ui.tree;
exports com.intellij.java.debugger.impl.ui.tree.actions;
exports com.intellij.java.debugger.impl.ui.tree.render;
exports consulo.java.debugger.impl;
exports consulo.java.debugger.impl.apiAdapters;
exports consulo.java.debugger.impl.settings;
}
Original file line number Diff line number Diff line change
Expand Up @@ -124,14 +124,6 @@ action.SliceForward.text:
text: Analyze Data Flow _from Here
action.SliceSliceForward.description:
text: Search for values escaped from this location
action.ToggleFieldBreakpoint.description:
text: Toggle field watchpoint for the field at caret
action.ToggleFieldBreakpoint.text:
text: Toggle _Field Watchpoint
action.ToggleMethodBreakpoint.description:
text: Toggle method breakpoint for the method at caret
action.ToggleMethodBreakpoint.text:
text: Toggle _Method Breakpoint
action.TurnRefsToSuper.description:
text: Change usages of a class to those of its superclass or interface
action.TurnRefsToSuper.text:
Expand Down
14 changes: 0 additions & 14 deletions plugin/src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -123,20 +123,6 @@
<add-to-group group-id="DebugMainMenu" anchor="before" relative-to-action="StepOver"/>
</action>

<group id="ToggleBreakpointAction">
<action id="ToggleMethodBreakpoint" class="com.intellij.java.debugger.impl.actions.ToggleMethodBreakpointAction"/>
<action id="ToggleFieldBreakpoint" class="com.intellij.java.debugger.impl.actions.ToggleFieldBreakpointAction"/>
<!--Moved to XDebugger <action id="ToggleBreakpointEnabled" class="com.intellij.debugger.actions.ToggleBreakpointEnabledAction"/>-->
<add-to-group group-id="DebugMainMenu" anchor="after" relative-to-action="ToggleLineBreakpoint"/>
</group>

<action id="ExportThreads" class="com.intellij.java.debugger.impl.actions.ExportThreadsAction">
<add-to-group group-id="RunMenu" anchor="last"/>
</action>
<action id="DumpThreads" class="com.intellij.java.debugger.impl.actions.ThreadDumpAction">
<add-to-group group-id="RunMenu" anchor="last"/>
</action>

<action id="GenerateJavadoc" class="com.intellij.java.impl.javadoc.actions.GenerateJavadocAction" can-use-project-as-default="true" require-module-extensions="java">
<add-to-group group-id="ToolsBasicGroup" anchor="after" relative-to-action="SaveFileAsTemplate"/>
</action>
Expand Down
Loading