private void handleOnCallFrameSelect(int callFrameDepth) { debuggerState.setActiveCallFrameIndex(callFrameDepth); debuggingModelRenderer.renderDebuggerCallFrame(); PathUtil callFramePath = debuggerState.getActiveCallFramePath(); if (callFramePath == null) { // Not paused, remove the execution line (if any). debuggingModelRenderer.removeExecutionLine(); return; } maybeAnchorExecutionLine(); int lineNumber = debuggerState.getActiveCallFrameExecutionLineNumber(); maybeNavigateToDocument(callFramePath, lineNumber); }
private DebuggingModelController( Place currentPlace, AppContext appContext, DebuggingModel debuggingModel, Editor editor, EditorPopupController editorPopupController, DocumentManager documentManager) { this.appContext = appContext; this.editor = editor; this.currentPlace = currentPlace; this.debuggingModel = debuggingModel; this.leftGutterClickListenerRemover = editor.getLeftGutter().getClickListenerRegistrar().add(leftGutterClickListener); // Every time we enter workspace, we get a new debugging session id. String sessionId = BootstrapSession.getBootstrapSession().getActiveClientId() + ":" + System.currentTimeMillis(); this.debuggerState = DebuggerState.create(sessionId); this.debuggingSidebar = DebuggingSidebar.create(appContext.getResources(), debuggerState); this.debuggingModelRenderer = DebuggingModelRenderer.create(appContext, editor, debuggingSidebar, debuggerState); this.cssLiveEditController = new CssLiveEditController(debuggerState, documentManager); this.evaluationPopupController = EvaluationPopupController.create( appContext.getResources(), editor, editorPopupController, debuggerState); this.debuggingModel.addModelChangeListener(debuggingModelChangeListener); this.debuggerState.getDebuggerStateListenerRegistrar().add(debuggerStateListener); this.debuggingSidebar.getDebuggerCommandListenerRegistrar().add(userCommandListener); }
private void maybeAnchorExecutionLine() { PathUtil callFramePath = debuggerState.getActiveCallFramePath(); if (callFramePath != null && callFramePath.equals(path)) { int lineNumber = debuggerState.getActiveCallFrameExecutionLineNumber(); if (lineNumber >= 0) { debuggingModelRenderer.renderExecutionLine(lineNumber); } } }
private void anchorBreakpoints() { JsonArray<Breakpoint> allBreakpoints = debuggingModel.getBreakpoints(); for (int i = 0; i < allBreakpoints.size(); ++i) { Breakpoint breakpoint = allBreakpoints.get(i); if (path.equals(breakpoint.getPath())) { anchorBreakpointAndUpdateSidebar(breakpoint); debuggingModelRenderer.renderBreakpointOnGutter( breakpoint.getLineNumber(), breakpoint.isActive()); } } }
public void setDocument(Document document, PathUtil path, DocumentParser parser) { if (breakpoints != null) { breakpoints.teardown(); debuggingModelRenderer.handleDocumentChanged(); } this.path = path; breakpoints = new AnchoredBreakpoints(debuggingModel, document); anchorBreakpoints(); maybeAnchorExecutionLine(); evaluationPopupController.setDocument(document, path, parser); breakpoints.setBreakpointDescriptionListener(breakpointDescriptionListener); }