下面列出了com.intellij.psi.ElementManipulators#getManipulator ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@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;
}
@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;
}
@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;
}
@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;
}
@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);
}