diff options
Diffstat (limited to 'plugins/git4idea/src/git4idea/actions/GitLogSingleCommitAction.java')
-rw-r--r-- | plugins/git4idea/src/git4idea/actions/GitLogSingleCommitAction.java | 70 |
1 files changed, 7 insertions, 63 deletions
diff --git a/plugins/git4idea/src/git4idea/actions/GitLogSingleCommitAction.java b/plugins/git4idea/src/git4idea/actions/GitLogSingleCommitAction.java index 39cfb2a625ad..83512de71d1f 100644 --- a/plugins/git4idea/src/git4idea/actions/GitLogSingleCommitAction.java +++ b/plugins/git4idea/src/git4idea/actions/GitLogSingleCommitAction.java @@ -15,77 +15,21 @@ */ package git4idea.actions; -import com.intellij.dvcs.DvcsUtil; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.dvcs.ui.VcsLogSingleCommitAction; import com.intellij.openapi.components.ServiceManager; -import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; -import com.intellij.vcs.log.VcsFullCommitDetails; -import com.intellij.vcs.log.VcsLog; -import com.intellij.vcs.log.VcsLogDataKeys; -import git4idea.GitVcs; +import com.intellij.openapi.vfs.VirtualFile; import git4idea.repo.GitRepository; import git4idea.repo.GitRepositoryManager; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import java.util.List; - -/** - * @author Kirill Likhodedov - */ -public abstract class GitLogSingleCommitAction extends DumbAwareAction { - - private static final Logger LOG = Logger.getInstance(GitLogSingleCommitAction.class); - - protected abstract void actionPerformed(@NotNull GitRepository repository, @NotNull VcsFullCommitDetails commit); - - @Override - public void actionPerformed(AnActionEvent e) { - Data data = Data.collect(e); - if (!data.isValid()) { - return; - } - - List<VcsFullCommitDetails> details = data.log.getSelectedDetails(); - if (details.size() != 1) { - return; - } - VcsFullCommitDetails commit = details.get(0); - - GitRepositoryManager repositoryManager = ServiceManager.getService(data.project, GitRepositoryManager.class); - final GitRepository repository = repositoryManager.getRepositoryForRoot(commit.getRoot()); - if (repository == null) { - DvcsUtil.noVcsRepositoryForRoot(LOG, commit.getRoot(), data.project, repositoryManager, GitVcs.getInstance(data.project)); - return; - } - - actionPerformed(repository, commit); - } +public abstract class GitLogSingleCommitAction extends VcsLogSingleCommitAction<GitRepository> { @Override - public void update(AnActionEvent e) { - Data data = Data.collect(e); - boolean enabled = data.isValid() && data.log.getSelectedCommits().size() == 1; - e.getPresentation().setVisible(data.isValid()); - e.getPresentation().setEnabled(enabled); - } - - private static class Data { - Project project; - VcsLog log; - - static Data collect(AnActionEvent e) { - Data data = new Data(); - data.project = e.getData(CommonDataKeys.PROJECT); - data.log = e.getData(VcsLogDataKeys.VSC_LOG); - return data; - } - - boolean isValid() { - return project != null && log != null && DvcsUtil.logHasRootForVcs(log, GitVcs.getKey()); - } + @Nullable + protected GitRepository getRepositoryForRoot(@NotNull Project project, @NotNull VirtualFile root) { + return ServiceManager.getService(project, GitRepositoryManager.class).getRepositoryForRoot(root); } } |