/**
* generated by Xtext
*/
package org.example.smalljava.ui.contentassist;
import com.google.common.base.Predicate;
import com.google.inject.Inject;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.xtext.AbstractElement;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
import org.eclipse.xtext.xbase.lib.Extension;
import org.example.smalljava.smallJava.SJClass;
import org.example.smalljava.smallJava.SJMember;
import org.example.smalljava.ui.contentassist.AbstractSmallJavaProposalProvider;
import org.example.smalljava.util.SmallJavaModelUtil;
import org.example.smalljava.validation.SmallJavaAccessibility;
/**
* see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
*/
@SuppressWarnings("all")
public class SmallJavaProposalProvider extends AbstractSmallJavaProposalProvider {
@Inject
@Extension
private SmallJavaAccessibility _smallJavaAccessibility;
@Override
public void completeSJSelectionExpression_Member(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
AbstractElement _terminal = assignment.getTerminal();
final Predicate<IEObjectDescription> _function = new Predicate<IEObjectDescription>() {
@Override
public boolean apply(final IEObjectDescription description) {
EObject _eObjectOrProxy = description.getEObjectOrProxy();
return SmallJavaProposalProvider.this._smallJavaAccessibility.isAccessibleFrom(((SJMember) _eObjectOrProxy), model);
}
};
this.lookupCrossReference(((CrossReference) _terminal), context, acceptor, _function);
}
@Override
public StyledString getStyledDisplayString(final EObject element, final String qualifiedNameAsString, final String shortName) {
StyledString _xifexpression = null;
if ((element instanceof SJMember)) {
String _memberAsStringWithType = SmallJavaModelUtil.memberAsStringWithType(((SJMember)element));
StyledString _styledString = new StyledString(_memberAsStringWithType);
SJClass _containingClass = SmallJavaModelUtil.containingClass(element);
String _name = _containingClass.getName();
String _plus = (" - " + _name);
StyledString _styledString_1 = new StyledString(_plus,
StyledString.QUALIFIER_STYLER);
_xifexpression = _styledString.append(_styledString_1);
} else {
_xifexpression = super.getStyledDisplayString(element, qualifiedNameAsString, shortName);
}
return _xifexpression;
}
}