/** * Copyright (c) 2015, 2020 itemis AG (http://www.itemis.eu) and others. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * SPDX-License-Identifier: EPL-2.0 */ package org.eclipse.xtext.xbase.ide.contentassist; import org.eclipse.xtext.common.types.JvmExecutable; import org.eclipse.xtext.common.types.JvmField; import org.eclipse.xtext.common.types.JvmIdentifiableElement; import org.eclipse.xtext.common.types.descriptions.ITypeDescriptor; import org.eclipse.xtext.ide.editor.contentassist.ContentAssistEntry; import org.eclipse.xtext.ide.editor.contentassist.IdeContentProposalPriorities; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.xbase.scoping.batch.IIdentifiableElementDescription; import org.eclipse.xtext.xbase.scoping.batch.SimpleIdentifiableElementDescription; import org.eclipse.xtext.xbase.scoping.batch.StaticFeatureDescriptionWithTypeLiteralReceiver; public class XbaseIdeContentProposalPriorities extends IdeContentProposalPriorities { @Override public int getCrossRefPriority(IEObjectDescription objectDesc, ContentAssistEntry entry) { if (entry != null) { if (objectDesc instanceof SimpleIdentifiableElementDescription) { if (!"this".equals(entry.getProposal()) && !"super".equals(entry.getProposal())) { return adjustPriority(entry, getCrossRefPriority() + 70); } } else if (objectDesc instanceof StaticFeatureDescriptionWithTypeLiteralReceiver) { return adjustPriority(entry, getCrossRefPriority() + 60); } else if (objectDesc instanceof IIdentifiableElementDescription) { JvmIdentifiableElement element = ((IIdentifiableElementDescription) objectDesc).getElementOrProxy(); if (element instanceof JvmField) { return adjustPriority(entry, getCrossRefPriority() + 50); } else if (element instanceof JvmExecutable) { return adjustPriority(entry, getCrossRefPriority() + 20); } } } return super.getCrossRefPriority(objectDesc, entry); } public int getTypeRefPriority(ITypeDescriptor typeDesc, ContentAssistEntry entry) { return adjustPriority(entry, getCrossRefPriority()); } }