X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/ParserVisitor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/ParserVisitor.java
new file mode 100644
index 0000000..5dbc801
--- /dev/null
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/builder/ParserVisitor.java
@@ -0,0 +1,71 @@
+package net.sourceforge.phpeclipse.builder;
+
+import net.sourceforge.phpdt.internal.ui.util.PHPFileUtil;
+import net.sourceforge.phpeclipse.phpeditor.PHPParserAction;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.OperationCanceledException;
+
+/**
+ *
+ * @see org.eclipse.core.resources.IResourceDelta
+ * @see org.eclipse.core.resources.IResourceDeltaVisitor
+ */
+public class ParserVisitor implements IResourceDeltaVisitor {
+ final IProgressMonitor fMonitor;
+ public ParserVisitor(IProgressMonitor monitor) {
+ fMonitor = monitor;
+ }
+
+ protected void checkCancel() {
+ if (fMonitor.isCanceled()) {
+ throw new OperationCanceledException();
+ }
+ }
+ /**
+ * Visits the given resource delta.
+ *
+ * @return true
if the resource delta's children should
+ * be visited; false
if they should be skipped.
+ * @exception CoreException if the visit fails for some reason.
+ */
+ public boolean visit(IResourceDelta delta) throws CoreException {
+
+ IResource resource = delta.getResource();
+ int resourceType = resource.getType();
+ checkCancel();
+
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ if (resourceType == IResource.FILE) {
+ if ((resource.getFileExtension() != null)
+ && PHPFileUtil.isPHPFile((IFile) resource)) {
+ fMonitor.worked(1);
+ fMonitor.subTask("Parsing: " + resource.getFullPath());
+ PHPParserAction.parseFile((IFile) resource);
+ }
+ }
+ break;
+
+ case IResourceDelta.CHANGED :
+ if (resourceType == IResource.FILE) {
+ if ((resource.getFileExtension() != null)
+ && PHPFileUtil.isPHPFile((IFile) resource)) {
+ fMonitor.worked(1);
+ fMonitor.subTask("Parsing: " + resource.getFullPath());
+ PHPParserAction.parseFile((IFile) resource);
+ }
+ }
+ break;
+
+ case IResourceDelta.REMOVED :
+ }
+ return true; // carry on
+ }
+
+}
\ No newline at end of file