| package org.intellij.plugins.xsltDebugger.impl; |
| |
| import com.intellij.openapi.vfs.VfsUtil; |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.xdebugger.XDebuggerUtil; |
| import com.intellij.xdebugger.XSourcePosition; |
| import com.intellij.xdebugger.XSourcePositionWrapper; |
| import org.intellij.plugins.xsltDebugger.rt.engine.Debugger; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.net.URI; |
| |
| public class XsltSourcePosition extends XSourcePositionWrapper { |
| private final Debugger.Locatable myLocation; |
| |
| XsltSourcePosition(Debugger.Locatable location, XSourcePosition position) { |
| super(position); |
| |
| myLocation = location; |
| } |
| |
| @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; |
| } |
| |
| public Debugger.Locatable getLocation() { |
| return myLocation; |
| } |
| } |