From 10d49689a2377edd7a9ccb0be1d3e07259dc84c4 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Wed, 2 Mar 2016 16:22:27 +0300 Subject: [PATCH] vcs: simplify: merge modal & non-modal branches use conditional modal logic for Task.Backgroundable calling start/stopBackgroundVcsOperation seems reasonable in both cases. Relates to IDEA-151547. --- .../openapi/vcs/changes/ui/CommitHelper.java | 53 ++++++++----------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java index 0e453e0ae95d..5c897523ac24 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitHelper.java @@ -48,8 +48,9 @@ import com.intellij.util.NullableFunction; import com.intellij.util.WaitForProgressToShow; import com.intellij.util.concurrency.Semaphore; import com.intellij.util.ui.ConfirmationDialog; -import org.jetbrains.annotations.*; import org.jetbrains.annotations.CalledInAwt; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -115,38 +116,30 @@ public class CommitHelper { } private boolean doCommit(final GeneralCommitProcessor processor) { + Task.Backgroundable task = new Task.Backgroundable(myProject, myActionName, true, myConfiguration.getCommitOption()) { + public void run(@NotNull final ProgressIndicator indicator) { + final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject); + vcsManager.startBackgroundVcsOperation(); + try { + delegateCommitToVcsThread(processor); + } + finally { + vcsManager.stopBackgroundVcsOperation(); + } + } - final Runnable action = new Runnable() { - public void run() { - delegateCommitToVcsThread(processor); + @Override + public boolean shouldStartInBackground() { + return !myForceSyncCommit && super.shouldStartInBackground(); + } + + @Override + public boolean isConditionalModal() { + return myForceSyncCommit; } }; - - if (myForceSyncCommit) { - ProgressManager.getInstance().runProcessWithProgressSynchronously(action, myActionName, true, myProject); - boolean success = doesntContainErrors(processor.getVcsExceptions()); - if (success) { - reportResult(processor); - } - return success; - } - else { - Task.Backgroundable task = - new Task.Backgroundable(myProject, myActionName, true, myConfiguration.getCommitOption()) { - public void run(@NotNull final ProgressIndicator indicator) { - final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject); - vcsManager.startBackgroundVcsOperation(); - try { - action.run(); - } - finally { - vcsManager.stopBackgroundVcsOperation(); - } - } - }; - ProgressManager.getInstance().run(task); - return false; - } + ProgressManager.getInstance().run(task); + return doesntContainErrors(processor.getVcsExceptions()); } private void delegateCommitToVcsThread(final GeneralCommitProcessor processor) {