X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/ReconcileWorkingCopyOperation.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/ReconcileWorkingCopyOperation.java index b796ae9..cf966f9 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/ReconcileWorkingCopyOperation.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/ReconcileWorkingCopyOperation.java @@ -10,23 +10,39 @@ *******************************************************************************/ package net.sourceforge.phpdt.internal.core; +import java.util.Map; + import net.sourceforge.phpdt.core.IJavaElement; import net.sourceforge.phpdt.core.IJavaModelStatus; import net.sourceforge.phpdt.core.IJavaModelStatusConstants; import net.sourceforge.phpdt.core.IProblemRequestor; import net.sourceforge.phpdt.core.JavaModelException; +import net.sourceforge.phpdt.core.WorkingCopyOwner; +import net.sourceforge.phpdt.internal.core.util.Util; +import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration; /** * Reconcile a working copy and signal the changes through a delta. */ public class ReconcileWorkingCopyOperation extends JavaModelOperation { + boolean createAST; + int astLevel; boolean forceProblemDetection; + WorkingCopyOwner workingCopyOwner; +// org.eclipse.jdt.core.dom.CompilationUnit ast; public ReconcileWorkingCopyOperation(IJavaElement workingCopy, boolean forceProblemDetection) { super(new IJavaElement[] {workingCopy}); this.forceProblemDetection = forceProblemDetection; } + public ReconcileWorkingCopyOperation(IJavaElement workingCopy, boolean creatAST, int astLevel, boolean forceProblemDetection, WorkingCopyOwner workingCopyOwner) { + super(new IJavaElement[] {workingCopy}); + this.createAST = creatAST; + this.astLevel = astLevel; + this.forceProblemDetection = forceProblemDetection; + this.workingCopyOwner = workingCopyOwner; + } /** * @exception JavaModelException if setting the source * of the original compilation unit fails @@ -78,12 +94,12 @@ public class ReconcileWorkingCopyOperation extends JavaModelOperation { // } protected void executeOperation() throws JavaModelException { // TODO jsurfer optimize for PHP - if (fMonitor != null){ - if (fMonitor.isCanceled()) return; - fMonitor.beginTask(Util.bind("element.reconciling"), 10); //$NON-NLS-1$ + if (progressMonitor != null){ + if (progressMonitor.isCanceled()) return; + progressMonitor.beginTask(Util.bind("element.reconciling"), 10); //$NON-NLS-1$ } - WorkingCopy workingCopy = getWorkingCopy(); + CompilationUnit workingCopy = getWorkingCopy(); // boolean wasConsistent = workingCopy.isConsistent(); // JavaElementDeltaBuilder deltaBuilder = null; @@ -98,18 +114,33 @@ public class ReconcileWorkingCopyOperation extends JavaModelOperation { // // } - if (fMonitor != null) fMonitor.worked(2); + if (progressMonitor != null) progressMonitor.worked(2); // force problem detection? - if structure was consistent if (forceProblemDetection){ - if (fMonitor != null && fMonitor.isCanceled()) return; - - IProblemRequestor problemRequestor = workingCopy.problemRequestor; + if (progressMonitor != null && progressMonitor.isCanceled()) return; + CompilationUnitDeclaration unit = null; + try { + IProblemRequestor problemRequestor = workingCopy.getPerWorkingCopyInfo(); if (problemRequestor != null && problemRequestor.isActive()){ problemRequestor.beginReporting(); - CompilationUnitProblemFinder.process(workingCopy, problemRequestor, fMonitor); + char[] contents = workingCopy.getContents(); + unit = CompilationUnitProblemFinder.process(workingCopy, contents, this.workingCopyOwner, problemRequestor, false/*don't cleanup cu*/, this.progressMonitor); + + CompilationUnitProblemFinder.process(workingCopy, problemRequestor, progressMonitor); problemRequestor.endReporting(); } + if (progressMonitor != null) progressMonitor.worked(1); + if (this.createAST && unit != null) { +// Map options = workingCopy.getJavaProject().getOptions(true); +// this.ast = AST.convertCompilationUnit(this.astLevel, unit, contents, options, this.progressMonitor); + if (progressMonitor != null) progressMonitor.worked(1); + } + } finally { + if (unit != null) { + unit.cleanUp(); + } + } } // register the deltas @@ -119,14 +150,14 @@ public class ReconcileWorkingCopyOperation extends JavaModelOperation { // } // } } finally { - if (fMonitor != null) fMonitor.done(); + if (progressMonitor != null) progressMonitor.done(); } } /** * Returns the working copy this operation is working on. */ - protected WorkingCopy getWorkingCopy() { - return (WorkingCopy)getElementToProcess(); + protected CompilationUnit getWorkingCopy() { + return (CompilationUnit)getElementToProcess(); } /** * @see JavaModelOperation#isReadOnly @@ -134,17 +165,17 @@ public class ReconcileWorkingCopyOperation extends JavaModelOperation { public boolean isReadOnly() { return true; } + protected IJavaModelStatus verify() { IJavaModelStatus status = super.verify(); if (!status.isOK()) { return status; } - WorkingCopy workingCopy = getWorkingCopy(); - if (workingCopy.useCount == 0) { + CompilationUnit workingCopy = getWorkingCopy(); + if (!workingCopy.isWorkingCopy()) { return new JavaModelStatus(IJavaModelStatusConstants.ELEMENT_DOES_NOT_EXIST, workingCopy); //was destroyed } return status; } - }