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 9df9bea..be6bb19 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,72 +15,147 @@ 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 */ +// protected void executeOperation() throws JavaModelException { +// if (fMonitor != null){ +// if (fMonitor.isCanceled()) return; +// fMonitor.beginTask(ProjectPrefUtil.bind("element.reconciling"), 10); //$NON-NLS-1$ +// } +// +// WorkingCopy workingCopy = getWorkingCopy(); +// boolean wasConsistent = workingCopy.isConsistent(); +// JavaElementDeltaBuilder deltaBuilder = null; +// +// try { +// // create the delta builder (this remembers the current content of the cu) +// if (!wasConsistent){ +// deltaBuilder = new JavaElementDeltaBuilder(workingCopy); +// +// // update the element infos with the content of the working copy +// workingCopy.makeConsistent(fMonitor); +// deltaBuilder.buildDeltas(); +// +// } +// +// if (fMonitor != null) fMonitor.worked(2); +// +// // force problem detection? - if structure was consistent +// if (forceProblemDetection && wasConsistent){ +// if (fMonitor != null && fMonitor.isCanceled()) return; +// +// IProblemRequestor problemRequestor = workingCopy.problemRequestor; +// if (problemRequestor != null && problemRequestor.isActive()){ +// problemRequestor.beginReporting(); +// CompilationUnitProblemFinder.process(workingCopy, problemRequestor, fMonitor); +// problemRequestor.endReporting(); +// } +// } +// +// // register the deltas +// if (deltaBuilder != null){ +// if ((deltaBuilder.delta != null) && (deltaBuilder.delta.getAffectedChildren().length > 0)) { +// addReconcileDelta(workingCopy, deltaBuilder.delta); +// } +// } +// } finally { +// if (fMonitor != null) fMonitor.done(); +// } +// } protected void executeOperation() throws JavaModelException { - if (fMonitor != null){ - if (fMonitor.isCanceled()) return; - fMonitor.beginTask(Util.bind("element.reconciling"), 10); //$NON-NLS-1$ + // TODO jsurfer optimize for PHP + if (progressMonitor != null){ + if (progressMonitor.isCanceled()) return; + progressMonitor.beginTask(Util.bind("element.reconciling"), 10); //$NON-NLS-1$ } - WorkingCopy workingCopy = getWorkingCopy(); - boolean wasConsistent = workingCopy.isConsistent(); - JavaElementDeltaBuilder deltaBuilder = null; + CompilationUnit workingCopy = getWorkingCopy(); +// boolean wasConsistent = workingCopy.isConsistent(); +// JavaElementDeltaBuilder deltaBuilder = null; try { // create the delta builder (this remembers the current content of the cu) - if (!wasConsistent){ - deltaBuilder = new JavaElementDeltaBuilder(workingCopy); - - // update the element infos with the content of the working copy - workingCopy.makeConsistent(fMonitor); - deltaBuilder.buildDeltas(); - - } +// if (!wasConsistent){ +// deltaBuilder = new JavaElementDeltaBuilder(workingCopy); +// +// // update the element infos with the content of the working copy +// workingCopy.makeConsistent(fMonitor); +// deltaBuilder.buildDeltas(); +// +// } - if (fMonitor != null) fMonitor.worked(2); + if (progressMonitor != null) progressMonitor.worked(2); // force problem detection? - if structure was consistent - if (forceProblemDetection && wasConsistent){ - if (fMonitor != null && fMonitor.isCanceled()) return; - - IProblemRequestor problemRequestor = workingCopy.problemRequestor; + if (forceProblemDetection){ + 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 - if (deltaBuilder != null){ - if ((deltaBuilder.delta != null) && (deltaBuilder.delta.getAffectedChildren().length > 0)) { - addReconcileDelta(workingCopy, deltaBuilder.delta); - } - } +// if (deltaBuilder != null){ +// if ((deltaBuilder.delta != null) && (deltaBuilder.delta.getAffectedChildren().length > 0)) { +// addReconcileDelta(workingCopy, deltaBuilder.delta); +// } +// } } 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 @@ -88,17 +163,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; } - }