类com.intellij.psi.ElementManipulators源码实例Demo

下面列出了怎么用com.intellij.psi.ElementManipulators的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: idea-php-typo3-plugin   文件: FluidInjector.java
@Override
public void getLanguagesToInject(@NotNull MultiHostRegistrar registrar, @NotNull PsiElement context) {
    if (context.getLanguage() == XMLLanguage.INSTANCE) return;
    final Project project = context.getProject();
    if (!FluidIndexUtil.hasFluid(project)) return;

    final PsiElement parent = context.getParent();
    if (context instanceof XmlAttributeValueImpl && parent instanceof XmlAttribute) {
        final int length = context.getTextLength();
        final String name = ((XmlAttribute) parent).getName();

        if (isInjectableAttribute(project, length, name)) {
            registrar
                .startInjecting(FluidLanguage.INSTANCE)
                .addPlace(null, null, (PsiLanguageInjectionHost) context, ElementManipulators.getValueTextRange(context))
                .doneInjecting();
        }
    }
}
 
源代码2 项目: consulo   文件: QuickEditAction.java
@Nullable
protected Pair<PsiElement, TextRange> getRangePair(final PsiFile file, final Editor editor) {
  final int offset = editor.getCaretModel().getOffset();
  final PsiLanguageInjectionHost host =
          PsiTreeUtil.getParentOfType(file.findElementAt(offset), PsiLanguageInjectionHost.class, false);
  if (host == null || ElementManipulators.getManipulator(host) == null) return null;
  final List<Pair<PsiElement, TextRange>> injections = InjectedLanguageManager.getInstance(host.getProject()).getInjectedPsiFiles(host);
  if (injections == null || injections.isEmpty()) return null;
  final int offsetInElement = offset - host.getTextRange().getStartOffset();
  final Pair<PsiElement, TextRange> rangePair = ContainerUtil.find(injections, new Condition<Pair<PsiElement, TextRange>>() {
    @Override
    public boolean value(final Pair<PsiElement, TextRange> pair) {
      return pair.second.containsRange(offsetInElement, offsetInElement);
    }
  });
  if (rangePair != null) {
    final Language language = rangePair.first.getContainingFile().getLanguage();
    final Object action = language.getUserData(EDIT_ACTION_AVAILABLE);
    if (action != null && action.equals(false)) return null;

    myLastLanguageName = language.getDisplayName();
  }
  return rangePair;
}
 
private void registrarInjecting(Language language, MultiHostRegistrar registrar, List<PsiElement> els, String prefix, String suffix) {
    if (els.size() > 0) {
        registrar.startInjecting(language);
        els.forEach(el -> registrar.addPlace(prefix, suffix, (PsiLanguageInjectionHost) el, ElementManipulators.getValueTextRange(el)));
        registrar.doneInjecting();
    }
}
 
@Override
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
    //Find all the method with the registered method name on it's class.

    final PsiMethod[] methodsByName = getPsiClass().findMethodsByName(methodNameOnly, true);

    for (PsiMethod psiMethod : methodsByName) {
        psiMethod.setName(newElementName);
    }
    //Rename the Camel DSL bean ref method
    ElementManipulators.getManipulator(getElement()).handleContentChange(getElement(), this.getRangeInElement(), newElementName);
    return getElement();
}
 
源代码5 项目: BashSupport   文件: AbstractBashFileReference.java
@NotNull
private ElementManipulator<AbstractBashCommand<?>> getManipulator() {
    ElementManipulator<AbstractBashCommand<?>> manipulator = ElementManipulators.<AbstractBashCommand<?>>getManipulator(cmd);
    if (manipulator == null) {
        throw new IncorrectOperationException("No element manipulator found for " + cmd);
    }

    return manipulator;
}
 
源代码6 项目: BashSupport   文件: AbstractFunctionReference.java
@NotNull
private ElementManipulator<AbstractBashCommand<?>> getManipulator() {
    ElementManipulator<AbstractBashCommand<?>> manipulator = ElementManipulators.<AbstractBashCommand<?>>getManipulator(cmd);
    if (manipulator == null) {
        throw new IncorrectOperationException("No element manipulator found for " + cmd);
    }
    return manipulator;
}
 
源代码7 项目: consulo   文件: CachingReference.java
@Nonnull
public static <T extends PsiElement> ElementManipulator<T> getManipulator(T currentElement){
  ElementManipulator<T> manipulator = ElementManipulators.getManipulator(currentElement);
  if (manipulator == null) {
    throw new IncorrectOperationException("Manipulator for this element is not defined: " + currentElement + "; " + currentElement.getClass());
  }
  return manipulator;
}
 
源代码8 项目: consulo   文件: PathReferenceProviderBase.java
@Override
public boolean createReferences(@Nonnull final PsiElement psiElement, final @Nonnull List<PsiReference> references, final boolean soft) {

  final TextRange range = ElementManipulators.getValueTextRange(psiElement);
  int offset = range.getStartOffset();
  int endOffset = range.getEndOffset();
  final String elementText = psiElement.getText();
  for (DynamicContextProvider provider: Extensions.getExtensions(DynamicContextProvider.EP_NAME)) {
    final int dynamicOffset = provider.getOffset(psiElement, offset, elementText);
    if (dynamicOffset == -1) {
      return false;
    } else if (dynamicOffset != offset) {
      offset = dynamicOffset;
    }
  }

  final int pos = getLastPosOfURL(offset, elementText);
  if (pos != -1 && pos < endOffset) {
    endOffset = pos;
  }
  try {
    final String text = elementText.substring(offset, endOffset);
    return createReferences(psiElement, offset, text, references, soft);
  } catch (StringIndexOutOfBoundsException e) {
    LOG.error("Cannot process string: '" + psiElement.getParent().getParent().getText() + "'", e);
    return false;
  }
}
 
源代码9 项目: camel-idea-plugin   文件: BeanSelfReference.java
@Override
public PsiElement handleElementRename(@NotNull String newElementName) throws IncorrectOperationException {
    ElementManipulator<PsiElement> manipulator = ElementManipulators.getManipulator(myElement);
    return manipulator.handleContentChange(myElement, TextRange.from(1, id.length()), newElementName);
}
 
@Override
public PsiElement handleElementRename(@NotNull String newElementName) throws IncorrectOperationException {
    ElementManipulator<PsiElement> manipulator = ElementManipulators.getManipulator(myElement);
    return manipulator.handleContentChange(myElement, endpoint.getNameTextRange().shiftRight(1), newElementName);
}
 
@Override
public PsiElement handleElementRename(@NotNull String newElementName) throws IncorrectOperationException {
    ElementManipulator<PsiElement> manipulator = ElementManipulators.getManipulator(myElement);
    return manipulator.handleContentChange(myElement, endpoint.getNameTextRange().shiftRight(1), newElementName);
}
 
源代码12 项目: consulo   文件: ReferenceSetBase.java
public ReferenceSetBase(@Nonnull PsiElement element) {
  this(element, ElementManipulators.getOffsetInElement(element));
}
 
源代码13 项目: consulo   文件: ReferenceSetBase.java
public ReferenceSetBase(@Nonnull PsiElement element, int offset) {
  this(ElementManipulators.getValueText(element), element, offset, DOT_SEPARATOR);
}
 
 类所在包
 类方法
 同包方法