Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java43
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);
+ }
+
}

Back to the top