From e91016c41f47e63abeed27594580f041ee68e417 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Sun, 11 May 2008 16:03:13 -0400 Subject: [PATCH] Show transport errors received while listing branches in clone wizard If we cannot list the available branches during the clone wizard then there is something wrong with the URI supplied to us, or the network is currently unavailable. We should inform the user about the problem rather than just claiming they must select a branch. Signed-off-by: Shawn O. Pearce --- .../src/org/spearce/egit/ui/UIText.java | 9 ++++++ .../egit/ui/internal/clone/SourceBranchPage.java | 36 +++++++++++++++++----- .../src/org/spearce/egit/ui/uitext.properties | 3 ++ 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java index 57bf1959..dd8c3174 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIText.java @@ -117,6 +117,15 @@ public class UIText extends NLS { public static String SourceBranchPage_errorBranchRequired; /** */ + public static String SourceBranchPage_transportError; + + /** */ + public static String SourceBranchPage_interrupted; + + /** */ + public static String SourceBranchPage_cannotListBranches; + + /** */ public static String CloneDestinationPage_title; /** */ diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/SourceBranchPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/SourceBranchPage.java index 39723ce9..22d34b6d 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/SourceBranchPage.java +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/clone/SourceBranchPage.java @@ -26,7 +26,10 @@ import java.util.Comparator; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.osgi.util.NLS; @@ -43,6 +46,7 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; +import org.spearce.egit.ui.Activator; import org.spearce.egit.ui.UIIcons; import org.spearce.egit.ui.UIText; import org.spearce.jgit.lib.Constants; @@ -69,6 +73,8 @@ class SourceBranchPage extends WizardPage { private boolean allSelected; + private String transportError; + SourceBranchPage(final CloneSourcePage sp) { super(SourceBranchPage.class.getName()); sourcePage = sp; @@ -173,6 +179,11 @@ class SourceBranchPage extends WizardPage { @Override public boolean isPageComplete() { + if (transportError != null) { + setErrorMessage(transportError); + return false; + } + if (getSelectedBranches().isEmpty()) { setErrorMessage(UIText.SourceBranchPage_errorBranchRequired); return false; @@ -187,8 +198,7 @@ class SourceBranchPage extends WizardPage { try { newURI = sourcePage.getURI(); } catch (URISyntaxException e) { - setErrorMessage(e.getReason()); - setPageComplete(false); + transportError(e.getReason()); return; } @@ -197,13 +207,13 @@ class SourceBranchPage extends WizardPage { label.getParent().layout(); if (newURI.equals(validated)) { - setErrorMessage(null); - setPageComplete(true); + setPageComplete(isPageComplete()); return; } setErrorMessage(null); setPageComplete(false); + transportError = null; head = null; available = new ArrayList(); availTable.removeAll(); @@ -266,12 +276,16 @@ class SourceBranchPage extends WizardPage { } }); } catch (InvocationTargetException e) { - setErrorMessage(e.getCause().getMessage()); - setPageComplete(false); + Throwable why = e.getCause(); + ErrorDialog.openError(getShell(), + UIText.SourceBranchPage_transportError, + UIText.SourceBranchPage_cannotListBranches, new Status( + IStatus.ERROR, Activator.getPluginId(), 0, why + .getMessage(), why.getCause())); + transportError(why.getMessage()); return; } catch (InterruptedException e) { - setErrorMessage("Connection attempt interrupted."); - setPageComplete(false); + transportError(UIText.SourceBranchPage_interrupted); return; } @@ -290,6 +304,12 @@ class SourceBranchPage extends WizardPage { setPageComplete(isPageComplete()); } + private void transportError(final String msg) { + transportError = msg; + setErrorMessage(msg); + setPageComplete(false); + } + private void notifyChanged() { for (final BranchChangeListener l : branchChangeListeners) l.branchesChanged(); diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties index 939a6ef4..cf5c93ee 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/uitext.properties @@ -51,6 +51,9 @@ SourceBranchPage_branchList=Branches of {0}: SourceBranchPage_selectAll=Select All SourceBranchPage_selectNone=Deselect All SourceBranchPage_errorBranchRequired=At least one branch must be selected. +SourceBranchPage_transportError=Transport Error +SourceBranchPage_cannotListBranches=Cannot list the available branches. +SourceBranchPage_interrupted=Connection attempt interrupted. CloneDestinationPage_title=Local Destination CloneDestinationPage_description=Configure the local storage location for {0}. -- 2.11.4.GIT