/*******************************************************************************
* Copyright (c) 2005, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
*******************************************************************************/
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);
}
}