diff options
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.java | 124 |
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() |