[381859] Don't build if delta is not about content

Change-Id: I7c1513a0cf318ffa2a46d0b247461fb52abcbead
diff --git a/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/AcceleoBuilder.java b/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/AcceleoBuilder.java
index fd6e460..2eb12ca 100644
--- a/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/AcceleoBuilder.java
+++ b/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/AcceleoBuilder.java
@@ -19,6 +19,7 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -319,8 +320,9 @@
 		List<IFile> deltaMembers = this.deltaMembers(getDelta(project), monitor);
 		org.eclipse.acceleo.internal.parser.compiler.AcceleoParser acceleoParser = new org.eclipse.acceleo.internal.parser.compiler.AcceleoParser(
 				acceleoProject, useBinaryResources, usePlatformResourcePath);
-		for (IFile iFile : deltaMembers) {
-			File fileToBuild = iFile.getLocation().toFile();
+		Iterator<IFile> it = deltaMembers.iterator();
+		while (it.hasNext() && !monitor.isCanceled()) {
+			File fileToBuild = it.next().getLocation().toFile();
 			Set<File> builtFiles = acceleoParser.buildFile(fileToBuild, BasicMonitor.toMonitor(monitor));
 			for (File builtFile : builtFiles) {
 				IFile workspaceFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(
@@ -814,7 +816,7 @@
 						&& IAcceleoConstants.MTL_FILE_EXTENSION.equals(resource.getFileExtension())) {
 					removeOutputFile((IFile)resource, monitor);
 				}
-				if (delta.getKind() != IResourceDelta.REMOVED
+				if (contentChanged(delta)
 						&& (IAcceleoConstants.MTL_FILE_EXTENSION.equals(resource.getFileExtension()) || "MANIFEST.MF" //$NON-NLS-1$
 						.equals(resource.getName())) || "plugin.xml".equals(resource.getName())) { //$NON-NLS-1$
 					deltaFilesOutput.add((IFile)resource);
@@ -840,6 +842,21 @@
 	}
 
 	/**
+	 * return true if the delta indicates a change of file content.
+	 * 
+	 * @param delta
+	 *            a resource delta.
+	 * @return true if the delta indicates a change of file content.
+	 */
+	private boolean contentChanged(IResourceDelta delta) {
+		if (delta.getKind() != IResourceDelta.REMOVED) {
+			return (delta.getFlags() & IResourceDelta.CONTENT) != 0
+					|| (delta.getFlags() & IResourceDelta.REPLACED) != 0;
+		}
+		return false;
+	}
+
+	/**
 	 * Computes a list of all the removed files.
 	 * 
 	 * @param deltaFilesOutput