Bug 84307 - Need more control on build file error checking
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntModel.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntModel.java
index fd2d496..3f477ca 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntModel.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntModel.java
@@ -120,6 +120,9 @@
     private Map fTaskNameToDefiningNode;
     private Map fCurrentNodeIdentifiers;
 	
+	private boolean fReportingProblemsCurrent= false;
+	private boolean fDoNotReportProblems= false;
+	
 	public AntModel(IDocument document, IProblemRequestor problemRequestor, LocationProvider locationProvider) {
 		init(document, problemRequestor, locationProvider);
 		
@@ -153,6 +156,7 @@
 				} else if (property.equals(AntEditorPreferenceConstants.CODEASSIST_USER_DEFINED_TASKS)) {
 					reconcileForPropertyChange(false);
 				} else if (property.equals(AntEditorPreferenceConstants.BUILDFILE_NAMES_TO_IGNORE) || property.equals(AntEditorPreferenceConstants.BUILDFILE_IGNORE_ALL)) {
+					fReportingProblemsCurrent= false;
 					reconcileForPropertyChange(false);
 				}
 			}
@@ -520,6 +524,9 @@
 		}
 	}
 
+	/**
+	 * method assumes sendor has checked whether to report problems
+	 */
     private void checkMissingDependencies(AntElementNode node, AntElementNode originalNode) {
         String missing= ((AntTargetNode)node).checkDependencies();
         if (missing != null) {
@@ -535,26 +542,36 @@
     }
 
     private boolean doNotReportProblems() {
+		if (fReportingProblemsCurrent) {
+			return fDoNotReportProblems;
+		}
+		
+		fReportingProblemsCurrent= true;
+		fDoNotReportProblems= false;
+		
 		if (AntUIPlugin.getDefault().getCombinedPreferenceStore().getBoolean(AntEditorPreferenceConstants.BUILDFILE_IGNORE_ALL)) {
-			return true;
+			fDoNotReportProblems= true;
+			return fDoNotReportProblems;
 		}
 		String buildFileNames= AntUIPlugin.getDefault().getCombinedPreferenceStore().getString(AntEditorPreferenceConstants.BUILDFILE_NAMES_TO_IGNORE);
-		if (buildFileNames.length() == 0) {
-			//the user has not specified any names to not report problems for
-			return false;
-		}
-		String[] names= AntUtil.parseString(buildFileNames, ","); //$NON-NLS-1$
-		for (int i = 0; i < names.length; i++) {
-			String string = names[i];
-			File editedFile= getEditedFile();
-			if (string.equals(editedFile.getName())) {
-				return true;
+		if (buildFileNames.length() > 0) {
+			String[] names= AntUtil.parseString(buildFileNames, ","); //$NON-NLS-1$
+			String editedFileName= getEditedFile().getName();
+			for (int i = 0; i < names.length; i++) {
+				String string = names[i];
+				if	(string.trim().equals(editedFileName)) {
+					fDoNotReportProblems= true;
+					return fDoNotReportProblems;
+				}
 			}
 		}
 		
-		return false;
+		return fDoNotReportProblems;
 	}
 
+	/**
+	 * method assumes sendor has checked whether to report problems
+	 */
 	private void checkCircularDependencies(AntElementNode node) {
         Target target= ((AntTargetNode)node).getTarget();
         String name= target.getName();
@@ -645,6 +662,9 @@
     }
 
 	private void markHierarchy(AntElementNode openElement, int severity, String message) {
+		if (doNotReportProblems()) {
+			return;
+		}
 		while (openElement != null) {
 			openElement.setProblemSeverity(severity);
 			openElement.setProblemMessage(message);
@@ -1102,9 +1122,6 @@
 			return;
 		}
 		computeEndLocationForErrorNode(node, start, count);
-		if (doNotReportProblems()) {
-			return;
-		}
 		notifyProblemRequestor(exception, start, count, AntModelProblem.SEVERITY_ERROR);
 		markHierarchy(fLastNode, AntModelProblem.SEVERITY_ERROR, exception.getMessage());
 	} 
@@ -1121,9 +1138,6 @@
 			}
 		}
 		computeEndLocationForErrorNode(node, lineNumber, column);
-		if (doNotReportProblems()) {
-			return;
-		}
 		notifyProblemRequestor(exception, node, AntModelProblem.SEVERITY_ERROR);
 		markHierarchy(node, AntModelProblem.SEVERITY_ERROR, exception.getMessage());
 	}
@@ -1554,9 +1568,6 @@
     	fIsDirty= true;
     	reconcile();
     	AntModelCore.getDefault().notifyAntModelListeners(new AntModelChangeEvent(this, true));
-		if (doNotReportProblems()) {
-			return;
-		}
     	fMarkerUpdater.updateMarkers();
     }