当前位置: 首页>>代码示例>>Java>>正文


Java HighlightUsagesHandler.createCustomHandler方法代码示例

本文整理汇总了Java中com.intellij.codeInsight.highlighting.HighlightUsagesHandler.createCustomHandler方法的典型用法代码示例。如果您正苦于以下问题:Java HighlightUsagesHandler.createCustomHandler方法的具体用法?Java HighlightUsagesHandler.createCustomHandler怎么用?Java HighlightUsagesHandler.createCustomHandler使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.intellij.codeInsight.highlighting.HighlightUsagesHandler的用法示例。


在下文中一共展示了HighlightUsagesHandler.createCustomHandler方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: handleCustomUsage

import com.intellij.codeInsight.highlighting.HighlightUsagesHandler; //导入方法依赖的package包/类
private static boolean handleCustomUsage(@NotNull Editor editor, @NotNull PsiFile file) {
        final HighlightUsagesHandlerBase handler =
                HighlightUsagesHandler.createCustomHandler(editor, file);
        
        if (handler == null) {
            return false;
        }
        
        final String featureId = handler.getFeatureId();
        if (featureId != null) {
            FeatureUsageTracker.getInstance().triggerFeatureUsed(featureId);
        }
        
        final List targets = handler.getTargets();
        if (targets == null) {
            return false;
        }
        
        try {
            // TODO: 06/02/2017 handle custom usages
            handler.highlightUsages();
//            targets
//            handler.computeUsages(targets);
//            final List readUsages = handler.getReadUsages();
//            final List writeUsages = handler.getWriteUsages();
            Log.className("handleCustomUsage", handler);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return false;
    }
 
开发者ID:huoguangjin,项目名称:MultiHighlight,代码行数:34,代码来源:MultiHighlightHandler.java

示例2: IdentifierHighlighterPass

import com.intellij.codeInsight.highlighting.HighlightUsagesHandler; //导入方法依赖的package包/类
IdentifierHighlighterPass(@Nonnull Project project, @Nonnull PsiFile file, @Nonnull Editor editor) {
  super(project, editor.getDocument(), false);
  myFile = file;
  myEditor = editor;
  myCaretOffset = myEditor.getCaretModel().getOffset();
  myHighlightUsagesHandler = HighlightUsagesHandler.createCustomHandler(myEditor, myFile);
}
 
开发者ID:consulo,项目名称:consulo,代码行数:8,代码来源:IdentifierHighlighterPass.java

示例3: doCollectInformation

import com.intellij.codeInsight.highlighting.HighlightUsagesHandler; //导入方法依赖的package包/类
@Override
public void doCollectInformation(@NotNull final ProgressIndicator progress) {
  @SuppressWarnings("unchecked") HighlightUsagesHandlerBase<PsiElement> handler = HighlightUsagesHandler.createCustomHandler(myEditor, myFile);
  if (handler != null) {
    List<PsiElement> targets = handler.getTargets();
    handler.computeUsages(targets);
    final List<TextRange> readUsages = handler.getReadUsages();
    for (TextRange readUsage : readUsages) {
      LOG.assertTrue(readUsage != null, "null text range from " + handler);
    }
    myReadAccessRanges.addAll(readUsages);
    final List<TextRange> writeUsages = handler.getWriteUsages();
    for (TextRange writeUsage : writeUsages) {
      LOG.assertTrue(writeUsage != null, "null text range from " + handler);
    }
    myWriteAccessRanges.addAll(writeUsages);
    if (!handler.highlightReferences()) return;
  }

  int flags = TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED;
  PsiElement myTarget;
  try {
    myTarget = TargetElementUtil.getInstance().findTargetElement(myEditor, flags, myCaretOffset);
  }
  catch (IndexNotReadyException e) {
    return;
  }
  
  if (myTarget == null) {
    if (!PsiDocumentManager.getInstance(myProject).isUncommited(myEditor.getDocument())) {
      // when document is committed, try to check injected stuff - it's fast
      Editor injectedEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(myEditor, myFile, myCaretOffset);
      myTarget = TargetElementUtil.getInstance().findTargetElement(injectedEditor, flags, injectedEditor.getCaretModel().getOffset());
    }
  }
  
  if (myTarget != null) {
    highlightTargetUsages(myTarget);
  } else {
    PsiReference ref = TargetElementUtil.findReference(myEditor);
    if (ref instanceof PsiPolyVariantReference) {
      ResolveResult[] results = ((PsiPolyVariantReference)ref).multiResolve(false);
      if (results.length > 0) {
        for (ResolveResult result : results) {
          PsiElement target = result.getElement();
          if (target != null) {
            highlightTargetUsages(target);
          }
        }
      }
    }

  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:55,代码来源:IdentifierHighlighterPass.java

示例4: doCollectInformation

import com.intellij.codeInsight.highlighting.HighlightUsagesHandler; //导入方法依赖的package包/类
@Override
public void doCollectInformation(@NotNull final ProgressIndicator progress) {
  if (!CodeInsightSettings.getInstance().HIGHLIGHT_IDENTIFIER_UNDER_CARET) {
    return;
  }

  final HighlightUsagesHandlerBase<PsiElement> handler = HighlightUsagesHandler.createCustomHandler(myEditor, myFile);
  if (handler != null) {
    List<PsiElement> targets = handler.getTargets();
    handler.computeUsages(targets);
    final List<TextRange> readUsages = handler.getReadUsages();
    for (TextRange readUsage : readUsages) {
      LOG.assertTrue(readUsage != null, "null text range from " + handler);
    }
    myReadAccessRanges.addAll(readUsages);
    final List<TextRange> writeUsages = handler.getWriteUsages();
    for (TextRange writeUsage : writeUsages) {
      LOG.assertTrue(writeUsage != null, "null text range from " + handler);
    }
    myWriteAccessRanges.addAll(writeUsages);
    return;
  }

  int flags = TargetElementUtilBase.ELEMENT_NAME_ACCEPTED | TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED;
  PsiElement myTarget = TargetElementUtilBase.getInstance().findTargetElement(myEditor, flags, myCaretOffset);
  
  if (myTarget == null) {
    if (!PsiDocumentManager.getInstance(myProject).isUncommited(myEditor.getDocument())) {
      // when document is committed, try to check injected stuff - it's fast
      Editor injectedEditor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(myEditor, myFile, myCaretOffset);
      if (injectedEditor != null) {
        myTarget = TargetElementUtilBase.getInstance().findTargetElement(injectedEditor, flags, injectedEditor.getCaretModel().getOffset()); 
      }
    }
  }
  
  if (myTarget != null) {
    highlightTargetUsages(myTarget);
  } else {
    PsiReference ref = TargetElementUtilBase.findReference(myEditor);
    if (ref instanceof PsiPolyVariantReference) {
      ResolveResult[] results = ((PsiPolyVariantReference)ref).multiResolve(false);
      if (results.length > 0) {
        for (ResolveResult result : results) {
          PsiElement target = result.getElement();
          if (target != null) {
            highlightTargetUsages(target);
          }
        }
      }
    }

  }
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:55,代码来源:IdentifierHighlighterPass.java


注:本文中的com.intellij.codeInsight.highlighting.HighlightUsagesHandler.createCustomHandler方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。