X-Git-Url: http://secure.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..64e55bf 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 @@ -15,18 +15,32 @@ 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; +// net.sourceforge.phpdt.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 @@ -34,7 +48,7 @@ public class ReconcileWorkingCopyOperation extends JavaModelOperation { // protected void executeOperation() throws JavaModelException { // if (fMonitor != null){ // if (fMonitor.isCanceled()) return; -// fMonitor.beginTask(Util.bind("element.reconciling"), 10); //$NON-NLS-1$ +// fMonitor.beginTask(ProjectPrefUtil.bind("element.reconciling"), 10); //$NON-NLS-1$ // } // // WorkingCopy workingCopy = getWorkingCopy(); @@ -78,12 +92,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 +112,32 @@ 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 +147,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 +162,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; } - }