Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
993f405f
Commit
993f405f
authored
8 years ago
by
Egor.Ushakov
1
Browse files
Options
Download
Email Patches
Plain Diff
IDEA-168375 Emulate method breakpoints: make the progress non modal - allow early termination
parent
e305d981
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/MethodBreakpoint.java
+28
-3
...om/intellij/debugger/ui/breakpoints/MethodBreakpoint.java
with
28 additions
and
3 deletions
+28
-3
java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/MethodBreakpoint.java
+
28
-
3
View file @
993f405f
...
...
@@ -48,7 +48,9 @@ import com.intellij.psi.*;
import
com.intellij.util.StringBuilderSpinAllocator
;
import
com.intellij.util.containers.ContainerUtil
;
import
com.intellij.util.containers.MultiMap
;
import
com.intellij.xdebugger.XDebuggerManager
;
import
com.intellij.xdebugger.breakpoints.XBreakpoint
;
import
com.intellij.xdebugger.breakpoints.XBreakpointListener
;
import
com.sun.jdi.*
;
import
com.sun.jdi.event.LocatableEvent
;
import
com.sun.jdi.event.MethodEntryEvent
;
...
...
@@ -69,6 +71,7 @@ import org.jetbrains.org.objectweb.asm.Opcodes;
import
javax.swing.*
;
import
java.util.List
;
import
java.util.concurrent.atomic.AtomicBoolean
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.function.Consumer
;
import
java.util.stream.Stream
;
...
...
@@ -132,7 +135,7 @@ public class MethodBreakpoint extends BreakpointWithHighlighter<JavaMethodBreakp
debugProcess
.
getVirtualMachineProxy
().
clearCaches
();
// to force reload classes available so far
}
AtomicReference
<
Progress
Ind
icat
or
>
indicatorRef
=
new
AtomicReference
<>();
AtomicReference
<
Progress
WindowWithNotif
icat
ion
>
indicatorRef
=
new
AtomicReference
<>();
ApplicationManager
.
getApplication
().
invokeAndWait
(
()
->
{
ProgressWindowWithNotification
progress
=
...
...
@@ -140,13 +143,35 @@ public class MethodBreakpoint extends BreakpointWithHighlighter<JavaMethodBreakp
progress
.
setDelayInMillis
(
2000
);
indicatorRef
.
set
(
progress
);
});
ProgressIndicator
indicator
=
indicatorRef
.
get
();
ProgressWindowWithNotification
indicator
=
indicatorRef
.
get
();
AtomicBoolean
changed
=
new
AtomicBoolean
();
XBreakpointListener
<
XBreakpoint
<?>>
listener
=
new
XBreakpointListener
<
XBreakpoint
<?>>()
{
void
changed
(
@NotNull
XBreakpoint
b
)
{
if
(
b
==
breakpoint
.
getXBreakpoint
())
{
changed
.
set
(
true
);
indicator
.
cancel
();
}
}
@Override
public
void
breakpointRemoved
(
@NotNull
XBreakpoint
b
)
{
changed
(
b
);
}
@Override
public
void
breakpointChanged
(
@NotNull
XBreakpoint
b
)
{
changed
(
b
);
}
};
XDebuggerManager
.
getInstance
(
debugProcess
.
getProject
()).
getBreakpointManager
().
addBreakpointListener
(
listener
,
indicator
);
ProgressManager
.
getInstance
().
executeProcessUnderProgress
(
()
->
processPreparedSubTypes
(
baseType
,
subType
->
createRequestForPreparedClassEmulated
(
breakpoint
,
debugProcess
,
subType
,
false
),
indicator
),
indicator
);
if
(
indicator
.
isCanceled
())
{
if
(
indicator
.
isCanceled
()
&&
!
changed
.
get
()
)
{
breakpoint
.
disableEmulation
();
}
}
...
...
This diff is collapsed.
Click to expand it.
小 白蛋
@baidan
mentioned in commit
69be863e
·
2 years ago
mentioned in commit
69be863e
mentioned in commit 69be863ef16c10e0c370408e6fa6795b3e5e4f54
Toggle commit list
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment