package jetbrains.mps.vcs.integration;
/*Generated by MPS */
import com.intellij.openapi.vcs.impl.VcsPathPresenter;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.vfs.VfsUtil;
import java.io.File;
import com.intellij.openapi.vcs.VcsRoot;
import com.intellij.openapi.vcs.changes.ContentRevision;
import com.intellij.openapi.util.io.FileUtil;
public class ModuleVcsPathPresenter extends VcsPathPresenter {
private final Project myProject;
private final ProjectLevelVcsManager myManager;
public ModuleVcsPathPresenter(final Project project, final ProjectLevelVcsManager manager) {
myProject = project;
myManager = manager;
}
@Override
public String getPresentableRelativePathFor(final VirtualFile file) {
if (file == null) {
return "";
}
return ApplicationManager.getApplication().runReadAction(new Computable<String>() {
@Override
public String compute() {
VirtualFile baseDir = myProject.getBaseDir();
if (baseDir != null) {
if (VfsUtil.isAncestor(baseDir, file, true)) {
return "[" + myProject.getName() + "]" + File.separator + file.getPath();
}
}
for (VcsRoot root : myManager.getAllVcsRoots()) {
if (VfsUtil.isAncestor(root.getPath(), file, true)) {
return "[" + root.getPath().getName() + "]" + File.separator + file.getPath();
}
}
return "[]" + File.separator + file.getPath();
}
});
}
@Override
public String getPresentableRelativePath(final ContentRevision fromRevision, final ContentRevision toRevision) {
return FileUtil.getRelativePath(toRevision.getFile().getIOFile(), fromRevision.getFile().getIOFile());
}
}