package de.unidue.ecg.common.ui.contentassist; import com.google.common.base.Objects; import java.util.Arrays; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.jface.text.templates.TemplateProposal; import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal; import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalComparator; import org.eclipse.xtext.ui.editor.quickfix.QuickAssistCompletionProposal; @SuppressWarnings("all") public class TemplatePreferringCompletionProposalProvider implements ICompletionProposalComparator { private final static Integer PREMIUM_RELEVANCE = ((Integer) Integer.valueOf(2)); private final static Integer HIGH_RELEVANCE = ((Integer) Integer.valueOf(1)); private final static Integer MEDIUM_RELEVANCE = ((Integer) Integer.valueOf(0)); private final static int LOW_RELEVANCE = (-(((Integer) Integer.valueOf(1))).intValue()); public int compare(final ICompletionProposal o1, final ICompletionProposal o2) { Integer _relevance = this.getRelevance(o1); Integer relevance1 = ((Integer) _relevance); Integer _relevance_1 = this.getRelevance(o2); Integer relevance2 = ((Integer) _relevance_1); boolean _and = false; boolean _notEquals = (!Objects.equal(relevance1, null)); if (!_notEquals) { _and = false; } else { boolean _notEquals_1 = (!Objects.equal(relevance2, null)); _and = (_notEquals && _notEquals_1); } if (_and) { final int res = relevance2.compareTo(relevance1); if ((res != 0)) { return res; } } String _displayString = o1.getDisplayString(); String _displayString_1 = o2.getDisplayString(); return _displayString.compareTo(_displayString_1); } protected Integer _getRelevance(final TemplateProposal proposal) { Integer _xifexpression = null; String _displayString = proposal.getDisplayString(); boolean _startsWith = _displayString.startsWith("template: "); if (_startsWith) { _xifexpression = TemplatePreferringCompletionProposalProvider.PREMIUM_RELEVANCE; } else { _xifexpression = TemplatePreferringCompletionProposalProvider.HIGH_RELEVANCE; } return _xifexpression; } protected Integer _getRelevance(final ConfigurableCompletionProposal proposal) { return TemplatePreferringCompletionProposalProvider.MEDIUM_RELEVANCE; } protected Integer _getRelevance(final QuickAssistCompletionProposal proposal) { return TemplatePreferringCompletionProposalProvider.LOW_RELEVANCE; } protected Integer _getRelevance(final Object o) { return null; } public Integer getRelevance(final Object proposal) { if (proposal instanceof TemplateProposal) { return _getRelevance((TemplateProposal)proposal); } else if (proposal instanceof ConfigurableCompletionProposal) { return _getRelevance((ConfigurableCompletionProposal)proposal); } else if (proposal instanceof QuickAssistCompletionProposal) { return _getRelevance((QuickAssistCompletionProposal)proposal); } else if (proposal != null) { return _getRelevance(proposal); } else { throw new IllegalArgumentException("Unhandled parameter types: " + Arrays.<Object>asList(proposal).toString()); } } }