Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.core.filebuffers')
-rw-r--r--org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java b/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java
index e169691f385..b248aa72b78 100644
--- a/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java
+++ b/org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java
@@ -52,17 +52,25 @@ public abstract class ResourceFileBuffer extends AbstractFileBuffer {
*/
protected void execute() throws Exception {
}
+
+ /**
+ * Does everything necessary prior to execution.
+ */
+ public void preRun() {
+ fManager.fireStateChanging(ResourceFileBuffer.this);
+ }
/*
* @see java.lang.Runnable#run()
*/
public void run() {
- if (isDisposed())
+ if (isDisposed()) {
+ fManager.fireStateChangeFailed(ResourceFileBuffer.this);
return;
-
+ }
+
try {
- fManager.fireStateChanging(ResourceFileBuffer.this);
execute();
} catch (Exception x) {
FileBuffersPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, FileBuffersPlugin.PLUGIN_ID, IStatus.OK, "Exception when synchronizing", x)); //$NON-NLS-1$
@@ -155,8 +163,10 @@ public abstract class ResourceFileBuffer extends AbstractFileBuffer {
break;
}
- if (fileChange != null)
+ if (fileChange != null) {
+ fileChange.preRun();
fManager.execute(fileChange, fSynchronizationContextCount > 0);
+ }
}
return true; // because we are sitting on files anyway

Back to the top