/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.completion;
import com.intellij.codeInsight.completion.InsertionContext;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.openapi.editor.Document;
import gw.plugin.ij.completion.proposals.ICompletionHasAdditionalSyntax;
import org.jetbrains.annotations.NotNull;
public class GosuAdditionalSyntaxLookupElement extends LookupElement {
private final ICompletionHasAdditionalSyntax _gosuCompletionProposal;
public GosuAdditionalSyntaxLookupElement(ICompletionHasAdditionalSyntax kwProposal) {
_gosuCompletionProposal = kwProposal;
}
@NotNull
@Override
public String getLookupString() {
return _gosuCompletionProposal.toString();
}
@Override
public void handleInsert(@NotNull InsertionContext context) {
final Document document = context.getDocument();
int parenStart = context.getStartOffset() + _gosuCompletionProposal.toString().length();
if (context.getCompletionChar() != ' ') {
document.insertString(parenStart, _gosuCompletionProposal.getTrailingText());
int caretPosition = parenStart + _gosuCompletionProposal.getTrailingText().length() + _gosuCompletionProposal.getCaretOffsetFromEnd();
context.getEditor().getCaretModel().moveToOffset(caretPosition);
}
}
}