/* * generated by Xtext */ package org.example.expressions.ui.contentassist; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.Assignment; import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; import org.example.expressions.expressions.AbstractElement; import org.example.expressions.expressions.Variable; import org.example.expressions.typing.ExpressionsModelUtil; /** * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant */ public class ExpressionsProposalProvider extends AbstractExpressionsProposalProvider { @Override public void completeAtomic_Variable(final EObject elem, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { if (!(elem instanceof AbstractElement)) { return; // no proposal } List<Variable> variables = ExpressionsModelUtil. variablesDefinedBefore((AbstractElement)elem); for (Variable variable : variables) { acceptor.accept(createCompletionProposal (variable.getName(), variable.getName() + " - Variable", null, context)); } // Better implementation reusing scoping // lookupCrossReference(((CrossReference) assignment.getTerminal()), context, acceptor, // new Predicate<IEObjectDescription>() { // // public boolean apply(IEObjectDescription input) { // if (model instanceof ExpressionsModel) { // return false; // } // List<Variable> variables = ExpressionsModelUtil.variablesDefinedBefore(model); // boolean found = false; // for (Iterator<Variable> iterator = variables.iterator(); iterator.hasNext();) { // Variable variable = iterator.next(); // if (input.getName().toString().equals(variable.getName())) { // found = true; // break; // } // } // return found; // } // // }); } }