From 2e46a699c681b45eb3935617558773b5b8bb7214 Mon Sep 17 00:00:00 2001 From: Dmytro Nochevnov Date: Sat, 13 Feb 2016 16:14:12 +0200 Subject: [PATCH] IDEX-4129: scroll document to execution point Signed-off-by: Dmytro Nochevnov --- .../jdi/client/debug/DebuggerPresenter.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/plugin-java/che-plugin-java-ext-debugger-java-client/src/main/java/org/eclipse/che/ide/ext/java/jdi/client/debug/DebuggerPresenter.java b/plugins/plugin-java/che-plugin-java-ext-debugger-java-client/src/main/java/org/eclipse/che/ide/ext/java/jdi/client/debug/DebuggerPresenter.java index 814b3272678..b2d768cc8b3 100644 --- a/plugins/plugin-java/che-plugin-java-ext-debugger-java-client/src/main/java/org/eclipse/che/ide/ext/java/jdi/client/debug/DebuggerPresenter.java +++ b/plugins/plugin-java/che-plugin-java-ext-debugger-java-client/src/main/java/org/eclipse/che/ide/ext/java/jdi/client/debug/DebuggerPresenter.java @@ -19,7 +19,6 @@ import com.google.inject.Singleton; import com.google.web.bindery.event.shared.EventBus; import com.google.web.bindery.event.shared.HandlerRegistration; - import org.eclipse.che.api.machine.gwt.client.events.ExtServerStateEvent; import org.eclipse.che.api.machine.gwt.client.events.ExtServerStateHandler; import org.eclipse.che.api.promises.client.Operation; @@ -69,6 +68,9 @@ import org.eclipse.che.ide.ext.java.jdi.shared.Value; import org.eclipse.che.ide.ext.java.jdi.shared.Variable; import org.eclipse.che.ide.ext.java.shared.JarEntry; +import org.eclipse.che.ide.jseditor.client.document.Document; +import org.eclipse.che.ide.jseditor.client.text.TextPosition; +import org.eclipse.che.ide.jseditor.client.texteditor.EmbeddedTextEditorPresenter; import org.eclipse.che.ide.part.explorer.project.ProjectExplorerPresenter; import org.eclipse.che.ide.project.node.FileReferenceNode; import org.eclipse.che.ide.rest.AsyncRequestCallback; @@ -323,7 +325,7 @@ private void onEventListReceived(@NotNull DebuggerEventList eventList) { } VirtualFile activeFile = null; - EditorPartPresenter activeEditor = editorAgent.getActiveEditor(); + final EditorPartPresenter activeEditor = editorAgent.getActiveEditor(); if (activeEditor != null) { activeFile = activeEditor.getEditorInput().getFile(); } @@ -356,6 +358,7 @@ private void onEventListReceived(@NotNull DebuggerEventList eventList) { @Override public void onSuccess(VirtualFile result) { breakpointManager.setCurrentBreakpoint(finalLocation.getLineNumber() - 1); + scrollEditorToExecutionPoint((EmbeddedTextEditorPresenter) editorAgent.getActiveEditor()); } @Override @@ -365,7 +368,9 @@ public void onFailure(Throwable caught) { }); } else { breakpointManager.setCurrentBreakpoint(location.getLineNumber() - 1); + scrollEditorToExecutionPoint((EmbeddedTextEditorPresenter) activeEditor); } + getStackFrameDump(); changeButtonsEnableState(true); } @@ -998,4 +1003,13 @@ private boolean isDebuggerConnected() { private void invalidateDebugInfo() { debuggerInfo = EmptyDebuggerInfo.INSTANCE; } + + private void scrollEditorToExecutionPoint(EmbeddedTextEditorPresenter editor) { + Document document = editor.getDocument(); + + if (document != null) { + TextPosition newPosition = new TextPosition(executionPoint.getLineNumber(), 0); + document.setCursorPosition(newPosition); + } + } }