package zielu.gittoolbox.ui.statusBar;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.project.Project;
import git4idea.GitUtil;
import git4idea.repo.GitRepository;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import org.jetbrains.annotations.CalledInAwt;
import zielu.gittoolbox.ResBundle;
import zielu.gittoolbox.ui.statusBar.actions.RefreshStatusAction;
import zielu.gittoolbox.util.GtUtil;
/**
* Created by Lukasz_Zielinski on 19.09.2016.
*/
public class RootActions extends DefaultActionGroup {
private final Project myProject;
public RootActions(Project project) {
super("", true);
myProject = project;
}
@CalledInAwt
public boolean update() {
removeAll();
Collection<GitRepository> repositories = GitUtil.getRepositories(myProject);
repositories = GtUtil.sort(repositories);
List<GitRepository> repos = repositories.stream().filter(GtUtil::hasRemotes).collect(Collectors.toList());
add(new RefreshStatusAction());
if (hasRepositories(repos)) {
addSeparator(ResBundle.getString("statusBar.menu.repositories.title"));
if (repos.size() == 1) {
GitRepository repo = repos.get(0);
addAll(StatusBarActions.actionsFor(repo));
} else if (repos.size() > 1) {
addAll(repos.stream().map(RepositoryActions::new).collect(Collectors.toList()));
}
}
return true;
}
private boolean hasRepositories(Collection<GitRepository> repositories) {
return !repositories.isEmpty();
}
@Override
public boolean canBePerformed(DataContext context) {
return true;
}
}