Java 类com.intellij.psi.WeighingComparable 实例源码

项目: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);
}
项目: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);
}
项目: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);
}
项目: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));
}
项目: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));
}
项目: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));
}
项目:intellij-ce-playground    文件:PsiProximityComparator.java   
@Override
protected WeighingComparable<PsiElement, ProximityLocation> create(final PsiElement key) {
  return getProximity(key, myContext);
}
项目:tools-idea    文件:PsiProximityComparator.java   
@Override
protected WeighingComparable<PsiElement, ProximityLocation> create(final PsiElement key) {
  return getProximity(key, myContext);
}
项目:tools-idea    文件:PsiProximityComparator.java   
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final PsiElement element, final PsiElement context, ProcessingContext processingContext) {
  return getProximity(new Computable.PredefinedValueComputable<PsiElement>(element), context, processingContext);
}
项目:consulo    文件:PsiProximityComparator.java   
@Override
protected WeighingComparable<PsiElement, ProximityLocation> create(final PsiElement key) {
  return getProximity(key, myContext);
}
项目:consulo    文件:PsiProximityComparator.java   
@Nullable
public static WeighingComparable<PsiElement, ProximityLocation> getProximity(final PsiElement element, final PsiElement context, ProcessingContext processingContext) {
  return getProximity(new Computable.PredefinedValueComputable<PsiElement>(element), context, processingContext);
}