From 127d9e0fcb7cb8c76f6929d1205bf613912874bc Mon Sep 17 00:00:00 2001 From: Jens Baumgart Date: Mon, 10 May 2010 18:03:30 +0200 Subject: [PATCH] Action Reactoring (AbstractOperationAction) AbstractOperationAction currently executes operations in ModalContext. Furthermore the createOperation method has an untyped parameter which resulted in operations with untyped parameter. AbstractOperationAction and AbstractRevObjectAction were replaced by AbstractResourceOperationAction and AbstractRevCommitOperationAction. These new action base classes provide type safe operation creation and execute the operation using a Job. Signed-off-by: Jens Baumgart --- .../eclipse/egit/core/op/AddToIndexOperation.java | 13 ++- .../egit/core/op/AssumeUnchangedOperation.java | 13 ++- .../org/eclipse/egit/core/op/BranchOperation.java | 8 ++ .../egit/core/op/ConnectProviderOperation.java | 11 +++ .../egit/core/op/DiscardChangesOperation.java | 4 +- .../egit/core/op/DisconnectProviderOperation.java | 42 +++++----- .../org/eclipse/egit/core/op/IEGitOperation.java | 6 ++ .../org/eclipse/egit/core/op/ResetOperation.java | 4 +- .../org/eclipse/egit/core/op/TrackOperation.java | 4 +- .../org/eclipse/egit/core/op/UntrackOperation.java | 13 ++- .../org/eclipse/egit/core/op/UpdateOperation.java | 9 ++ .../src/org/eclipse/egit/ui/UIText.java | 33 ++++++++ ...n.java => AbstractResourceOperationAction.java} | 82 +++++++++---------- ....java => AbstractRevCommitOperationAction.java} | 95 ++++++++++++---------- .../internal/actions/AbstractRevObjectAction.java | 27 ------ .../egit/ui/internal/actions/AddToIndexAction.java | 21 ++++- .../egit/ui/internal/actions/AssumeUnchanged.java | 11 ++- .../egit/ui/internal/actions/Disconnect.java | 18 +++- .../actions/HardResetToRevisionAction.java | 14 +++- .../actions/MixedResetToRevisionAction.java | 14 +++- .../actions/QuickdiffBaselineOperation.java | 5 ++ .../actions/ResetQuickdiffBaselineAction.java | 11 ++- .../ResetQuickdiffBaselineHeadParentAction.java | 11 ++- .../actions/SetQuickdiffBaselineAction.java | 14 +++- .../actions/SoftResetToRevisionAction.java | 14 +++- .../eclipse/egit/ui/internal/actions/Untrack.java | 11 ++- .../eclipse/egit/ui/internal/actions/Update.java | 11 ++- .../src/org/eclipse/egit/ui/uitext.properties | 13 ++- 28 files changed, 351 insertions(+), 181 deletions(-) copy org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/{AbstractOperationAction.java => AbstractResourceOperationAction.java} (55%) rename org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/{AbstractOperationAction.java => AbstractRevCommitOperationAction.java} (52%) delete mode 100644 org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevObjectAction.java diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AddToIndexOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AddToIndexOperation.java index 474682dd..95ab51f6 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AddToIndexOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AddToIndexOperation.java @@ -21,6 +21,8 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.egit.core.Activator; import org.eclipse.egit.core.CoreText; import org.eclipse.egit.core.project.RepositoryMapping; @@ -31,7 +33,7 @@ import org.eclipse.jgit.lib.GitIndex.Entry; /** */ public class AddToIndexOperation implements IEGitOperation { - private final Collection rsrcList; + private final Collection rsrcList; private final Collection notAddedFiles; private final IdentityHashMap mappings; @@ -43,7 +45,7 @@ public class AddToIndexOperation implements IEGitOperation { * collection of {@link IResource}s which should be added to the * relevant Git repositories. */ - public AddToIndexOperation(final Collection rsrcs) { + public AddToIndexOperation(final Collection rsrcs) { rsrcList = rsrcs; mappings = new IdentityHashMap(); notAddedFiles = new ArrayList(); @@ -87,6 +89,13 @@ public class AddToIndexOperation implements IEGitOperation { } } + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + return new MultiRule(rsrcList.toArray(new IResource[rsrcList.size()])); + } + /** * @return returns the files that could not be added to the index * because there are unmerged entries diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java index 1686c6ce..b494a8f6 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/AssumeUnchangedOperation.java @@ -22,6 +22,8 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.egit.core.Activator; import org.eclipse.egit.core.CoreText; import org.eclipse.egit.core.project.GitProjectData; @@ -35,7 +37,7 @@ import org.eclipse.osgi.util.NLS; * Tell JGit to ignore changes in selected files */ public class AssumeUnchangedOperation implements IEGitOperation { - private final Collection rsrcList; + private final Collection rsrcList; private final IdentityHashMap caches; @@ -48,7 +50,7 @@ public class AssumeUnchangedOperation implements IEGitOperation { * collection of {@link IResource}s which should be ignored when * looking for changes or committing. */ - public AssumeUnchangedOperation(final Collection rsrcs) { + public AssumeUnchangedOperation(final Collection rsrcs) { rsrcList = rsrcs; caches = new IdentityHashMap(); mappings = new IdentityHashMap(); @@ -96,6 +98,13 @@ public class AssumeUnchangedOperation implements IEGitOperation { } } + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + return new MultiRule(rsrcList.toArray(new IResource[rsrcList.size()])); + } + private void assumeValid(final IResource resource) throws CoreException { final IProject proj = resource.getProject(); final GitProjectData pd = GitProjectData.get(proj); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java index 06fbbabb..ca38e543 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/BranchOperation.java @@ -17,6 +17,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.egit.core.CoreText; import org.eclipse.egit.core.internal.util.ProjectUtil; import org.eclipse.jgit.errors.CheckoutConflictException; @@ -102,6 +103,13 @@ public class BranchOperation implements IEGitOperation { ResourcesPlugin.getWorkspace().run(action, monitor); } + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + return ResourcesPlugin.getWorkspace().getRoot(); + } + private void updateHeadRef() throws TeamException { try { RefUpdate u = repository.updateRef(Constants.HEAD); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ConnectProviderOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ConnectProviderOperation.java index 93c0b120..08d3ac4e 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ConnectProviderOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ConnectProviderOperation.java @@ -16,6 +16,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; @@ -24,6 +25,8 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.egit.core.CoreText; import org.eclipse.egit.core.GitProvider; import org.eclipse.egit.core.internal.trace.GitTraceLocation; @@ -135,6 +138,14 @@ public class ConnectProviderOperation implements IEGitOperation { } } + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + Set projectSet = projects.keySet(); + return new MultiRule(projectSet.toArray(new IProject[projectSet.size()])); + } + /** * @param repos * available repositories diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DiscardChangesOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DiscardChangesOperation.java index 8dd576e1..0a506843 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DiscardChangesOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DiscardChangesOperation.java @@ -60,8 +60,8 @@ public class DiscardChangesOperation implements IEGitOperation { schedulingRule = calcRefreshRule(files); } - /** - * @return the rule needed to execute this operation + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() */ public ISchedulingRule getSchedulingRule() { return schedulingRule; diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DisconnectProviderOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DisconnectProviderOperation.java index 596cc553..f3cc6a1a 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DisconnectProviderOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/DisconnectProviderOperation.java @@ -14,10 +14,11 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.egit.core.CoreText; import org.eclipse.egit.core.internal.trace.GitTraceLocation; import org.eclipse.team.core.RepositoryProvider; @@ -29,7 +30,7 @@ import org.eclipse.team.core.RepositoryProvider; *

*/ public class DisconnectProviderOperation implements IEGitOperation { - private final Collection projectList; + private final Collection projectList; /** * Create a new disconnect operation. @@ -39,7 +40,7 @@ public class DisconnectProviderOperation implements IEGitOperation { * disconnected from the Git team provider, and returned to * untracked/unmanaged status. */ - public DisconnectProviderOperation(final Collection projs) { + public DisconnectProviderOperation(final Collection projs) { projectList = projs; } @@ -54,30 +55,31 @@ public class DisconnectProviderOperation implements IEGitOperation { m.beginTask(CoreText.DisconnectProviderOperation_disconnecting, projectList.size() * 200); try { - for (Object obj : projectList) { - obj = ((IAdaptable)obj).getAdapter(IResource.class); - if (obj instanceof IProject) { - final IProject p = (IProject) obj; - // TODO is this the right location? - if (GitTraceLocation.CORE.isActive()) - GitTraceLocation.getTrace().trace( - GitTraceLocation.CORE.getLocation(), - "disconnect " + p.getName()); //$NON-NLS-1$ - unmarkTeamPrivate(p); - RepositoryProvider.unmap(p); - m.worked(100); + for (IProject p : projectList) { + // TODO is this the right location? + if (GitTraceLocation.CORE.isActive()) + GitTraceLocation.getTrace().trace( + GitTraceLocation.CORE.getLocation(), + "disconnect " + p.getName()); //$NON-NLS-1$ + unmarkTeamPrivate(p); + RepositoryProvider.unmap(p); + m.worked(100); - p.refreshLocal(IResource.DEPTH_INFINITE, - new SubProgressMonitor(m, 100)); - } else { - m.worked(200); - } + p.refreshLocal(IResource.DEPTH_INFINITE, + new SubProgressMonitor(m, 100)); } } finally { m.done(); } } + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + return new MultiRule(projectList.toArray(new IProject[projectList.size()])); + } + private void unmarkTeamPrivate(final IContainer p) throws CoreException { final IResource[] c; c = p.members(IContainer.INCLUDE_TEAM_PRIVATE_MEMBERS); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/IEGitOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/IEGitOperation.java index 99fa664f..f513a04b 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/IEGitOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/IEGitOperation.java @@ -10,6 +10,7 @@ package org.eclipse.egit.core.op; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; /** * interface for EGit operations @@ -22,4 +23,9 @@ public interface IEGitOperation { * @throws CoreException */ void execute(IProgressMonitor monitor) throws CoreException; + + /** + * @return the rule needed to execute this operation + */ + ISchedulingRule getSchedulingRule(); } diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ResetOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ResetOperation.java index 6328050a..ef69591b 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ResetOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/ResetOperation.java @@ -78,8 +78,8 @@ public class ResetOperation implements IEGitOperation { this.type = type; } - /** - * @return the rule needed to execute this operation + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() */ public ISchedulingRule getSchedulingRule() { if (type == ResetType.HARD) diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/TrackOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/TrackOperation.java index 5c589444..8048f126 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/TrackOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/TrackOperation.java @@ -60,8 +60,8 @@ public class TrackOperation implements IEGitOperation { rsrcList = rsrcs; } - /** - * @return the rule needed to execute this operation + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() */ public ISchedulingRule getSchedulingRule() { return new MultiRule(rsrcList); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java index c6264cf6..2c267705 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UntrackOperation.java @@ -22,6 +22,8 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; +import org.eclipse.core.runtime.jobs.MultiRule; import org.eclipse.egit.core.Activator; import org.eclipse.egit.core.CoreText; import org.eclipse.egit.core.project.GitProjectData; @@ -44,7 +46,7 @@ import org.eclipse.osgi.util.NLS; *

*/ public class UntrackOperation implements IEGitOperation { - private final Collection rsrcList; + private final Collection rsrcList; private final IdentityHashMap edits; @@ -57,7 +59,7 @@ public class UntrackOperation implements IEGitOperation { * collection of {@link IResource}s which should be removed from * the relevant Git repositories. */ - public UntrackOperation(final Collection rsrcs) { + public UntrackOperation(final Collection rsrcs) { rsrcList = rsrcs; edits = new IdentityHashMap(); mappings = new IdentityHashMap(); @@ -101,6 +103,13 @@ public class UntrackOperation implements IEGitOperation { } } + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + return new MultiRule(rsrcList.toArray(new IResource[rsrcList.size()])); + } + private void remove(final IResource path) throws CoreException { final IProject proj = path.getProject(); final GitProjectData pd = GitProjectData.get(proj); diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UpdateOperation.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UpdateOperation.java index 378cc117..b836fbb0 100644 --- a/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UpdateOperation.java +++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/op/UpdateOperation.java @@ -14,6 +14,7 @@ import java.util.Collection; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.egit.core.internal.UpdateJob; /** @@ -43,6 +44,14 @@ public class UpdateOperation implements IEGitOperation { * @see org.eclipse.egit.core.op.IEGitOperation#execute(org.eclipse.core.runtime.IProgressMonitor) */ public void execute(IProgressMonitor m) throws CoreException { + // TODO: integrate UpdateJob here since UpdateOperation is already run in a Job new UpdateJob(rsrcList).schedule(); } + + /* (non-Javadoc) + * @see org.eclipse.egit.core.op.IEGitOperation#getSchedulingRule() + */ + public ISchedulingRule getSchedulingRule() { + return null; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java index 2c6994e9..a0e66afb 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java @@ -40,12 +40,18 @@ public class UIText extends NLS { public static String Activator_scanningRepositories; /** */ + public static String AddToIndexAction_addingFiles; + + /** */ public static String AddToIndexAction_addingFilesFailed; /** */ public static String AddToIndexAction_indexesWithUnmergedEntries; /** */ + public static String AssumeUnchanged_assumeUnchanged; + + /** */ public static String WizardProjectsImportPage_ImportProjectsTitle; /** */ @@ -115,6 +121,9 @@ public class UIText extends NLS { public static String SelectRemoteNamePage_SelectRemoteNameMessage; /** */ + public static String SetQuickdiffBaselineAction_setQuickdiffBaseline; + + /** */ public static String SharingWizard_windowTitle; /** */ @@ -400,6 +409,9 @@ public class UIText extends NLS { public static String RepositorySelectionPage_uriChoice; /** */ + public static String SoftResetToRevisionAction_softReset; + + /** */ public static String SourceBranchPage_repoEmpty; /** */ @@ -736,6 +748,12 @@ public class UIText extends NLS { public static String ResetAction_resetFailed; /** */ + public static String ResetQuickdiffBaselineAction_resetQuickdiffBaseline; + + /** */ + public static String ResetQuickdiffBaselineHeadParentAction_0; + + /** */ public static String ResourceHistory_toggleCommentWrap; /** */ @@ -751,6 +769,9 @@ public class UIText extends NLS { public static String ResourceHistory_toggleTooltips; /** */ + public static String HardResetToRevisionAction_hardReset; + + /** */ public static String HistoryPage_authorColumn; /** */ @@ -1750,6 +1771,9 @@ public class UIText extends NLS { public static String DiscardChangesAction_refreshErrorMessage; /** */ + public static String Disconnect_disconnect; + + /** */ public static String GitCompareFileRevisionEditorInput_contentIdentifier; /** */ @@ -1873,11 +1897,20 @@ public class UIText extends NLS { public static String GitShareProjectsPage_RepositoryLabel; /** */ + public static String MixedResetToRevisionAction_mixedReset; + + /** */ public static String UIIcons_errorDeterminingIconBase; /** */ public static String UIIcons_errorLoadingPluginImage; + /** */ + public static String Untrack_untrack; + + /** */ + public static String Update_update; + static { initializeMessages("org.eclipse.egit.ui.uitext", UIText.class); //$NON-NLS-1$ } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractOperationAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractResourceOperationAction.java similarity index 55% copy from org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractOperationAction.java copy to org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractResourceOperationAction.java index 38f3312a..7ab1f5eb 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractOperationAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractResourceOperationAction.java @@ -1,6 +1,5 @@ /******************************************************************************* - * Copyright (C) 2008, Robin Rosenberg - * Copyright (C) 2007, Shawn O. Pearce + * Copyright (C) 2010, Jens Baumgart * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -9,30 +8,29 @@ *******************************************************************************/ package org.eclipse.egit.ui.internal.actions; -import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.ui.Activator; -import org.eclipse.egit.ui.UIText; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.osgi.util.NLS; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; /** - * Common functionality for EGit operations. + * Common functionality resource based EGit operations. + * */ -public abstract class AbstractOperationAction implements IObjectActionDelegate { +public abstract class AbstractResourceOperationAction implements IObjectActionDelegate { /** * The active workbench part */ @@ -60,54 +58,50 @@ public abstract class AbstractOperationAction implements IObjectActionDelegate { * * @return a {@link IEGitOperation} for invoking this operation later on */ - protected abstract IEGitOperation createOperation(final List selection); + protected abstract IEGitOperation createOperation(final List selection); + + /** + * @return the name of the execution Job + */ + protected abstract String getJobName(); /** * A method to invoke when the operation is finished. + * The method is called outside the UI thread. */ protected void postOperation() { // Empty } public void run(final IAction act) { - op = createOperation(selection); - if (op != null) { - try { + op = createOperation(getSelectedResources()); + if(op==null) + return; + String jobname = getJobName(); + Job job = new Job(jobname) { + @Override + protected IStatus run(IProgressMonitor monitor) { try { - wp.getSite().getWorkbenchWindow().run(true, false, - new IRunnableWithProgress() { - public void run(final IProgressMonitor monitor) - throws InvocationTargetException { - try { - op.execute(monitor); - } catch (CoreException ce) { - throw new InvocationTargetException(ce); - } - } - }); - } finally { + op.execute(monitor); postOperation(); + } catch (CoreException e) { + return Activator.createErrorStatus(e.getStatus() + .getMessage(), e); } - } catch (Throwable e) { - final String msg = NLS.bind(UIText.GenericOperationFailed, act - .getText()); - final IStatus status; - - if (e instanceof InvocationTargetException) { - e = e.getCause(); - } - - if (e instanceof CoreException) { - status = ((CoreException) e).getStatus(); - } else { - status = new Status(IStatus.ERROR, Activator.getPluginId(), - 1, msg, e); - } - - Activator.logError(msg, e); - ErrorDialog.openError(wp.getSite().getShell(), act.getText(), - msg, status, status.getSeverity()); + return Status.OK_STATUS; } + }; + job.setUser(true); + job.setRule(op.getSchedulingRule()); + job.schedule(); + } + + private List getSelectedResources() { + List resources = new ArrayList(); + for(Object object: selection) { + if(object instanceof IResource) + resources.add((IResource) object); } + return resources; } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractOperationAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevCommitOperationAction.java similarity index 52% rename from org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractOperationAction.java rename to org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevCommitOperationAction.java index 38f3312a..360c88f7 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractOperationAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevCommitOperationAction.java @@ -1,6 +1,5 @@ /******************************************************************************* - * Copyright (C) 2008, Robin Rosenberg - * Copyright (C) 2007, Shawn O. Pearce + * Copyright (C) 2010, Jens Baumgart * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -9,7 +8,7 @@ *******************************************************************************/ package org.eclipse.egit.ui.internal.actions; -import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -17,22 +16,23 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.ui.Activator; -import org.eclipse.egit.ui.UIText; +import org.eclipse.egit.ui.internal.history.RevObjectSelectionProvider; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.osgi.util.NLS; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; /** - * Common functionality for EGit operations. + * Common functionality resource based EGit operations. + * */ -public abstract class AbstractOperationAction implements IObjectActionDelegate { +public abstract class AbstractRevCommitOperationAction implements IObjectActionDelegate { /** * The active workbench part */ @@ -60,54 +60,61 @@ public abstract class AbstractOperationAction implements IObjectActionDelegate { * * @return a {@link IEGitOperation} for invoking this operation later on */ - protected abstract IEGitOperation createOperation(final List selection); + protected abstract IEGitOperation createOperation(final List selection); + + /** + * @return the name of the execution Job + */ + protected abstract String getJobName(); /** * A method to invoke when the operation is finished. + * The method is called outside the UI thread. */ protected void postOperation() { // Empty } public void run(final IAction act) { - op = createOperation(selection); - if (op != null) { - try { + op = createOperation(getSelectedCommits()); + if(op==null) + return; + String jobname = getJobName(); + Job job = new Job(jobname) { + @Override + protected IStatus run(IProgressMonitor monitor) { try { - wp.getSite().getWorkbenchWindow().run(true, false, - new IRunnableWithProgress() { - public void run(final IProgressMonitor monitor) - throws InvocationTargetException { - try { - op.execute(monitor); - } catch (CoreException ce) { - throw new InvocationTargetException(ce); - } - } - }); - } finally { + op.execute(monitor); postOperation(); + } catch (CoreException e) { + return Activator.createErrorStatus(e.getStatus() + .getMessage(), e); } - } catch (Throwable e) { - final String msg = NLS.bind(UIText.GenericOperationFailed, act - .getText()); - final IStatus status; - - if (e instanceof InvocationTargetException) { - e = e.getCause(); - } - - if (e instanceof CoreException) { - status = ((CoreException) e).getStatus(); - } else { - status = new Status(IStatus.ERROR, Activator.getPluginId(), - 1, msg, e); - } - - Activator.logError(msg, e); - ErrorDialog.openError(wp.getSite().getShell(), act.getText(), - msg, status, status.getSeverity()); + return Status.OK_STATUS; } + }; + job.setUser(true); + job.setRule(op.getSchedulingRule()); + job.schedule(); + } + + private List getSelectedCommits() { + List commits = new ArrayList(); + for(Object object: selection) { + if(object instanceof RevCommit) + commits.add((RevCommit) object); } + return commits; + } + + /** + * Find out which repository is involved here + * + * @return the Git repository associated with the selected RevObject + */ + protected Repository getActiveRepository() { + RevObjectSelectionProvider selectionProvider = (RevObjectSelectionProvider) wp + .getSite().getSelectionProvider(); + return selectionProvider.getActiveRepository(); } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevObjectAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevObjectAction.java deleted file mode 100644 index 6a4b756d..00000000 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AbstractRevObjectAction.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2008, Robin Rosenberg - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - *******************************************************************************/ -package org.eclipse.egit.ui.internal.actions; - -import org.eclipse.egit.ui.internal.history.RevObjectSelectionProvider; -import org.eclipse.jgit.lib.Repository; - -abstract class AbstractRevObjectAction extends AbstractOperationAction { - - /** - * Find out which repository is involved here - * - * @return the Git repository associated with the selected RevObject - */ - protected Repository getActiveRepository() { - RevObjectSelectionProvider selectionProvider = (RevObjectSelectionProvider) wp - .getSite().getSelectionProvider(); - return selectionProvider.getActiveRepository(); - } - -} diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AddToIndexAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AddToIndexAction.java index 880d9e30..ddf8dbc3 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AddToIndexAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AddToIndexAction.java @@ -12,20 +12,22 @@ import java.util.Collection; import java.util.List; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; import org.eclipse.egit.core.op.AddToIndexOperation; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.ui.UIText; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Display; /** * An action to add files to a Git index. * * @see AddToIndexOperation */ -public class AddToIndexAction extends AbstractOperationAction { +public class AddToIndexAction extends AbstractResourceOperationAction { private AddToIndexOperation operation = null; - protected IEGitOperation createOperation(final List sel) { + protected IEGitOperation createOperation(final List sel) { if (sel.isEmpty()) { return null; } else { @@ -39,11 +41,17 @@ public class AddToIndexAction extends AbstractOperationAction { Collection notAddedFiles = operation.getNotAddedFiles(); if (notAddedFiles.size()==0) return; - String title = UIText.AddToIndexAction_addingFilesFailed; + final String title = UIText.AddToIndexAction_addingFilesFailed; String message = UIText.AddToIndexAction_indexesWithUnmergedEntries; message += "\n\n"; //$NON-NLS-1$ message += getFileList(notAddedFiles); - MessageDialog.openWarning(wp.getSite().getShell(), title, message); + final String fMessage = message; + Display.getDefault().asyncExec(new Runnable() { + public void run() { + MessageDialog.openWarning(wp.getSite().getShell(), title, fMessage); + } + }); + } private static String getFileList(Collection notAddedFiles) { @@ -55,5 +63,10 @@ public class AddToIndexAction extends AbstractOperationAction { return result; } + @Override + protected String getJobName() { + return UIText.AddToIndexAction_addingFiles; + } + } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AssumeUnchanged.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AssumeUnchanged.java index 38fb3646..1ed3efed 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AssumeUnchanged.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/AssumeUnchanged.java @@ -11,8 +11,10 @@ package org.eclipse.egit.ui.internal.actions; import java.util.List; +import org.eclipse.core.resources.IResource; import org.eclipse.egit.core.op.AssumeUnchangedOperation; import org.eclipse.egit.core.op.IEGitOperation; +import org.eclipse.egit.ui.UIText; /** * This operation sets the assume-valid bit in the index for the @@ -20,8 +22,13 @@ import org.eclipse.egit.core.op.IEGitOperation; * * @see AssumeUnchangedOperation */ -public class AssumeUnchanged extends AbstractOperationAction { - protected IEGitOperation createOperation(final List sel) { +public class AssumeUnchanged extends AbstractResourceOperationAction { + protected IEGitOperation createOperation(final List sel) { return sel.isEmpty() ? null : new AssumeUnchangedOperation(sel); } + + @Override + protected String getJobName() { + return UIText.AssumeUnchanged_assumeUnchanged; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Disconnect.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Disconnect.java index 72ce7179..87643529 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Disconnect.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Disconnect.java @@ -9,10 +9,14 @@ *******************************************************************************/ package org.eclipse.egit.ui.internal.actions; +import java.util.ArrayList; import java.util.List; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.egit.core.op.DisconnectProviderOperation; import org.eclipse.egit.core.op.IEGitOperation; +import org.eclipse.egit.ui.UIText; import org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator; /** @@ -20,12 +24,20 @@ import org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator; * * @see DisconnectProviderOperation */ -public class Disconnect extends AbstractOperationAction { - protected IEGitOperation createOperation(final List sel) { - return sel.isEmpty() ? null : new DisconnectProviderOperation(sel); +public class Disconnect extends AbstractResourceOperationAction { + protected IEGitOperation createOperation(final List sel) { + List projects = new ArrayList(); + for(IResource resource:sel) + projects.add((IProject) resource); + return new DisconnectProviderOperation(projects); } protected void postOperation() { GitLightweightDecorator.refresh(); } + + @Override + protected String getJobName() { + return UIText.Disconnect_disconnect; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/HardResetToRevisionAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/HardResetToRevisionAction.java index 1c126cea..94c897b7 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/HardResetToRevisionAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/HardResetToRevisionAction.java @@ -12,17 +12,23 @@ import java.util.List; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.core.op.ResetOperation; -import org.eclipse.jgit.lib.AnyObjectId; +import org.eclipse.egit.ui.UIText; +import org.eclipse.jgit.revwalk.RevCommit; /** * Hard reset to selected revision */ -public class HardResetToRevisionAction extends AbstractRevObjectAction { +public class HardResetToRevisionAction extends AbstractRevCommitOperationAction { @Override - protected IEGitOperation createOperation(List selection) { + protected IEGitOperation createOperation(final List commits) { return new ResetOperation(getActiveRepository(), - ((AnyObjectId) selection.get(0)).name(), + commits.get(0).getName(), ResetOperation.ResetType.HARD); } + + @Override + protected String getJobName() { + return UIText.HardResetToRevisionAction_hardReset; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/MixedResetToRevisionAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/MixedResetToRevisionAction.java index f6459f48..3a8e2f1c 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/MixedResetToRevisionAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/MixedResetToRevisionAction.java @@ -12,17 +12,23 @@ import java.util.List; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.core.op.ResetOperation; -import org.eclipse.jgit.lib.AnyObjectId; +import org.eclipse.egit.ui.UIText; +import org.eclipse.jgit.revwalk.RevCommit; /** * Mixed reset to selected revision */ -public class MixedResetToRevisionAction extends AbstractRevObjectAction { +public class MixedResetToRevisionAction extends AbstractRevCommitOperationAction { @Override - protected IEGitOperation createOperation(List selection) { + protected IEGitOperation createOperation(List selection) { return new ResetOperation(getActiveRepository(), - ((AnyObjectId) selection.get(0)).name(), + selection.get(0).name(), ResetOperation.ResetType.MIXED); } + + @Override + protected String getJobName() { + return UIText.MixedResetToRevisionAction_mixedReset; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/QuickdiffBaselineOperation.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/QuickdiffBaselineOperation.java index ef90d7fd..b957074f 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/QuickdiffBaselineOperation.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/QuickdiffBaselineOperation.java @@ -12,6 +12,7 @@ import java.io.IOException; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.egit.ui.Activator; import org.eclipse.egit.ui.UIText; import org.eclipse.egit.ui.internal.decorators.GitQuickDiffProvider; @@ -49,4 +50,8 @@ public class QuickdiffBaselineOperation extends AbstractRevObjectOperation { } } + public ISchedulingRule getSchedulingRule() { + return null; + } + } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineAction.java index 392f6058..615bee4c 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineAction.java @@ -11,15 +11,22 @@ package org.eclipse.egit.ui.internal.actions; import java.util.List; import org.eclipse.egit.core.op.IEGitOperation; +import org.eclipse.egit.ui.UIText; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.revwalk.RevCommit; /** * Changes the reference for the quickdiff to HEAD */ -public class ResetQuickdiffBaselineAction extends AbstractRevObjectAction { +public class ResetQuickdiffBaselineAction extends AbstractRevCommitOperationAction { @Override - protected IEGitOperation createOperation(List selection) { + protected IEGitOperation createOperation(List selection) { return new QuickdiffBaselineOperation(getActiveRepository(), Constants.HEAD); } + + @Override + protected String getJobName() { + return UIText.ResetQuickdiffBaselineAction_resetQuickdiffBaseline; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineHeadParentAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineHeadParentAction.java index 71e9dec4..510241f9 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineHeadParentAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/ResetQuickdiffBaselineHeadParentAction.java @@ -11,14 +11,21 @@ package org.eclipse.egit.ui.internal.actions; import java.util.List; import org.eclipse.egit.core.op.IEGitOperation; +import org.eclipse.egit.ui.UIText; +import org.eclipse.jgit.revwalk.RevCommit; /** * Changes the reference for the quickdiff to the (first) parent of HEAD */ -public class ResetQuickdiffBaselineHeadParentAction extends AbstractRevObjectAction { +public class ResetQuickdiffBaselineHeadParentAction extends AbstractRevCommitOperationAction { @Override - protected IEGitOperation createOperation(List selection) { + protected IEGitOperation createOperation(List selection) { return new QuickdiffBaselineOperation(getActiveRepository(), "HEAD^1"); //$NON-NLS-1$ } + + @Override + protected String getJobName() { + return UIText.ResetQuickdiffBaselineHeadParentAction_0; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SetQuickdiffBaselineAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SetQuickdiffBaselineAction.java index 062b525d..37a5f72d 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SetQuickdiffBaselineAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SetQuickdiffBaselineAction.java @@ -11,16 +11,22 @@ package org.eclipse.egit.ui.internal.actions; import java.util.List; import org.eclipse.egit.core.op.IEGitOperation; -import org.eclipse.jgit.revwalk.RevObject; +import org.eclipse.egit.ui.UIText; +import org.eclipse.jgit.revwalk.RevCommit; /** * Changes the reference for the quickdiff */ -public class SetQuickdiffBaselineAction extends AbstractRevObjectAction { +public class SetQuickdiffBaselineAction extends AbstractRevCommitOperationAction { @Override - protected IEGitOperation createOperation(List selection) { - return new QuickdiffBaselineOperation(getActiveRepository(), ((RevObject)selection.get(0)).getId().name()); + protected IEGitOperation createOperation(List selection) { + return new QuickdiffBaselineOperation(getActiveRepository(), selection.get(0).getId().name()); + } + + @Override + protected String getJobName() { + return UIText.SetQuickdiffBaselineAction_setQuickdiffBaseline; } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SoftResetToRevisionAction.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SoftResetToRevisionAction.java index 1e6d724b..7def224d 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SoftResetToRevisionAction.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/SoftResetToRevisionAction.java @@ -12,17 +12,23 @@ import java.util.List; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.core.op.ResetOperation; -import org.eclipse.jgit.lib.AnyObjectId; +import org.eclipse.egit.ui.UIText; +import org.eclipse.jgit.revwalk.RevCommit; /** * Soft reset to selected revision */ -public class SoftResetToRevisionAction extends AbstractRevObjectAction { +public class SoftResetToRevisionAction extends AbstractRevCommitOperationAction { @Override - protected IEGitOperation createOperation(List selection) { + protected IEGitOperation createOperation(List selection) { return new ResetOperation(getActiveRepository(), - ((AnyObjectId) selection.get(0)).name(), + selection.get(0).name(), ResetOperation.ResetType.SOFT); } + + @Override + protected String getJobName() { + return UIText.SoftResetToRevisionAction_softReset; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Untrack.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Untrack.java index f084f6b9..ddfd9f2a 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Untrack.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Untrack.java @@ -11,8 +11,10 @@ package org.eclipse.egit.ui.internal.actions; import java.util.List; +import org.eclipse.core.resources.IResource; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.core.op.UntrackOperation; +import org.eclipse.egit.ui.UIText; /** * An action to remove files from a Git repository. The removal does not alter @@ -20,8 +22,13 @@ import org.eclipse.egit.core.op.UntrackOperation; * * @see UntrackOperation */ -public class Untrack extends AbstractOperationAction { - protected IEGitOperation createOperation(final List sel) { +public class Untrack extends AbstractResourceOperationAction { + protected IEGitOperation createOperation(final List sel) { return sel.isEmpty() ? null : new UntrackOperation(sel); } + + @Override + protected String getJobName() { + return UIText.Untrack_untrack; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Update.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Update.java index dfd7a286..1e9a3fc3 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Update.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/Update.java @@ -11,16 +11,23 @@ package org.eclipse.egit.ui.internal.actions; import java.util.List; +import org.eclipse.core.resources.IResource; import org.eclipse.egit.core.op.IEGitOperation; import org.eclipse.egit.core.op.UpdateOperation; +import org.eclipse.egit.ui.UIText; /** * Action to update index for selected resources with content from workdir. * * @see UpdateOperation */ -public class Update extends AbstractOperationAction { - protected IEGitOperation createOperation(final List sel) { +public class Update extends AbstractResourceOperationAction { + protected IEGitOperation createOperation(final List sel) { return sel.isEmpty() ? null : new UpdateOperation(sel); } + + @Override + protected String getJobName() { + return UIText.Update_update; + } } diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties index 019b3714..b737d6f2 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties @@ -14,7 +14,9 @@ Activator_scanError=An error occurred while scanning for changes. Scanning abort Activator_scanningRepositories=Scanning Git repositories for changes Activator_refreshFailed=Failed to refresh projects from index changes AddToIndexAction_indexesWithUnmergedEntries=The indexes of the following files contain unmerged entries: +AddToIndexAction_addingFiles=Adding files to Git Index AddToIndexAction_addingFilesFailed=Adding Files to the Git Index failed +AssumeUnchanged_assumeUnchanged=Assume unchanged WizardProjectsImportPage_projectLabel={0} ({1}) WizardProjectsImportPage_ImportProjectsTitle=Import Projects WizardProjectsImportPage_ImportProjectsDescription=Import projects from a Git repository @@ -40,6 +42,7 @@ SelectRemoteNamePage_RemoteNameLabel=Remote name SelectRemoteNamePage_RemoteNameMessage=Please select a remote name SelectRemoteNamePage_RemoteNameTitle=Remote Name SelectRemoteNamePage_SelectRemoteNameMessage=Select a remote name +SetQuickdiffBaselineAction_setQuickdiffBaseline=Set Quickdiff Baseline SharingWizard_windowTitle=Configure Git Repository SharingWizard_failed=Failed to initialize Git team provider. @@ -142,6 +145,7 @@ RepositorySelectionPage_fieldNotSupported={0} not supported on {1} protocol. RepositorySelectionPage_fileNotFound={0} does not exist. RepositorySelectionPage_internalError=Internal error; consult Eclipse error log. RepositorySelectionPage_ShowPreviousURIs_HoverText=Start typing to see previously used URIs (use "*" as wildcard) +SoftResetToRevisionAction_softReset=Soft Reset SourceBranchPage_repoEmpty=Source Git Repository is empty SourceBranchPage_title=Branch Selection SourceBranchPage_description=Select branches to clone from remote repository. @@ -260,12 +264,15 @@ ResetAction_errorResettingHead=Cannot reset HEAD now ResetAction_repositoryState=Repository state: {0} ResetAction_reset=Resetting to {0} ResetAction_resetFailed=Reset failed +ResetQuickdiffBaselineAction_resetQuickdiffBaseline=Reset Quickdiff Baseline +ResetQuickdiffBaselineHeadParentAction_0=Reset Quickdiff Baseline ResourceHistory_toggleCommentWrap=Wrap Comments ResourceHistory_toggleCommentFill=Fill paragraphs ResourceHistory_toggleRevDetail=Show Revision Details ResourceHistory_toggleRevComment=Show Revision Comment ResourceHistory_toggleTooltips=Show Revision Tooltip +HardResetToRevisionAction_hardReset=Hard Reset HistoryPage_authorColumn=Author HistoryPage_dateColumn=Date HistoryPage_pathnameColumn=Path @@ -625,6 +632,7 @@ DiscardChangesAction_unexpectedErrorMessage=An unexpected error occured while at DiscardChangesAction_unexpectedIndexErrorMessage=An unexpected error occured while attempting to interact with the Git Index. DiscardChangesAction_refreshErrorTitle=Error During Refresh DiscardChangesAction_refreshErrorMessage=Some of the selected resources could not be refreshed. +Disconnect_disconnect=Disconnect GitCompareFileRevisionEditorInput_contentIdentifier=Problem getting content identifier GitCreateGeneralProjectPage_DirLabel=Directory @@ -667,6 +675,9 @@ GitShareProjectsPage_PageTitle=Share projects with Git GitShareProjectsPage_ProjectAlreadySharedMessage=Project {0} already shared GitShareProjectsPage_ProjectNameLabel=Project name GitShareProjectsPage_RepositoryLabel=Git Repository +MixedResetToRevisionAction_mixedReset=Mixed Reset UIIcons_errorDeterminingIconBase=Can't determine icon base. -UIIcons_errorLoadingPluginImage=Can't load plugin image. \ No newline at end of file +UIIcons_errorLoadingPluginImage=Can't load plugin image. +Untrack_untrack=Untrack +Update_update=Update -- 2.11.4.GIT