GitOptionsTopHitProvider: two options added

This commit is contained in:
Sergey Malenkov
2014-09-23 17:49:00 +04:00
parent 67a37018df
commit 04bea33a04
@@ -15,16 +15,19 @@
*/
package git4idea.config;
import com.intellij.dvcs.branch.DvcsSyncSettings;
import com.intellij.ide.ui.OptionsTopHitProvider;
import com.intellij.ide.ui.PublicMethodBasedOptionDescription;
import com.intellij.ide.ui.search.BooleanOptionDescription;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.openapi.vcs.impl.VcsDescriptor;
import git4idea.repo.GitRepositoryManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -43,11 +46,28 @@ public final class GitOptionsTopHitProvider extends OptionsTopHitProvider {
if (project != null) {
for (VcsDescriptor descriptor : ProjectLevelVcsManager.getInstance(project).getAllVcss()) {
if ("Git".equals(descriptor.getDisplayName())) {
return Collections.unmodifiableCollection(Arrays.asList(
option(project, "Git: Commit automatically on cherry-pick", "isAutoCommitOnCherryPick", "setAutoCommitOnCherryPick"),
option(project, "Git: Auto-update if push of the current branch was rejected", "autoUpdateIfPushRejected", "setAutoUpdateIfPushRejected"),
option(project, "Git: Warn if CRLF line separators are about to be committed", "warnAboutCrlf", "setWarnAboutCrlf"),
option(project, "Git: Warn when committing in detached HEAD or during rebase", "warnAboutDetachedHead", "setWarnAboutDetachedHead")));
final GitVcsSettings settings = GitVcsSettings.getInstance(project);
ArrayList<BooleanOptionDescription> options = new ArrayList<BooleanOptionDescription>();
options.add(option(project, "Git: Commit automatically on cherry-pick", "isAutoCommitOnCherryPick", "setAutoCommitOnCherryPick"));
options.add(option(project, "Git: Auto-update if push of the current branch was rejected", "autoUpdateIfPushRejected", "setAutoUpdateIfPushRejected"));
GitRepositoryManager manager = ServiceManager.getService(project, GitRepositoryManager.class);
if (manager != null && manager.moreThanOneRoot()) {
options.add(new BooleanOptionDescription("Git: Control repositories synchronously", "vcs.Git") {
@Override
public boolean isOptionEnabled() {
return settings.getSyncSetting() == DvcsSyncSettings.Value.SYNC;
}
@Override
public void setOptionState(boolean enabled) {
settings.setSyncSetting(enabled ? DvcsSyncSettings.Value.SYNC : DvcsSyncSettings.Value.DONT_SYNC);
}
});
}
options.add(option(project, "Git: Warn if CRLF line separators are about to be committed", "warnAboutCrlf", "setWarnAboutCrlf"));
options.add(option(project, "Git: Warn when committing in detached HEAD or during rebase", "warnAboutDetachedHead", "setWarnAboutDetachedHead"));
options.add(option(project, "Git: Allow force push", "isForcePushAllowed", "setForcePushAllowed"));
return Collections.unmodifiableCollection(options);
}
}
}