/******************************************************************************* * 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); } }