From 4e2420c50eb41d54fd258b6d30f2c4c4009bedab Mon Sep 17 00:00:00 2001 From: Mathias Kinzler Date: Tue, 27 Apr 2010 10:44:08 +0200 Subject: [PATCH] Branch checkout: add progress monitoring This adds progress monitoring to the branch checkout operation for better user feedback. Change-Id: Ic4360bafc881004e8f1cac2d95912c2e452895bd Signed-off-by: Mathias Kinzler Signed-off-by: Chris Aniszczyk --- .../src/org/eclipse/egit/ui/UIText.java | 3 ++ .../ui/internal/repository/RepositoriesView.java | 54 ++++++++++++++-------- .../src/org/eclipse/egit/ui/uitext.properties | 1 + 3 files changed, 39 insertions(+), 19 deletions(-) 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 de8ee97a..bef427f5 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 @@ -1516,6 +1516,9 @@ public class UIText extends NLS { public static String RepositoriesView_Checking_Message; /** */ + public static String RepositoriesView_CheckingOutMessage; + + /** */ public static String RepositoriesView_CheckOut_MenuItem; /** */ diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java index f613e62a..b1f62c67 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesView.java @@ -497,28 +497,44 @@ public class RepositoriesView extends ViewPart implements ISelectionProvider { @Override public void widgetSelected(SelectionEvent e) { - Repository repo = node.getRepository(); - String refName = ref.getLeaf().getName(); - final BranchOperation op = new BranchOperation(repo, - refName); - IWorkspaceRunnable wsr = new IWorkspaceRunnable() { - public void run(IProgressMonitor monitor) - throws CoreException { - op.run(monitor); + final String refName = ref.getLeaf().getName(); + + Job job = new Job(NLS.bind(UIText.RepositoriesView_CheckingOutMessage, refName)) { + + @Override + protected IStatus run(IProgressMonitor monitor) { + + Repository repo = node.getRepository(); + + final BranchOperation op = new BranchOperation( + repo, refName); + IWorkspaceRunnable wsr = new IWorkspaceRunnable() { + + public void run(IProgressMonitor myMonitor) + throws CoreException { + op.run(myMonitor); + } + }; + + try { + ResourcesPlugin.getWorkspace().run( + wsr, + ResourcesPlugin.getWorkspace() + .getRoot(), + IWorkspace.AVOID_UPDATE, + monitor); + scheduleRefresh(); + } catch (CoreException e1) { + return e1.getStatus(); + } + return new Status(IStatus.OK, Activator + .getPluginId(), ""); //$NON-NLS-1$ } }; - try { - ResourcesPlugin.getWorkspace().run(wsr, - ResourcesPlugin.getWorkspace().getRoot(), - IWorkspace.AVOID_UPDATE, - new NullProgressMonitor()); - scheduleRefresh(); - } catch (CoreException e1) { - MessageDialog.openError(getSite().getShell(), - UIText.RepositoriesView_Error_WindowTitle, e1 - .getMessage()); - } + + job.setUser(true); + job.schedule(); } 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 95f6581a..a5c3c35e 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 @@ -545,6 +545,7 @@ RepositoriesView_AddRepository_MenuItem=Add Git Repository... RepositoriesView_AddRepository_Tooltip=Add an existing Git Repository RepositoriesView_Branches_Nodetext=Branches RepositoriesView_Checking_Message=Checking: {0} +RepositoriesView_CheckingOutMessage=Checking out {0} RepositoriesView_CheckOut_MenuItem=Check out RepositoriesView_Clone_Tooltip=Import (clone) a Git Repository RepositoriesView_ConfigureFetchMenu=Configure Fetch... -- 2.11.4.GIT