コード例 #1
0
 @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;
 }
コード例 #2
0
  @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());
  }
コード例 #3
0
  @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();
  }
コード例 #4
0
  @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);
  }
コード例 #5
0
  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;
  }
コード例 #6
0
  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();
    }
  }
コード例 #7
0
 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();
 }
コード例 #8
0
 @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);
 }
コード例 #9
0
 @Override
 protected FilePath[] getRoots(final VcsContext context) {
   return context.getSelectedFilePaths();
 }