mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[git]: implement excluded favourite branches
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user