package com.redhat.ceylon.eclipse.code.correct;
import java.util.Collection;
import org.antlr.runtime.CommonToken;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.Region;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.text.edits.ReplaceEdit;
import com.redhat.ceylon.compiler.typechecker.parser.CeylonLexer;
import com.redhat.ceylon.compiler.typechecker.tree.Node;
import com.redhat.ceylon.compiler.typechecker.tree.Tree;
@Deprecated
class ChangeDeclarationProposal extends CorrectionProposal {
ChangeDeclarationProposal(String kw, int offset,
TextFileChange change) {
super("Change declaration to '" + kw + "'", change,
new Region(offset, kw.length()));
}
static void addChangeDeclarationProposal(ProblemLocation problem, IFile file,
Collection<ICompletionProposal> proposals, Node node) {
Tree.Declaration decNode = (Tree.Declaration) node;
CommonToken token = (CommonToken) decNode.getMainToken();
if (token==null) return;
String keyword;
if (decNode instanceof Tree.AnyClass) {
keyword = "interface";
}
else if (decNode instanceof Tree.AnyMethod) {
if (token.getType()==CeylonLexer.VOID_MODIFIER) return;
keyword = "value";
}
else {
return;
}
TextFileChange change = new TextFileChange("Change Declaration", file);
change.setEdit(new ReplaceEdit(token.getStartIndex(),
token.getText().length(), keyword));
proposals.add(new ChangeDeclarationProposal(keyword,
token.getStartIndex(), change));
}
}