[git]: implement excluded favourite branches

This commit is contained in:
Nadya Zabrodina
2017-01-11 16:45:33 +03:00
parent 05f626ff70
commit a4cdf4671e
3 changed files with 29 additions and 14 deletions
@@ -15,16 +15,16 @@
*/
package com.intellij.dvcs.ui;
import com.intellij.util.containers.ContainerUtil;
import java.util.Comparator;
import java.util.List;
public class BranchActionUtil {
public static final Comparator<BranchActionGroup> FAVOURITE_BRANCH_COMPARATOR = (o1, o2) -> {
if (o1.isFavourite() ^ o2.isFavourite()) return o1.isFavourite() ? -1 : 1;
return 0;
};
public static final Comparator<BranchActionGroup> FAVOURITE_BRANCH_COMPARATOR =
Comparator.comparing(branch -> branch.isFavourite() ? -1 : 0);
public static int getNumOfFavourites(List<? extends BranchActionGroup> branchActions) {
return (int)branchActions.stream().filter(BranchActionGroup::isFavourite).count();
return ContainerUtil.count(branchActions, BranchActionGroup::isFavourite);
}
}
@@ -91,6 +91,8 @@ public class GitVcsSettings implements PersistentStateComponent<GitVcsSettings.S
@Tag("favourite-branches")
public BranchStorage FAVOURITE_BRANCHES = new BranchStorage();
@Tag("excluded-from-favourite")
public BranchStorage EXCLUDED_FAVOURITES = new BranchStorage();
}
public GitVcsSettings(GitVcsApplicationSettings appSettings) {
@@ -302,6 +304,19 @@ public class GitVcsSettings implements PersistentStateComponent<GitVcsSettings.S
return myState.FAVOURITE_BRANCHES.contains(type.toString(), repository, branchName);
}
public void excludedFromFavourites(@NotNull GitBranchType type, @Nullable GitRepository repository, @NotNull String branchName) {
myState.EXCLUDED_FAVOURITES.add(type.toString(), repository, branchName);
}
public void removeFromExcluded(@NotNull GitBranchType type, @Nullable GitRepository repository, @NotNull String branchName) {
myState.EXCLUDED_FAVOURITES.remove(type.toString(), repository, branchName);
}
public boolean isExcludedFromFavourites(@NotNull GitBranchType type, @Nullable Repository repository, @NotNull String branchName) {
return myState.EXCLUDED_FAVOURITES.contains(type.toString(), repository, branchName);
}
@Tag("push-target-info")
private static class PushTargetInfo extends DvcsBranchInfo {
@Attribute(value = "target-remote") public String targetRemoteName;
@@ -334,7 +349,7 @@ public class GitVcsSettings implements PersistentStateComponent<GitVcsSettings.S
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), targetRemoteName,targetBranchName);
return Objects.hash(super.hashCode(), targetRemoteName, targetBranchName);
}
}
}
@@ -26,9 +26,10 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
import static com.intellij.util.containers.ContainerUtil.map2List;
import static com.intellij.util.containers.ContainerUtil.newArrayList;
import static git4idea.log.GitRefManager.MASTER;
import static git4idea.log.GitRefManager.ORIGIN_MASTER;
import static java.util.stream.Collectors.toList;
public class GitBranchManager {
@NotNull private final GitRepositoryManager myRepositoryManager;
@@ -45,10 +46,9 @@ public class GitBranchManager {
@NotNull
private List<DvcsBranchInfo> constructDefaultBranchPredefinedList(GitBranchType type) {
List<DvcsBranchInfo> branchInfos = myRepositoryManager.getRepositories().stream()
.map(repository -> new DvcsBranchInfo(repository.getRoot().getPath(), getDefaultBranchName(type)))
.collect(toList());
branchInfos.add(new DvcsBranchInfo("", getDefaultBranchName(type)));
List<DvcsBranchInfo> branchInfos = newArrayList(new DvcsBranchInfo("", getDefaultBranchName(type)));
branchInfos.addAll(map2List(myRepositoryManager.getRepositories(),
repository -> new DvcsBranchInfo(repository.getRoot().getPath(), getDefaultBranchName(type))));
return branchInfos;
}
@@ -59,7 +59,7 @@ public class GitBranchManager {
public boolean isFavourite(@NotNull GitBranchType branchType, @Nullable GitRepository repository, @NotNull String branchName) {
if (mySettings.isFavourite(branchType, repository, branchName)) return true;
//if (mySettings.isExcludedFromFavourites(branchType, repository, branchName)) return false;
if (mySettings.isExcludedFromFavourites(branchType, repository, branchName)) return false;
return myPredefinedFavouriteBranches.contains(branchType.toString(), repository, branchName);
}
@@ -69,14 +69,14 @@ public class GitBranchManager {
boolean shouldBeFavourite) {
if (shouldBeFavourite) {
mySettings.addToFavourites(branchType, repository, branchName);
//mySettings.removeFromExcluded(branchType, repository, branchName);
mySettings.removeFromExcluded(branchType, repository, branchName);
}
else {
if (mySettings.isFavourite(branchType, repository, branchName)) {
mySettings.removeFromFavourites(branchType, repository, branchName);
}
else if (myPredefinedFavouriteBranches.contains(branchType.toString(), repository, branchName)) {
//mySettings.excludedFromFavourites()
mySettings.excludedFromFavourites(branchType, repository, branchName);
}
}
}