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(Util.bind("element.reconciling"), 10); //$NON-NLS-1$
+// fMonitor.beginTask(ProjectPrefUtil.bind("element.reconciling"), 10); //$NON-NLS-1$
// }
//
// WorkingCopy workingCopy = getWorkingCopy();
// }
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;
//
// }
- 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
// }
// }
} 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
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;
}
-
}