diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java b/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java index 93baa14eca15..555d465fe690 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/ui/VcsLogAction.java @@ -22,41 +22,31 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.util.Consumer; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import com.intellij.vcs.log.*; -import com.intellij.vcs.log.impl.VcsLogUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; -import java.util.List; import java.util.Map; +import static com.intellij.vcs.log.impl.VcsLogUtil.MAX_SELECTED_COMMITS; +import static com.intellij.vcs.log.impl.VcsLogUtil.collectFirstPack; + public abstract class VcsLogAction extends DumbAwareAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { - final Project project = e.getRequiredData(CommonDataKeys.PROJECT); + Project project = e.getRequiredData(CommonDataKeys.PROJECT); VcsLog log = e.getRequiredData(VcsLogDataKeys.VCS_LOG); - log.requestSelectedDetails(new Consumer>() { - @Override - public void consume(List details) { - MultiMap grouped = groupCommits(project, details, new Function() { - @Override - public VirtualFile fun(VcsFullCommitDetails vcsFullCommitDetails) { - return vcsFullCommitDetails.getRoot(); - } - }); - - if (grouped == null) return; - actionPerformed(project, grouped); - } + log.requestSelectedDetails(details -> { + MultiMap grouped = groupCommits(project, details, VcsShortCommitDetails::getRoot); + if (grouped == null) return; + actionPerformed(project, grouped); }, null); } @@ -83,14 +73,9 @@ public abstract class VcsLogAction extends DumbAwareAct protected abstract boolean isEnabled(@NotNull MultiMap grouped); - protected boolean isVisible(@NotNull final Project project, @NotNull MultiMap grouped) { - return ContainerUtil.and(grouped.keySet(), new Condition() { - @Override - public boolean value(Repo repo) { - RepositoryManager manager = getRepositoryManager(project); - return !manager.isExternal(repo); - } - }); + protected boolean isVisible(@NotNull Project project, @NotNull MultiMap grouped) { + RepositoryManager manager = getRepositoryManager(project); + return grouped.keySet().stream().allMatch(repo -> !manager.isExternal(repo)); } @NotNull @@ -105,26 +90,14 @@ public abstract class VcsLogAction extends DumbAwareAct */ @Nullable private MultiMap groupFirstPackOfCommits(@NotNull Project project, @NotNull VcsLog log) { - MultiMap commitIds = - groupCommits(project, VcsLogUtil.collectFirstPack(log.getSelectedCommits(), VcsLogUtil.MAX_SELECTED_COMMITS), - new Function() { - @Override - public VirtualFile fun(CommitId hash) { - return hash.getRoot(); - } - }); + MultiMap commitIds = groupCommits(project, collectFirstPack(log.getSelectedCommits(), MAX_SELECTED_COMMITS), + CommitId::getRoot); if (commitIds == null) return null; MultiMap hashes = MultiMap.create(); for (Map.Entry> entry: commitIds.entrySet()) { - hashes.putValues(entry.getKey(), ContainerUtil.map(entry.getValue(), new Function() { - @Override - public Hash fun(CommitId commitId) { - return commitId.getHash(); - } - })); + hashes.putValues(entry.getKey(), ContainerUtil.map(entry.getValue(), CommitId::getHash)); } - return hashes; } @@ -142,5 +115,4 @@ public abstract class VcsLogAction extends DumbAwareAct } return map; } - }