use of com.intellij.xdebugger.XSourcePosition in project intellij-community by JetBrains.
the class BreakpointWithHighlighter method getPsiFile.
@Nullable
public PsiFile getPsiFile() {
ApplicationManager.getApplication().assertReadAccessAllowed();
XSourcePosition position = myXBreakpoint.getSourcePosition();
if (position != null) {
VirtualFile file = position.getFile();
if (file.isValid()) {
return PsiManager.getInstance(myProject).findFile(file);
}
}
return null;
}
use of com.intellij.xdebugger.XSourcePosition in project intellij-community by JetBrains.
the class XsltBreakpointHandler method registerBreakpoint.
@Override
public void registerBreakpoint(@NotNull XLineBreakpoint<XBreakpointProperties> breakpoint) {
final XSourcePosition sourcePosition = breakpoint.getSourcePosition();
if (sourcePosition == null || !sourcePosition.getFile().exists() || !sourcePosition.getFile().isValid()) {
// ???
return;
}
final VirtualFile file = sourcePosition.getFile();
final Project project = myXsltDebugProcess.getSession().getProject();
final String fileURL = getFileURL(file);
final int lineNumber = getActualLineNumber(breakpoint, project);
if (lineNumber == -1) {
final XDebugSession session = myXsltDebugProcess.getSession();
session.updateBreakpointPresentation(breakpoint, AllIcons.Debugger.Db_invalid_breakpoint, "Unsupported breakpoint position");
return;
}
try {
final BreakpointManager manager = myXsltDebugProcess.getBreakpointManager();
Breakpoint bp;
if ((bp = manager.getBreakpoint(fileURL, lineNumber)) != null) {
bp.setEnabled(true);
} else {
manager.setBreakpoint(fileURL, lineNumber);
}
} catch (DebuggerStoppedException ignore) {
} catch (VMPausedException e) {
final XDebugSession session = myXsltDebugProcess.getSession();
session.reportMessage("Target VM is not responding. Breakpoint can not be set", MessageType.ERROR);
session.updateBreakpointPresentation(breakpoint, AllIcons.Debugger.Db_invalid_breakpoint, "Target VM is not responding. Breakpoint can not be set");
}
}
use of com.intellij.xdebugger.XSourcePosition in project intellij-community by JetBrains.
the class XsltBreakpointHandler method unregisterBreakpoint.
@Override
public void unregisterBreakpoint(@NotNull XLineBreakpoint<XBreakpointProperties> breakpoint, final boolean temporary) {
final XSourcePosition sourcePosition = breakpoint.getSourcePosition();
if (sourcePosition == null || !sourcePosition.getFile().exists() || !sourcePosition.getFile().isValid()) {
// ???
return;
}
final VirtualFile file = sourcePosition.getFile();
final Project project = myXsltDebugProcess.getSession().getProject();
final String fileURL = getFileURL(file);
final int lineNumber = getActualLineNumber(breakpoint, project);
try {
final BreakpointManager manager = myXsltDebugProcess.getBreakpointManager();
if (temporary) {
final Breakpoint bp = manager.getBreakpoint(fileURL, lineNumber);
if (bp != null) {
bp.setEnabled(false);
}
} else {
manager.removeBreakpoint(fileURL, lineNumber);
}
} catch (DebuggerStoppedException ignore) {
} catch (VMPausedException e) {
myXsltDebugProcess.getSession().reportMessage("Target VM is not responding. Breakpoint can not be removed", MessageType.ERROR);
}
}
use of com.intellij.xdebugger.XSourcePosition in project intellij-community by JetBrains.
the class XValueNodeImpl method updateInlineDebuggerData.
public void updateInlineDebuggerData() {
try {
XDebugSession session = XDebugView.getSession(getTree());
final XSourcePosition debuggerPosition = session == null ? null : session.getCurrentPosition();
if (debuggerPosition == null) {
return;
}
final XInlineDebuggerDataCallback callback = new XInlineDebuggerDataCallback() {
@Override
public void computed(XSourcePosition position) {
if (isObsolete() || position == null)
return;
VirtualFile file = position.getFile();
// filter out values from other files
if (!Comparing.equal(debuggerPosition.getFile(), file)) {
return;
}
final Document document = FileDocumentManager.getInstance().getDocument(file);
if (document == null)
return;
XVariablesView.InlineVariablesInfo data = myTree.getProject().getUserData(XVariablesView.DEBUG_VARIABLES);
if (data == null) {
return;
}
if (!showAsInlay(file, position, debuggerPosition)) {
data.put(file, position, XValueNodeImpl.this, document.getModificationStamp());
myTree.updateEditor();
}
}
};
if (getValueContainer().computeInlineDebuggerData(callback) == ThreeState.UNSURE) {
getValueContainer().computeSourcePosition(callback::computed);
}
} catch (Exception ignore) {
}
}
use of com.intellij.xdebugger.XSourcePosition in project intellij-community by JetBrains.
the class XsltSourcePosition method create.
@Nullable
public static XSourcePosition create(Debugger.Locatable location) {
final VirtualFile file;
try {
file = VfsUtil.findFileByURL(new URI(location.getURI()).toURL());
} catch (Exception e) {
// TODO log
return null;
}
final int line = location.getLineNumber() - 1;
final XSourcePosition position = XDebuggerUtil.getInstance().createPosition(file, line);
return line >= 0 && position != null ? new XsltSourcePosition(location, position) : null;
}
Aggregations