@Override protected boolean approximatelyHasRoots(final VcsContext dataContext) { final FilePath[] paths = dataContext.getSelectedFilePaths(); if (paths.length == 0) return false; final FileStatusManager fsm = FileStatusManager.getInstance(dataContext.getProject()); for (final FilePath path : paths) { VirtualFile file = path.getVirtualFile(); if (file == null) { continue; } FileStatus status = fsm.getStatus(file); if (isApplicableRoot(file, status, dataContext)) { return true; } } return false; }
@Override protected void update(@NotNull VcsContext context, @NotNull Presentation presentation) { Project project = context.getProject(); presentation.setEnabled(isEnabled(context)); presentation.setVisible( project != null && ProjectLevelVcsManager.getInstance(project).hasActiveVcss()); }
@NotNull private static Pair<FilePath, VirtualFile> getPathAndParentFile(@NotNull VcsContext context) { if (context.getSelectedFilesStream().findAny().isPresent()) { VirtualFile file = getIfSingle(context.getSelectedFilesStream()); return file != null ? Pair.create(VcsUtil.getFilePath(file), file) : Pair.empty(); } File[] ioFiles = context.getSelectedIOFiles(); if (ioFiles != null && ioFiles.length > 0) { for (File ioFile : ioFiles) { VirtualFile parent = getParentVirtualFile(ioFile); if (parent != null) return Pair.create(VcsUtil.getFilePath(parent, ioFile.getName()), parent); } } return Pair.empty(); }
@Override protected void actionPerformed(@NotNull VcsContext context) { Project project = context.getProject(); Pair<FilePath, VirtualFile> pair = getPathAndParentFile(context); FilePath path = assertNotNull(pair.first); VirtualFile fileOrParent = assertNotNull(pair.second); AbstractVcs vcs = assertNotNull(ChangesUtil.getVcsForFile(fileOrParent, project)); VcsHistoryProvider provider = assertNotNull(vcs.getVcsHistoryProvider()); AbstractVcsHelper.getInstance(project) .showFileHistory(provider, vcs.getAnnotationProvider(), path, null, vcs); }
protected boolean isEnabled(@NotNull VcsContext context) { boolean result = false; Project project = context.getProject(); if (project != null) { Pair<FilePath, VirtualFile> pair = getPathAndParentFile(context); if (pair.first != null && pair.second != null) { result = isEnabled(project, pair.first, pair.second); } } return result; }
private String getCheckinActionName(final VcsContext dataContext) { final Project project = dataContext.getProject(); if (project == null) return VcsBundle.message("vcs.command.name.checkin"); final AbstractVcs vcs = getCommonVcsFor(getRoots(dataContext), project); if (vcs == null) { return VcsBundle.message("vcs.command.name.checkin"); } else { final CheckinEnvironment checkinEnvironment = vcs.getCheckinEnvironment(); if (checkinEnvironment == null) { return VcsBundle.message("vcs.command.name.checkin"); } return checkinEnvironment.getCheckinOperationName(); } }
public CachedVcsContext(VcsContext baseContext) { myProject = baseContext.getProject(); mySelectedFile = baseContext.getSelectedFile(); mySelectedFiles = baseContext.getSelectedFiles(); mySelectedFilesCollection = baseContext.getSelectedFilesCollection(); myEditor = baseContext.getEditor(); mySelectedIOFiles = baseContext.getSelectedIOFiles(); myModifiers = baseContext.getModifiers(); myRefreshablePanel = baseContext.getRefreshableDialog(); myPlace = baseContext.getPlace(); mySelectedIOFile = baseContext.getSelectedIOFile(); mySelectedFilePaths = baseContext.getSelectedFilePaths(); mySelectedFilePath = baseContext.getSelectedFilePath(); mySelectedChangeLists = baseContext.getSelectedChangeLists(); mySelectedChanges = baseContext.getSelectedChanges(); }
@Patch protected void update(VcsContext context, Presentation presentation) { presentation.setEnabled(isActive(context)); // MPS patch: hide "Go to next/prev change" actions for non-text editors presentation.setVisible(context.getEditor() != null); }
@Override protected FilePath[] getRoots(final VcsContext context) { return context.getSelectedFilePaths(); }