public void fireBreakpointChanged(Breakpoint breakpoint) { breakpoint.reload(); breakpoint.updateUI(); RequestManagerImpl.updateRequests(breakpoint); if (myAllowMulticasting) { // can be invoked from non-AWT thread myAlarm.cancelAllRequests(); final Runnable runnable = new Runnable() { @Override public void run() { myAlarm.addRequest( new Runnable() { @Override public void run() { myDispatcher.getMulticaster().breakpointsChanged(); } }, 100); } }; if (ApplicationManager.getApplication().isDispatchThread()) { runnable.run(); } else { SwingUtilities.invokeLater(runnable); } } }
public void enableBreakpoints(final DebugProcessImpl debugProcess) { final List<Breakpoint> breakpoints = getBreakpoints(); if (!breakpoints.isEmpty()) { for (Breakpoint breakpoint : breakpoints) { breakpoint.markVerified(false); // clean cached state breakpoint.createRequest(debugProcess); } SwingUtilities.invokeLater( new Runnable() { @Override public void run() { updateBreakpointsUI(); } }); } }
// interaction with RequestManagerImpl public void disableBreakpoints(@NotNull final DebugProcessImpl debugProcess) { final List<Breakpoint> breakpoints = getBreakpoints(); if (!breakpoints.isEmpty()) { final RequestManagerImpl requestManager = debugProcess.getRequestsManager(); for (Breakpoint breakpoint : breakpoints) { breakpoint.markVerified(requestManager.isVerified(breakpoint)); requestManager.deleteRequest(breakpoint); } SwingUtilities.invokeLater( new Runnable() { @Override public void run() { updateBreakpointsUI(); } }); } }
/** Performs stop action. */ void stop(boolean stop, final AbstractThread thread) { final ResourceBundle bundle = NbBundle.getBundle(JPDADebugger.class); if (stop) { removeStepRequest(); setLastAction(ACTION_BREAKPOINT_HIT); setDebuggerState(DEBUGGER_STOPPED); operator.stopRequest(); SwingUtilities.invokeLater( new Runnable() { public void run() { thread.setCurrent(true); updateWatches(); threadGroup.refresh(); } }); } else operator.resume(); }
/** * Sets curent line. It means: change debugger state to stopped, shows message, sets current * thread and updates watches. */ private void makeCurrent( final String threadName, final String className, final String methodName, final String lineNumber, final boolean hasSource, final ThreadReference tr) { setDebuggerState(DEBUGGER_STOPPED); SwingUtilities.invokeLater( new Runnable() { public void run() { // show message if (isFollowedByEditor()) { if (hasSource) { println( new MessageFormat(bundle.getString("CTL_Thread_stopped")) .format(new Object[] {threadName, className, methodName, lineNumber}), ERR_OUT + STL_OUT); } else { println( new MessageFormat(bundle.getString("CTL_Thread_stopped_no_source")) .format(new Object[] {threadName, className, methodName, lineNumber}), ERR_OUT + STL_OUT); } } else println( new MessageFormat(bundle.getString("CTL_Thread_stopped")) .format(new Object[] {threadName, className, methodName, lineNumber}), ERR_OUT + STL_OUT); // refresh all JPDAThread tt = threadManager.getThread(tr); tt.setCurrent(true); updateWatches(); } }); }