diff options
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java')
-rw-r--r-- | providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java index 9ee3d8e98..748f18a65 100644 --- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java +++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/AbstractFileSystemBrowser.java @@ -35,7 +35,7 @@ public abstract class AbstractFileSystemBrowser { protected IFileID fileID = null; protected IRemoteFileSystemListener listener = null; - protected Exception exception = null; + private Exception exception = null; protected IRemoteFile[] remoteFiles = null; protected Proxy proxy; @@ -58,10 +58,10 @@ public abstract class AbstractFileSystemBrowser { protected IStatus run(IProgressMonitor monitor) { try { if (monitor.isCanceled()) - throw new UserCancelledException(Messages.AbstractRetrieveFileTransfer_Exception_User_Cancelled); + throw newUserCancelledException(); runRequest(); } catch (Exception e) { - AbstractFileSystemBrowser.this.exception = e; + AbstractFileSystemBrowser.this.setException(e); } finally { listener.handleRemoteFileEvent(createRemoteFileEvent()); cleanUp(); @@ -77,6 +77,19 @@ public abstract class AbstractFileSystemBrowser { return request; } + protected void canceling() { + request.cancel(); + } + + } + + protected void cancel() { + synchronized (lock) { + if (job != null) { + job.cancel(); + } + } + } protected void cleanUp() { @@ -238,4 +251,28 @@ public abstract class AbstractFileSystemBrowser { setupProxy(proxy); } + protected synchronized void setException(Exception exception) { + this.exception = exception; + } + + protected synchronized Exception getException() { + return this.exception; + } + + protected synchronized boolean isCanceled() { + return exception instanceof UserCancelledException; + } + + protected synchronized void setCanceled(Exception e) { + if (e instanceof UserCancelledException) { + exception = e; + } else { + exception = newUserCancelledException(); + } + } + + protected UserCancelledException newUserCancelledException() { + return new UserCancelledException(Messages.AbstractRetrieveFileTransfer_Exception_User_Cancelled); + } + } |