package jetbrains.mps.debug.api.source;
/*Generated by MPS */
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.debug.api.programState.ILocation;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.debug.api.AbstractDebugSession;
import jetbrains.mps.debug.api.programState.NullLocation;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NonNls;
import jetbrains.mps.ide.common.FileOpenUtil;
public class TextPositionProvider implements IPositionProvider<TextSourcePosition> {
private final Project myProject;
public TextPositionProvider(Project project) {
myProject = project;
}
@Nullable
public TextSourcePosition getPosition(@Nullable ILocation location, @NotNull AbstractDebugSession session) {
if (location == null || location instanceof NullLocation) {
return null;
}
VirtualFile file = getFile(location);
if (file != null) {
return new TextSourcePosition(file, location.getLineNumber());
}
return null;
}
@Nullable
public VirtualFile getFile(@Nullable ILocation location) {
if (location == null || location instanceof NullLocation) {
return null;
}
return getFile(location.getUnitName(), location.getFileName());
}
@Nullable
public VirtualFile getFile(@NonNls String unitName, @NonNls String fileName) {
return FileOpenUtil.findFile(myProject, unitName, fileName);
}
@Override
public boolean accepts(AbstractDebugSession session) {
return true;
}
}