Package de.sebastianbenz.task.ui.contentassist

Source Code of de.sebastianbenz.task.ui.contentassist.TaskTemplateProvider

/*******************************************************************************
* Copyright (c) 2011 Sebastian Benz.
* 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
*
* Contributors:
*     Sebastian Benz - initial API and implementation
******************************************************************************/
package de.sebastianbenz.task.ui.contentassist;

import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.Region;
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.TemplateContextType;
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.scoping.IScopeProvider;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.templates.ContextTypeIdHelper;
import org.eclipse.xtext.ui.editor.templates.DefaultTemplateProposalProvider;
import org.eclipse.xtext.ui.editor.templates.XtextTemplateContext;
import org.eclipse.xtext.ui.editor.templates.XtextTemplateProposal;

import com.google.inject.Inject;
import com.google.inject.Singleton;


@Singleton
public class TaskTemplateProvider extends DefaultTemplateProposalProvider {


  private IScopeProvider scopeProvider2;


  @Inject
  public TaskTemplateProvider(TemplateStore templateStore,
      ContextTypeRegistry registry, ContextTypeIdHelper helper) {
    super(templateStore, registry, helper);
  }
 
  @Override
  public void setScopeProvider(IScopeProvider scopeProvider) {
    scopeProvider2 = scopeProvider;
    super.setScopeProvider(scopeProvider);
  }
 
  protected boolean validate(Template template, ContentAssistContext context) {
    return context.getMatcher().isCandidateMatchingPrefix(template.getName(), context.getPrefix().trim());
  }
 
  protected TemplateProposal doCreateProposal(Template template, TemplateContext templateContext,
      ContentAssistContext context, Image image, int relevance) {
    org.eclipse.jface.text.Region replaceRegion = context.getReplaceRegion();
    IRegion region = new Region(replaceRegion.getOffset() + replaceRegion.getLength(), 0);
    return new XtextTemplateProposal(template, templateContext, region , image, relevance);
  }

 
  protected TemplateContext doCreateTemplateContext(TemplateContextType contextType, ContentAssistContext context) {
    int length = context.getReplaceRegion().getLength();
    int offset = context.getReplaceRegion().getOffset() + length;
    return new XtextTemplateContext(contextType, context.getDocument(),
        new Position(offset, 0),
        context, scopeProvider2);
  }
 
}
TOP

Related Classes of de.sebastianbenz.task.ui.contentassist.TaskTemplateProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.