blob: ab3cdac6ea86b866e4bb4f13faeef18b011556e3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2007 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.dltk.javascript.internal.ui.templates;
import org.eclipse.dltk.ui.templates.ScriptTemplateAccess;
import org.eclipse.dltk.ui.templates.ScriptTemplateCompletionProcessor;
import org.eclipse.dltk.ui.text.completion.ScriptContentAssistInvocationContext;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.templates.Template;
import org.eclipse.jface.text.templates.TemplateContext;
/**
* JavaScript template completion processor
*/
public class JSDocTemplateCompletionProcessor extends
ScriptTemplateCompletionProcessor {
public JSDocTemplateCompletionProcessor(
ScriptContentAssistInvocationContext context) {
super(context);
}
/*
* @see ScriptTemplateCompletionProcessor#getContextTypeId()
*/
@Override
protected String getContextTypeId() {
return JSDocTemplateContextType.CONTEXT_TYPE_ID;
}
/*
* @see ScriptTemplateCompletionProcessor#getTemplateAccess()
*/
@Override
protected ScriptTemplateAccess getTemplateAccess() {
return JavaScriptTemplateAccess.getInstance();
}
protected String extractPrefix(ITextViewer viewer, int offset) {
int i = offset;
IDocument document = viewer.getDocument();
if (i > document.getLength())
return ""; //$NON-NLS-1$
try {
while (i > 0) {
char ch = document.getChar(i - 1);
if (!Character.isJavaIdentifierPart(ch) && ch != '@')
break;
i--;
}
return document.get(i, offset - i);
} catch (BadLocationException e) {
return ""; //$NON-NLS-1$
}
}
@Override
protected ICompletionProposal createProposal(Template template,
TemplateContext context, IRegion region, int relevance) {
return new JSDocTemplateProposal(template, context, region,
getImage(template), relevance);
}
}