Show line numbers (other than 1) in problems view for errors and warnings
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / builder / IncrementalImageBuilder.java
index dc13acf..61db63d 100644 (file)
@@ -13,6 +13,7 @@ import java.util.ArrayList;
 
 import net.sourceforge.phpdt.core.compiler.IProblem;
 import net.sourceforge.phpdt.internal.compiler.CompilationResult;
+import net.sourceforge.phpdt.internal.compiler.problem.ProblemHandler;
 import net.sourceforge.phpdt.internal.core.util.SimpleLookupTable;
 import net.sourceforge.phpdt.internal.core.util.Util;
 
@@ -187,7 +188,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
 //                  sourceFileFullPath)) {
 //                md = sourceLocations[j];
 //                if (md.exclusionPatterns == null
-//                    || !Util.isExcluded(file, md.exclusionPatterns))
+//                    || !ProjectPrefUtil.isExcluded(file, md.exclusionPatterns))
 //                  break;
 //              }
 //            }
@@ -322,7 +323,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
         }
         return;
       case IResource.FILE :
-    //                 if (Util.isClassFileName(resource.getName())) {
+    //                 if (ProjectPrefUtil.isClassFileName(resource.getName())) {
     //                         IPath typePath =
     // resource.getFullPath().removeFirstSegments(segmentCount).removeFileExtension();
     //                         switch (binaryDelta.getKind()) {
@@ -414,7 +415,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
                     removedPackagePath).exists()) {
                   // only a package fragment was removed, same as removing
                   // multiple source files
-                  createFolder(removedPackagePath, md.binaryFolder); // ensure
+//                  createFolder(removedPackagePath, md.binaryFolder); // ensure
                   // package
                   // exists
                   // in the
@@ -425,13 +426,13 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
                   for (int j = 0, m = removedChildren.length; j < m; j++)
                     findSourceFiles(removedChildren[j], md, segmentCount);
                   return;
-                }
+                } 
               }
             }
-            IFolder removedPackageFolder = md.binaryFolder
-                .getFolder(removedPackagePath);
-            if (removedPackageFolder.exists())
-              removedPackageFolder.delete(IResource.FORCE, null);
+//            IFolder removedPackageFolder = md.binaryFolder
+//                .getFolder(removedPackagePath);
+//            if (removedPackageFolder.exists())
+//              removedPackageFolder.delete(IResource.FORCE, null);
             // add dependents even when the package thinks it does not exist to
             // be on the safe side
             if (PHPBuilder.DEBUG)
@@ -511,7 +512,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
               sourceFiles.add(new SourceFile((IFile) resource, md, encoding));
           }
           return;
-          //                   } else if (Util.isClassFileName(resourceName)) {
+          //                   } else if (ProjectPrefUtil.isClassFileName(resourceName)) {
           //                           return; // skip class files
         } else if (md.hasIndependentOutputFolder) {
           if (javaBuilder.filterExtraResource(resource))
@@ -556,7 +557,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
 //              }
               if (PHPBuilder.DEBUG)
                 System.out.println("Copying changed file " + resourcePath); //$NON-NLS-1$
-              createFolder(resourcePath.removeLastSegments(1), md.binaryFolder); // ensure
+            //  createFolder(resourcePath.removeLastSegments(1), md.binaryFolder); // ensure
               // package
               // exists
               // in
@@ -655,6 +656,16 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
     IProblem[] problems = result.getProblems();
     if (problems == null && markers.length == 0)
       return;
+    
+//  axelcl start insert - calculate line numbers
+    for (int i = 0; i < problems.length; i++) {
+      if (problems[i].getSourceLineNumber() == 1) {
+        problems[i].setSourceLineNumber(ProblemHandler
+            .searchLineNumber(result.lineSeparatorPositions, problems[i].getSourceStart()));
+      }
+    }
+    //axelcl end insert
+    
     notifier.updateProblemCounts(markers, problems);
     PHPBuilder.removeProblemsFor(sourceFile.resource);
     storeProblemsFor(sourceFile, problems);
@@ -697,7 +708,7 @@ public class IncrementalImageBuilder extends AbstractImageBuilder {
   //protected boolean writeClassFileCheck(IFile file, String fileName, byte[]
   // newBytes) throws CoreException {
   //   try {
-  //           byte[] oldBytes = Util.getResourceContentsAsByteArray(file);
+  //           byte[] oldBytes = ProjectPrefUtil.getResourceContentsAsByteArray(file);
   //           if (this.compileLoop > 1) { // only optimize files which were recompiled
   // during the dependent pass, see 33990
   //                   notEqual : if (newBytes.length == oldBytes.length) {