Package de.sebastianbenz.task.ui.contentassist

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

/*******************************************************************************
* 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
******************************************************************************/
/*
* generated by Xtext
*/
package de.sebastianbenz.task.ui.contentassist;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;

import com.google.inject.Inject;

import de.sebastianbenz.task.Tag;
import de.sebastianbenz.task.impl.CodeImplCustom;
import de.sebastianbenz.task.tagging.TagProvider;
import de.sebastianbenz.task.tagging.Tags;
import de.sebastianbenz.task.ui.highlighting.BrushRegistry;

/**
* see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
*/
public class TaskProposalProvider extends AbstractTaskProposalProvider {

  @Inject
  private TagProvider tagProvider;
 
  @Inject
  private BrushRegistry brushRegistry;
 
  protected void proposeTags(EObject model, ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {
    Tag done = Tags.from("done");
    createProposal(model, context, acceptor, done);
    for (Tag tag : tagProvider.in(model.eResource())) {
      createProposal(model, context, acceptor, tag);
    }
  }
 
  @Override
  public void completeNote_Intend(EObject model, Assignment assignment,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    proposeTags(model, context, acceptor);
  }
 
  @Override
  public void completeTask_Intend(EObject model, Assignment assignment,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    proposeTags(model, context, acceptor);
  }
 
  @Override
  public void completeProject_Intend(EObject model, Assignment assignment,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    proposeTags(model, context, acceptor);
  }
 
  @Override
  public void completeNote_Text(EObject model, Assignment assignment,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    proposeTags(model, context, acceptor);
  }
 
  @Override
  public void complete_TASK_TEXT(EObject model, RuleCall ruleCall,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    proposeTags(model, context, acceptor);
  }
 
  @Override
  public void completeProject_Text(EObject model, Assignment assignment,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    proposeTags(model, context, acceptor);
  }
 
  @Override
  public void complete_Code(EObject model, RuleCall ruleCall,
      ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
    if(!context.getPrefix().trim().equals(CodeImplCustom.PREFIX)){
      return;
    }
    for (String key : brushRegistry.getLanguages()) {
      if(!key.equals(BrushRegistry.DEFAULT_CONFIGURATION)){
        acceptor.accept(createCompletionProposal(context.getPrefix() + key, new StyledString(key), null, 1000, context.getPrefix(), context));
      }
    }
  }
 
  protected boolean isValidProposal(String proposal, String prefix, ContentAssistContext context) {
    if (proposal == null)
      return false;
    if (!context.getMatcher().isCandidateMatchingPrefix(proposal, prefix))
      return false;
    return true;
  }

  protected void createProposal(EObject model, ContentAssistContext context,
      ICompletionProposalAcceptor acceptor, Tag tag) {
    String prefix = context.getPrefix();
    if(!prefix.equals("") && !prefix.contains("@" + tag.getName())){
      acceptor.accept(
          createCompletionProposal(
              prefix + tag,
              getStyledDisplayString(model, tag.getName(), tag.getName()),
              getLabelProvider().getImage(tag),
              0,
              "",
              context));
    }
  }
 
}
TOP

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

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.