package org.xtest.ui.templates;
import org.eclipse.jface.text.templates.ContextTypeRegistry;
import org.eclipse.jface.text.templates.Template;
import org.eclipse.jface.text.templates.TemplateContext;
import org.eclipse.jface.text.templates.TemplateProposal;
import org.eclipse.jface.text.templates.persistence.TemplateStore;
import org.eclipse.swt.graphics.Image;
import org.eclipse.xtext.diagnostics.Severity;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ITemplateAcceptor;
import org.eclipse.xtext.ui.editor.templates.ContextTypeIdHelper;
import org.eclipse.xtext.ui.editor.templates.DefaultTemplateProposalProvider;
import org.xtest.ui.internal.XtestPluginImages;
import com.google.inject.Inject;
/**
* Hardcoded template proposals for xtest
*
* @author Michael Barry
*/
public class XtestTemplateProposalProvider extends DefaultTemplateProposalProvider {
@Inject
private XtestPluginImages images;
/**
* Create a new hardcoded
*
* @param templateStore
* @param registry
* @param helper
*/
@Inject
public XtestTemplateProposalProvider(TemplateStore templateStore, ContextTypeRegistry registry,
ContextTypeIdHelper helper) {
super(templateStore, registry, helper);
}
@Override
protected void createTemplates(TemplateContext templateContext, ContentAssistContext context,
ITemplateAcceptor acceptor) {
super.createTemplates(templateContext, context, acceptor);
addProposal("xtest", "New Test", "Add a new test", images.getTestImage(Severity.INFO),
templateContext, context, acceptor);
addProposal("xsuite", "New Test Suite", "Add a new test suite",
images.getSuiteImage(Severity.INFO), templateContext, context, acceptor);
}
private void addProposal(String name, String title, String description, Image image,
TemplateContext templateContext, ContentAssistContext context,
ITemplateAcceptor acceptor) {
if (name.startsWith(context.getPrefix()) && !context.getPrefix().trim().isEmpty()) {
Template template = new Template(title, description, "", name
+ " ${name} {\n\t${cursor}\n}", true);
if (!acceptor.canAcceptMoreTemplates()) {
return;
}
TemplateProposal doCreateProposal = doCreateProposal(template, templateContext,
context, image, getRelevance(template));
acceptor.accept(doCreateProposal);
}
}
}