/******************************************************************************* * 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.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.Assignment; import org.eclipse.xtext.RuleCall; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.resource.IResourceDescriptions; 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.TaskPackage; /** * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant */ public class QueryProposalProvider extends AbstractQueryProposalProvider { @Inject private IResourceDescriptions resourceDescriptions; @Override public void complete_Phrase(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { acceptor.accept(createCompletionProposal("\"phrase\"", context)); } @Override public void completeTagReference_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeAll(TaskPackage.Literals.TAG, context, acceptor); } private void completeAll(EClass type, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeAll(type, "", context, acceptor); } private void completeAll(EClass type, String prefix, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { Iterable<IEObjectDescription> candidates = resourceDescriptions.getExportedObjectsByType(type); for (IEObjectDescription candidate : candidates) { acceptor.accept(createCompletionProposal(prefix + getName(candidate), context)); } } protected String getName(IEObjectDescription candidate) { String result = candidate.getName().toString(); if(result.contains(" ")){ result = "\"" + result + "\""; } return result; } @Override public void completeProjectReference_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeAll(TaskPackage.Literals.PROJECT, context, acceptor); } @Override public void complete_TagReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeAll(TaskPackage.Literals.TAG, "@", context, acceptor); } @Override public void complete_STRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { } }