HyperlinkInfo (String fileName, final int line, int column) { if ((fileName == null || fileName.length() == 0)) { if (myBase != null) { fileName = myBase.getPresentableUrl(); } else { return null; } } fileName = fileName.replace(File.separatorChar, '/'); VirtualFile file; // try to interpret the filename as URL if (URLUtil.containsScheme(fileName)) { try { file = VfsUtil.findFileByURL(new URL(fileName)); } catch (MalformedURLException e) { file = VirtualFileManager.getInstance().findFileByUrl(VfsUtil.pathToUrl(fileName)); } } else { file = VfsUtil.findRelativeFile(fileName, myBase); } if (file == null) { //noinspection ConstantConditions return null; } final FileType fileType = file.getFileType(); if (fileType != null && column > 0) { final Document document = FileDocumentManager.getInstance().getDocument(file); final int start = document.getLineStartOffset(line); final int max = document.getLineEndOffset(line); final int tabSize = CodeStyleSettingsManager.getInstance(myProject).getCurrentSettings().getTabSize(fileType); column = EditorUtil.calcColumnNumber(null, document.getCharsSequence(), start, Math.min(start + column, max), tabSize); } return new OpenFileHyperlinkInfo(myProject, file, line, column); }