package org.eclipse.dltk.javascript.internal.ui.quickfix;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.dltk.compiler.problem.ProblemCategoryManager;
import org.eclipse.dltk.javascript.core.JavaScriptNature;
import org.eclipse.dltk.javascript.core.JavaScriptProblems;
import org.eclipse.dltk.javascript.parser.jsdoc.JSDocTag;
import org.eclipse.dltk.ui.editor.IScriptAnnotation;
import org.eclipse.dltk.ui.text.IScriptCorrectionContext;
import org.eclipse.dltk.ui.text.IScriptCorrectionProcessor;
public class JSScriptCorrectionProcessor implements IScriptCorrectionProcessor {
public JSScriptCorrectionProcessor() {
}
public boolean canFix(IScriptAnnotation annotation) {
if (annotation.getId() == JavaScriptProblems.UNDECLARED_VARIABLE) {
return true;
} else {
return ProblemCategoryManager.getInstance().getID(
JavaScriptNature.NATURE_ID, JSDocTag.SUPPRESS_WARNINGS,
annotation.getId()) != null;
}
}
public boolean canFix(IMarker marker) {
return false;
}
public void computeQuickAssistProposals(IScriptAnnotation annotation,
IScriptCorrectionContext context) {
if (annotation.getId() == JavaScriptProblems.UNDECLARED_VARIABLE) {
context.addResolution(new CreateLocalVariableQuickFix(
(IFile) annotation.getSourceModule().getResource(), context
.getInvocationContext().getOffset()), annotation);
CreateTopLevelVariable resolution = new CreateTopLevelVariable(
(IFile) annotation.getSourceModule().getResource(), context
.getInvocationContext().getOffset());
if (resolution.isValid()) {
context.addResolution(resolution, annotation);
}
} else {
String[] id = ProblemCategoryManager.getInstance().getID(
JavaScriptNature.NATURE_ID, JSDocTag.SUPPRESS_WARNINGS,
annotation.getId());
for (int i = 0; i < id.length; i++) {
GenerateSuppressWarningsResolution resolution = new GenerateSuppressWarningsResolution(
(IFile) annotation.getSourceModule().getResource(),
context.getInvocationContext().getOffset(), id[i]);
if (resolution.isValid()) {
context.addResolution(resolution, annotation);
}
}
}
}
public void computeQuickAssistProposals(IMarker marker,
IScriptCorrectionContext context) {
}
}