Java 类com.intellij.psi.util.ProximityLocation 实例源码
项目:intellij-ce-playground
文件:CreateFromUsageUtils.java
private static int compareMembers(PsiMember m1, PsiMember m2, PsiExpression context) {
ProgressManager.checkCanceled();
int result = JavaStatisticsManager.createInfo(null, m2).getUseCount() - JavaStatisticsManager.createInfo(null, m1).getUseCount();
if (result != 0) return result;
final PsiClass aClass = m1.getContainingClass();
final PsiClass bClass = m2.getContainingClass();
if (aClass != null && bClass != null) {
result = JavaStatisticsManager.createInfo(null, bClass).getUseCount() - JavaStatisticsManager.createInfo(null, aClass).getUseCount();
if (result != 0) return result;
}
WeighingComparable<PsiElement,ProximityLocation> proximity1 = PsiProximityComparator.getProximity(m1, context);
WeighingComparable<PsiElement,ProximityLocation> proximity2 = PsiProximityComparator.getProximity(m2, context);
if (proximity1 != null && proximity2 != null) {
result = proximity2.compareTo(proximity1);
if (result != 0) return result;
}
String name1 = PsiUtil.getMemberQualifiedName(m1);
String name2 = PsiUtil.getMemberQualifiedName(m2);
return Comparing.compare(name1, name2);
}
项目:intellij-ce-playground
文件:ReferenceListWeigher.java
@Nullable
protected Preference getPreferredCondition(@NotNull ProximityLocation location) {
PsiElement position = location.getPosition();
if (INSIDE_REFERENCE_LIST.accepts(position)) {
assert position != null;
PsiReferenceList list = (PsiReferenceList)position.getParent().getParent();
PsiReferenceList.Role role = list.getRole();
if (shouldContainInterfaces(list, role)) {
return Preference.Interfaces;
}
if (role == PsiReferenceList.Role.EXTENDS_LIST) {
return Preference.Classes;
}
if (role == PsiReferenceList.Role.THROWS_LIST) {
return Preference.Exceptions;
}
}
return null;
}
项目:intellij-ce-playground
文件:ReferenceListWeigher.java
@Override
public Integer weigh(@NotNull PsiElement element, @NotNull ProximityLocation location) {
if (element instanceof PsiClass) {
Preference condition = getPreferredCondition(location);
PsiClass aClass = (PsiClass)element;
if (condition == Preference.Interfaces) return aClass.isInterface() ? 1 : -1;
if (condition == Preference.Classes) {
if (aClass.isInterface()) return -1;
if (aClass.getName().endsWith("TestCase")) {
VirtualFile vFile = aClass.getContainingFile().getVirtualFile();
if (vFile != null && ProjectFileIndex.SERVICE.getInstance(location.getProject()).isInTestSourceContent(vFile)) {
return 2;
}
}
return 1;
}
if (condition == Preference.Exceptions) return InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_THROWABLE) ? 1 : -1;
}
return 0;
}
项目:intellij-ce-playground
文件:SamePsiMemberWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
PsiElement position = location.getPosition();
if (position == null){
return null;
}
if (!INSIDE_PSI_MEMBER.getValue(location)) {
return 0;
}
if (element.isPhysical()) {
position = PHYSICAL_POSITION.getValue(location);
}
final PsiMember member = PsiTreeUtil.getContextOfType(PsiTreeUtil.findCommonContext(position, element), PsiMember.class, false);
if (member instanceof PsiClass) return 1;
if (member != null) return 2;
return 0;
}
项目:intellij-ce-playground
文件:JavaInheritanceWeigher.java
@NotNull
@Override
public Set<String> fun(ProximityLocation location) {
final HashSet<String> result = new HashSet<String>();
PsiClass contextClass = PsiTreeUtil.getContextOfType(location.getPosition(), PsiClass.class, false);
Processor<PsiClass> processor = new Processor<PsiClass>() {
@Override
public boolean process(PsiClass psiClass) {
ContainerUtilRt.addIfNotNull(result, psiClass.getQualifiedName());
return true;
}
};
while (contextClass != null) {
InheritanceUtil.processSupers(contextClass, true, processor);
contextClass = contextClass.getContainingClass();
}
return result;
}
项目:intellij-ce-playground
文件:JavaInheritanceWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getPosition() == null || !(element instanceof PsiClass)) {
return null;
}
if (isTooGeneral((PsiClass)element)) return false;
Set<String> superClasses = PLACE_SUPER_CLASSES.getValue(location);
if (superClasses.isEmpty()) {
return false;
}
final PsiElement position = location.getPosition();
PsiClass placeClass = findPlaceClass(element, position);
if (placeClass == null) return false;
PsiClass elementClass = placeClass;
while (elementClass != null) {
if (superClasses.contains(elementClass.getQualifiedName())) {
return true;
}
elementClass = elementClass.getContainingClass();
}
return false;
}
项目:intellij-ce-playground
文件:PsiProximityComparator.java
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final Computable<PsiElement> elementComputable, final PsiElement context, ProcessingContext processingContext) {
PsiElement element = elementComputable.compute();
if (element == null) return null;
if (element instanceof MetadataPsiElementBase) return null;
if (context == null) return null;
Module contextModule = processingContext.get(MODULE_BY_LOCATION);
if (contextModule == null) {
contextModule = ModuleUtilCore.findModuleForPsiElement(context);
processingContext.put(MODULE_BY_LOCATION, contextModule);
}
if (contextModule == null) return null;
return new WeighingComparable<PsiElement,ProximityLocation>(elementComputable,
new ProximityLocation(context, contextModule, processingContext),
PROXIMITY_WEIGHERS);
}
项目:intellij-ce-playground
文件:GrReferenceListWeigher.java
@Override
protected Preference getPreferredCondition(@NotNull ProximityLocation location) {
PsiElement position = location.getPosition();
if (INSIDE_REFERENCE_LIST.accepts(position)) {
assert position != null;
GrReferenceList list = (GrReferenceList)position.getParent().getParent();
PsiElement parent = list.getParent();
if (parent instanceof GrTypeDefinition) {
GrTypeDefinition cls = (GrTypeDefinition)parent;
if (cls.isInterface() && list == cls.getExtendsClause() || list == cls.getImplementsClause()) {
return Preference.Interfaces;
}
if (list == cls.getExtendsClause()) {
return Preference.Classes;
}
}
if (parent instanceof GrMethod && ((GrMethod)parent).getThrowsList() == list) {
return Preference.Exceptions;
}
}
return null;
}
项目:tools-idea
文件:CreateFromUsageUtils.java
private static int compareMembers(PsiMember m1, PsiMember m2, PsiExpression context) {
ProgressManager.checkCanceled();
int result = JavaStatisticsManager.createInfo(null, m2).getUseCount() - JavaStatisticsManager.createInfo(null, m1).getUseCount();
if (result != 0) return result;
final PsiClass aClass = m1.getContainingClass();
final PsiClass bClass = m2.getContainingClass();
if (aClass != null && bClass != null) {
result = JavaStatisticsManager.createInfo(null, bClass).getUseCount() - JavaStatisticsManager.createInfo(null, aClass).getUseCount();
if (result != 0) return result;
}
WeighingComparable<PsiElement,ProximityLocation> proximity1 = PsiProximityComparator.getProximity(m1, context);
WeighingComparable<PsiElement,ProximityLocation> proximity2 = PsiProximityComparator.getProximity(m2, context);
if (proximity1 != null && proximity2 != null) {
result = proximity2.compareTo(proximity1);
if (result != 0) return result;
}
String name1 = PsiUtil.getMemberQualifiedName(m1);
String name2 = PsiUtil.getMemberQualifiedName(m2);
return name1 == null || name2 == null ? 0 : name1.compareTo(name2);
}
项目:tools-idea
文件:ReferenceListWeigher.java
@Nullable
protected Preference getPreferredCondition(@NotNull ProximityLocation location) {
PsiElement position = location.getPosition();
if (PlatformPatterns.psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiReferenceList.class).accepts(position)) {
assert position != null;
PsiReferenceList list = (PsiReferenceList)position.getParent().getParent();
PsiReferenceList.Role role = list.getRole();
if (shouldContainInterfaces(list, role)) {
return Preference.Interfaces;
}
if (role == PsiReferenceList.Role.EXTENDS_LIST) {
return Preference.Classes;
}
if (role == PsiReferenceList.Role.THROWS_LIST) {
return Preference.Exceptions;
}
}
return null;
}
项目:tools-idea
文件:ReferenceListWeigher.java
@Override
public Integer weigh(@NotNull PsiElement element, @NotNull ProximityLocation location) {
if (element instanceof PsiClass) {
Preference condition = getPreferredCondition(location);
PsiClass aClass = (PsiClass)element;
if (condition == Preference.Interfaces) return aClass.isInterface() ? 1 : -1;
if (condition == Preference.Classes) {
if (aClass.isInterface()) return -1;
if (aClass.getName().endsWith("TestCase")) {
VirtualFile vFile = aClass.getContainingFile().getVirtualFile();
if (vFile != null && ProjectFileIndex.SERVICE.getInstance(location.getProject()).isInTestSourceContent(vFile)) {
return 2;
}
}
return 1;
}
if (condition == Preference.Exceptions) return InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_THROWABLE) ? 1 : -1;
}
return 0;
}
项目:tools-idea
文件:SamePsiMemberWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
PsiElement position = location.getPosition();
if (position == null){
return null;
}
if (!INSIDE_PSI_MEMBER.getValue(location)) {
return 0;
}
if (element.isPhysical()) {
position = PHYSICAL_POSITION.getValue(location);
}
final PsiMember member = PsiTreeUtil.getContextOfType(PsiTreeUtil.findCommonContext(position, element), PsiMember.class, false);
if (member instanceof PsiClass) return 1;
if (member != null) return 2;
return 0;
}
项目:tools-idea
文件:JavaInheritanceWeigher.java
@NotNull
@Override
public Set<String> fun(ProximityLocation location) {
final HashSet<String> result = new HashSet<String>();
PsiClass contextClass = PsiTreeUtil.getContextOfType(location.getPosition(), PsiClass.class, false);
Processor<PsiClass> processor = new Processor<PsiClass>() {
@Override
public boolean process(PsiClass psiClass) {
ContainerUtilRt.addIfNotNull(result, psiClass.getQualifiedName());
return true;
}
};
while (contextClass != null) {
InheritanceUtil.processSupers(contextClass, true, processor);
contextClass = contextClass.getContainingClass();
}
return result;
}
项目:tools-idea
文件:JavaInheritanceWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getPosition() == null || !(element instanceof PsiClass)) {
return null;
}
if (isTooGeneral((PsiClass)element)) return false;
Set<String> superClasses = PLACE_SUPER_CLASSES.getValue(location);
if (superClasses.isEmpty()) {
return false;
}
final PsiElement position = location.getPosition();
PsiClass placeClass = findPlaceClass(element, position);
if (placeClass == null) return false;
PsiClass elementClass = placeClass;
while (elementClass != null) {
if (superClasses.contains(elementClass.getQualifiedName())) {
return true;
}
elementClass = elementClass.getContainingClass();
}
return false;
}
项目:tools-idea
文件:PsiProximityComparator.java
@Override
public int compare(final Object o1, final Object o2) {
PsiElement element1 = o1 instanceof PsiElement ? (PsiElement)o1 : null;
PsiElement element2 = o2 instanceof PsiElement ? (PsiElement)o2 : null;
if (element1 == null) return element2 == null ? 0 : 1;
if (element2 == null) return -1;
final WeighingComparable<PsiElement, ProximityLocation> proximity1 = myProximities.get(element1);
final WeighingComparable<PsiElement, ProximityLocation> proximity2 = myProximities.get(element2);
if (proximity1 == null || proximity2 == null) {
return 0;
}
if (!proximity1.equals(proximity2)) {
return - proximity1.compareTo(proximity2);
}
if (myContext == null) return 0;
Module contextModule = ModuleUtil.findModuleForPsiElement(myContext);
if (contextModule == null) return 0;
StatisticsManager statisticsManager = StatisticsManager.getInstance();
final ProximityLocation location = new ProximityLocation(myContext, contextModule);
int count1 = statisticsManager.getUseCount(STATISTICS_KEY, element1, location);
int count2 = statisticsManager.getUseCount(STATISTICS_KEY, element1, location);
return count2 - count1;
}
项目:tools-idea
文件:PsiProximityComparator.java
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final Computable<PsiElement> elementComputable, final PsiElement context, ProcessingContext processingContext) {
PsiElement element = elementComputable.compute();
if (element == null) return null;
if (element instanceof MetadataPsiElementBase) return null;
if (context == null) return null;
Module contextModule = processingContext.get(MODULE_BY_LOCATION);
if (contextModule == null) {
contextModule = ModuleUtil.findModuleForPsiElement(context);
processingContext.put(MODULE_BY_LOCATION, contextModule);
}
if (contextModule == null) return null;
return new WeighingComparable<PsiElement,ProximityLocation>(elementComputable,
new ProximityLocation(context, contextModule, processingContext),
PROXIMITY_WEIGHERS);
}
项目:tools-idea
文件:GrReferenceListWeigher.java
@Override
protected Preference getPreferredCondition(@NotNull ProximityLocation location) {
PsiElement position = location.getPosition();
if (PlatformPatterns.psiElement().withParents(GrCodeReferenceElement.class, GrReferenceList.class).accepts(position)) {
assert position != null;
GrReferenceList list = (GrReferenceList)position.getParent().getParent();
PsiElement parent = list.getParent();
if (parent instanceof GrTypeDefinition) {
GrTypeDefinition cls = (GrTypeDefinition)parent;
if (cls.isInterface() && list == cls.getExtendsClause() || list == cls.getImplementsClause()) {
return Preference.Interfaces;
}
if (list == cls.getExtendsClause()) {
return Preference.Classes;
}
}
if (parent instanceof GrMethod && ((GrMethod)parent).getThrowsList() == list) {
return Preference.Exceptions;
}
}
return null;
}
项目:consulo
文件:PsiProximityComparator.java
@Override
public int compare(final Object o1, final Object o2) {
PsiElement element1 = o1 instanceof PsiElement ? (PsiElement)o1 : null;
PsiElement element2 = o2 instanceof PsiElement ? (PsiElement)o2 : null;
if (element1 == null) return element2 == null ? 0 : 1;
if (element2 == null) return -1;
final WeighingComparable<PsiElement, ProximityLocation> proximity1 = myProximities.get(element1);
final WeighingComparable<PsiElement, ProximityLocation> proximity2 = myProximities.get(element2);
if (proximity1 == null || proximity2 == null) {
return 0;
}
if (!proximity1.equals(proximity2)) {
return - proximity1.compareTo(proximity2);
}
if (myContext == null) return 0;
Module contextModule = ModuleUtil.findModuleForPsiElement(myContext);
if (contextModule == null) return 0;
StatisticsManager statisticsManager = StatisticsManager.getInstance();
final ProximityLocation location = new ProximityLocation(myContext, contextModule);
int count1 = statisticsManager.getUseCount(STATISTICS_KEY, element1, location);
int count2 = statisticsManager.getUseCount(STATISTICS_KEY, element1, location);
return count2 - count1;
}
项目:consulo
文件:PsiProximityComparator.java
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final Computable<PsiElement> elementComputable, final PsiElement context, ProcessingContext processingContext) {
PsiElement element = elementComputable.compute();
if (element == null) return null;
if (element instanceof MetadataPsiElementBase) return null;
if (context == null) return null;
Module contextModule = processingContext.get(MODULE_BY_LOCATION);
if (contextModule == null) {
contextModule = ModuleUtil.findModuleForPsiElement(context);
processingContext.put(MODULE_BY_LOCATION, contextModule);
}
if (contextModule == null) return null;
return new WeighingComparable<PsiElement,ProximityLocation>(elementComputable,
new ProximityLocation(context, contextModule, processingContext),
PROXIMITY_WEIGHERS);
}
项目:consulo-java
文件:KnownElementWeigher.java
@Nullable
private static Integer getTestFrameworkWeight(@NotNull PsiElement element, @NotNull ProximityLocation location, @NotNull Project project)
{
if(element instanceof PsiClass)
{
final String qualifiedName = ((PsiClass) element).getQualifiedName();
if(qualifiedName != null)
{
if(qualifiedName.startsWith("org.testng.internal"))
{
return -1;
}
VirtualFile locationFile = PsiUtilCore.getVirtualFile(location.getPosition());
if(locationFile != null && ProjectFileIndex.SERVICE.getInstance(project).isInTestSourceContent(locationFile) && (qualifiedName.contains("junit") || qualifiedName.contains("test")))
{
return 1;
}
}
}
return null;
}
项目:consulo-java
文件:JavaInheritanceWeigher.java
@NotNull
@Override
public Set<String> fun(ProximityLocation location)
{
final HashSet<String> result = new HashSet<>();
PsiClass contextClass = PsiTreeUtil.getContextOfType(location.getPosition(), PsiClass.class, false);
Processor<PsiClass> processor = psiClass ->
{
ContainerUtilRt.addIfNotNull(result, psiClass.getQualifiedName());
return true;
};
while(contextClass != null)
{
InheritanceUtil.processSupers(contextClass, true, processor);
contextClass = contextClass.getContainingClass();
}
return result;
}
项目:intellij-ce-playground
文件:ExplicitlyImportedWeigher.java
@Override
public PsiPackage fun(ProximityLocation location) {
PsiElement position = location.getPosition();
if (position == null) return null;
return getContextPackage(position);
}
项目:intellij-ce-playground
文件:ExplicitlyImportedWeigher.java
@NotNull
@Override
public List<String> fun(ProximityLocation location) {
final PsiJavaFile psiJavaFile = PsiTreeUtil.getContextOfType(location.getPosition(), PsiJavaFile.class, false);
final PsiImportList importList = psiJavaFile == null ? null : psiJavaFile.getImportList();
if (importList == null) return Collections.emptyList();
List<String> importedNames = ContainerUtil.newArrayList();
for (final PsiImportStatement importStatement : importList.getImportStatements()) {
ContainerUtil.addIfNotNull(importedNames, importStatement.getQualifiedName());
}
return importedNames;
}
项目:intellij-ce-playground
文件:SameLogicalRootWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getPosition() == null){
return null;
}
final LogicalRoot contextRoot = LOGICAL_ROOT_KEY.getValue(location);
if (contextRoot == null) {
return false;
}
return contextRoot.equals(findLogicalRoot(element));
}
项目:intellij-ce-playground
文件:OpenedInEditorWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getProject() == null){
return null;
}
final PsiFile psiFile = element.getContainingFile();
if (psiFile == null) return false;
final VirtualFile virtualFile = psiFile.getOriginalFile().getVirtualFile();
return virtualFile != null && ArrayUtil.find(OPENED_EDITORS.getValue(location), virtualFile) != -1;
}
项目:intellij-ce-playground
文件:PsiProximityComparator.java
@Override
public int compare(final Object o1, final Object o2) {
PsiElement element1 = o1 instanceof PsiElement ? (PsiElement)o1 : null;
PsiElement element2 = o2 instanceof PsiElement ? (PsiElement)o2 : null;
if (element1 == null) return element2 == null ? 0 : 1;
if (element2 == null) return -1;
if (myContext != null && myContextModule != null) {
final ProximityLocation location = new ProximityLocation(myContext, myContextModule);
StatisticsInfo info1 = StatisticsManager.serialize(STATISTICS_KEY, element1, location);
StatisticsInfo info2 = StatisticsManager.serialize(STATISTICS_KEY, element2, location);
if (info1 != null && info2 != null) {
StatisticsManager statisticsManager = StatisticsManager.getInstance();
int count1 = statisticsManager.getLastUseRecency(info1);
int count2 = statisticsManager.getLastUseRecency(info2);
if (count1 != count2) {
return count1 < count2 ? -1 : 1;
}
}
}
final WeighingComparable<PsiElement, ProximityLocation> proximity1 = myProximities.get(element1);
final WeighingComparable<PsiElement, ProximityLocation> proximity2 = myProximities.get(element2);
if (proximity1 == null || proximity2 == null) {
return 0;
}
return -proximity1.compareTo(proximity2);
}
项目:intellij-ce-playground
文件:PsiProximityComparator.java
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final PsiElement element, final PsiElement context) {
if (element == null) return null;
if (element instanceof MetadataPsiElementBase) return null;
final Module contextModule = context != null ? ModuleUtilCore.findModuleForPsiElement(context) : null;
return WeighingService.weigh(WEIGHER_KEY, element, new ProximityLocation(context, contextModule));
}
项目:intellij-ce-playground
文件:SameModuleWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
final Module elementModule = ModuleUtil.findModuleForPsiElement(element);
if (location.getPositionModule() == elementModule) {
return 2;
}
if (elementModule != null) {
return 1; // in project => still not bad
}
return 0;
}
项目:intellij-ce-playground
文件:SameDirectoryWeigher.java
@Override
public Boolean weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getPosition() == null) {
return Boolean.TRUE;
}
final PsiDirectory placeDirectory = PLACE_DIRECTORY.getValue(location);
return placeDirectory != null && placeDirectory.equals(getParentDirectory(element));
}
项目:tools-idea
文件:ExplicitlyImportedWeigher.java
@Override
public PsiPackage fun(ProximityLocation location) {
PsiElement position = location.getPosition();
if (position == null) return null;
return getContextPackage(position);
}
项目:tools-idea
文件:SameLogicalRootWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getPosition() == null){
return null;
}
final LogicalRoot contextRoot = LOGICAL_ROOT_KEY.getValue(location);
if (contextRoot == null) {
return false;
}
return contextRoot.equals(findLogicalRoot(element));
}
项目:tools-idea
文件:OpenedInEditorWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getProject() == null){
return null;
}
final PsiFile psiFile = element.getContainingFile();
if (psiFile == null) return false;
final VirtualFile virtualFile = psiFile.getOriginalFile().getVirtualFile();
return virtualFile != null && ArrayUtil.find(OPENED_EDITORS.getValue(location), virtualFile) != -1;
}
项目:tools-idea
文件:PsiProximityComparator.java
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final PsiElement element, final PsiElement context) {
if (element == null) return null;
if (element instanceof MetadataPsiElementBase) return null;
final Module contextModule = context != null ? ModuleUtil.findModuleForPsiElement(context) : null;
return WeighingService.weigh(WEIGHER_KEY, element, new ProximityLocation(context, contextModule));
}
项目:tools-idea
文件:SameModuleWeigher.java
@Override
public Comparable weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
final Module elementModule = ModuleUtil.findModuleForPsiElement(element);
if (location.getPositionModule() == elementModule) {
return 2;
}
if (elementModule != null) {
return 1; // in project => still not bad
}
return 0;
}
项目:tools-idea
文件:SameDirectoryWeigher.java
@Override
public Boolean weigh(@NotNull final PsiElement element, @NotNull final ProximityLocation location) {
if (location.getPosition() == null) {
return Boolean.TRUE;
}
final PsiDirectory placeDirectory = PLACE_DIRECTORY.getValue(location);
return placeDirectory != null && placeDirectory.equals(getParentDirectory(element));
}
项目:consulo-csharp
文件:CSharpObsoleteProximityWeigher.java
@RequiredReadAction
@Override
public Comparable weigh(@NotNull PsiElement psiElement, @NotNull ProximityLocation proximityLocation)
{
if(DotNetAttributeUtil.hasAttribute(psiElement, DotNetTypes.System.ObsoleteAttribute))
{
return Access.OBSOLETE;
}
return Access.NORMAL;
}
项目:consulo-csharp
文件:CSharpByGenericParameterWeigher.java
@Override
public Comparable weigh(@NotNull PsiElement psiElement, @NotNull ProximityLocation proximityLocation)
{
if(psiElement instanceof DotNetGenericParameterListOwner && psiElement.getLanguage() == CSharpLanguage.INSTANCE)
{
return -((DotNetGenericParameterListOwner) psiElement).getGenericParametersCount();
}
return 0;
}
项目:consulo
文件:SameLogicalRootWeigher.java
@Override
public Comparable weigh(@Nonnull final PsiElement element, @Nonnull final ProximityLocation location) {
if (location.getPosition() == null){
return null;
}
final LogicalRoot contextRoot = LOGICAL_ROOT_KEY.getValue(location);
if (contextRoot == null) {
return false;
}
return contextRoot.equals(findLogicalRoot(element));
}
项目:consulo
文件:OpenedInEditorWeigher.java
@Override
public Comparable weigh(@Nonnull final PsiElement element, @Nonnull final ProximityLocation location) {
if (location.getProject() == null){
return null;
}
final PsiFile psiFile = element.getContainingFile();
if (psiFile == null) return false;
final VirtualFile virtualFile = psiFile.getOriginalFile().getVirtualFile();
return virtualFile != null && ArrayUtil.find(OPENED_EDITORS.getValue(location), virtualFile) != -1;
}
项目:consulo
文件:PsiProximityComparator.java
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final PsiElement element, final PsiElement context) {
if (element == null) return null;
if (element instanceof MetadataPsiElementBase) return null;
final Module contextModule = context != null ? ModuleUtil.findModuleForPsiElement(context) : null;
return WeighingService.weigh(WEIGHER_KEY, element, new ProximityLocation(context, contextModule));
}