Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java')
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java124
1 files changed, 2 insertions, 122 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java
index 19e85e9c45..4c2c241a33 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/commit/CommitUI.java
@@ -20,7 +20,6 @@ import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
-import java.net.URISyntaxException;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -33,40 +32,24 @@ import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.egit.core.EclipseGitProgressTransformer;
import org.eclipse.egit.core.IteratorService;
import org.eclipse.egit.core.op.CommitOperation;
import org.eclipse.egit.core.project.RepositoryMapping;
import org.eclipse.egit.ui.Activator;
-import org.eclipse.egit.ui.JobFamilies;
-import org.eclipse.egit.ui.UIPreferences;
import org.eclipse.egit.ui.UIText;
import org.eclipse.egit.ui.UIUtils;
-import org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator;
import org.eclipse.egit.ui.internal.dialogs.BasicConfigurationDialog;
import org.eclipse.egit.ui.internal.dialogs.CommitDialog;
-import org.eclipse.egit.ui.internal.dialogs.CommitMessageComponentStateManager;
-import org.eclipse.egit.ui.internal.push.PushOperationUI;
-import org.eclipse.egit.ui.internal.push.PushWizard;
-import org.eclipse.egit.ui.internal.push.SimpleConfigurePushDialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.IndexDiff;
import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.RemoteConfig;
import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
@@ -211,116 +194,13 @@ public class CommitUI {
commitOperation.setCommitAll(commitHelper.isMergedResolved);
if (commitHelper.isMergedResolved)
commitOperation.setRepository(repo);
- Job commitJob = createCommitJob(repo, commitOperation, false);
- if (commitDialog.isPushRequested())
- pushWhenFinished(commitJob);
-
+ Job commitJob = new CommitJob(repo, commitOperation).
+ setPushUpstream(commitDialog.isPushRequested());
commitJob.schedule();
return true;
}
- private void pushWhenFinished(Job commitJob) {
- commitJob.addJobChangeListener(new JobChangeAdapter() {
-
- @Override
- public void done(IJobChangeEvent event) {
- if (event.getResult().getSeverity() == IStatus.ERROR)
- return;
- RemoteConfig config = SimpleConfigurePushDialog
- .getConfiguredRemote(repo);
- if (config == null) {
- Display.getDefault().syncExec(new Runnable() {
-
- public void run() {
- try {
- WizardDialog wizardDialog = new WizardDialog(
- shell, new PushWizard(repo));
- wizardDialog.setHelpAvailable(true);
- wizardDialog.open();
- } catch (URISyntaxException e) {
- Activator.handleError(NLS.bind(
- UIText.CommitUI_pushFailedMessage, e),
- e, true);
- }
- }
- });
- } else {
- int timeout = Activator.getDefault().getPreferenceStore()
- .getInt(UIPreferences.REMOTE_CONNECTION_TIMEOUT);
- PushOperationUI op = new PushOperationUI(repo, config
- .getName(), timeout, false);
- op.start();
- }
- }
- });
- }
-
- /**
- * Uses a Job to perform the given CommitOperation
- * @param repository
- * @param commitOperation
- * @param openNewCommit
- */
- public static void performCommit(final Repository repository,
- final CommitOperation commitOperation, final boolean openNewCommit) {
- Job job = createCommitJob(repository, commitOperation, openNewCommit);
- job.schedule();
- }
-
- private static Job createCommitJob(final Repository repository,
- final CommitOperation commitOperation, final boolean openNewCommit) {
- String jobname = UIText.CommitAction_CommittingChanges;
- Job job = new Job(jobname) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- RevCommit commit = null;
- try {
- commitOperation.execute(monitor);
- commit = commitOperation.getCommit();
- CommitMessageComponentStateManager.deleteState(
- repository);
- RepositoryMapping mapping = RepositoryMapping
- .findRepositoryMapping(repository);
- if (mapping != null)
- mapping.fireRepositoryChanged();
- } catch (CoreException e) {
- if (e.getCause() instanceof JGitInternalException)
- return Activator.createErrorStatus(
- e.getLocalizedMessage(), e.getCause());
- return Activator.createErrorStatus(
- UIText.CommitAction_CommittingFailed, e);
- } finally {
- GitLightweightDecorator.refresh();
- }
- if (openNewCommit && commit != null)
- openCommit(repository, commit);
- return Status.OK_STATUS;
- }
-
- @Override
- public boolean belongsTo(Object family) {
- if (family.equals(JobFamilies.COMMIT))
- return true;
- return super.belongsTo(family);
- }
-
- };
- job.setUser(true);
- return job;
- }
-
- private static void openCommit(final Repository repository,
- final RevCommit newCommit) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
-
- public void run() {
- CommitEditor.openQuiet(new RepositoryCommit(repository,
- newCommit));
- }
- });
- }
-
private IProject[] getProjectsOfRepositories() {
Set<IProject> ret = new HashSet<IProject>();
final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot()

Back to the top