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()); } }