本文整理汇总了Java中com.intellij.psi.impl.source.tree.SharedImplUtil类的典型用法代码示例。如果您正苦于以下问题:Java SharedImplUtil类的具体用法?Java SharedImplUtil怎么用?Java SharedImplUtil使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SharedImplUtil类属于com.intellij.psi.impl.source.tree包,在下文中一共展示了SharedImplUtil类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getStubOrPsiChildren
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
/**
* @return children of specified type, taken from stubs (if this element is currently stub-based) or AST (otherwise).
*/
public <S extends StubElement, Psi extends PsiElement> Psi[] getStubOrPsiChildren(final IStubElementType<S, Psi> elementType, Psi[] array) {
T stub = myStub;
if (stub != null) {
//noinspection unchecked
return (Psi[])stub.getChildrenByType(elementType, array);
}
else {
final ASTNode[] nodes = SharedImplUtil.getChildrenOfType(getNode(), elementType);
//noinspection unchecked
Psi[] psiElements = (Psi[])Array.newInstance(array.getClass().getComponentType(), nodes.length);
for (int i = 0; i < nodes.length; i++) {
//noinspection unchecked
psiElements[i] = (Psi)nodes[i].getPsi();
}
return psiElements;
}
}
示例2: getStubOrPsiChildren
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
/**
* @return children of specified type, taken from stubs (if this element is currently stub-based) or AST (otherwise).
*/
@Nonnull
public <S extends StubElement, Psi extends PsiElement> Psi[] getStubOrPsiChildren(@Nonnull IStubElementType<S, ? extends Psi> elementType, @Nonnull Psi[] array) {
T stub = getGreenStub();
if (stub != null) {
//noinspection unchecked
return (Psi[])stub.getChildrenByType(elementType, array);
}
else {
final ASTNode[] nodes = SharedImplUtil.getChildrenOfType(getNode(), elementType);
//noinspection unchecked
Psi[] psiElements = (Psi[])Array.newInstance(array.getClass().getComponentType(), nodes.length);
for (int i = 0; i < nodes.length; i++) {
//noinspection unchecked
psiElements[i] = (Psi)nodes[i].getPsi();
}
return psiElements;
}
}
示例3: bindToTargetClass
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
@Override
public PsiImportStaticStatement bindToTargetClass(final PsiClass aClass) throws IncorrectOperationException {
final String qualifiedName = aClass.getQualifiedName();
if (qualifiedName == null) throw new IncorrectOperationException();
final PsiJavaParserFacade parserFacade = JavaPsiFacade.getInstance(getProject()).getParserFacade();
final CompositeElement newRef = (CompositeElement)parserFacade.createReferenceFromText(qualifiedName, null).getNode();
if (getQualifier() != null) {
replaceChildInternal(findChildByRole(ChildRole.QUALIFIER), newRef);
return (PsiImportStaticStatement)getParent();
}
else {
final LeafElement dot = Factory.createSingleLeafElement(JavaTokenType.DOT, ".", 0, 1, SharedImplUtil.findCharTableByTree(newRef), getManager());
newRef.rawInsertAfterMe(dot);
final CompositeElement errorElement = Factory.createErrorElement(JavaErrorMessages.message("import.statement.identifier.or.asterisk.expected."));
dot.rawInsertAfterMe(errorElement);
final CompositeElement parentComposite = (CompositeElement)SourceTreeToPsiMap.psiElementToTree(getParent());
parentComposite.addInternal(newRef, errorElement, this, Boolean.TRUE);
parentComposite.deleteChildInternal(this);
return (PsiImportStaticStatement)SourceTreeToPsiMap.treeElementToPsi(parentComposite);
}
}
示例4: getDefinitionParent
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
protected PsiElement getDefinitionParent() {
final PsiElement candidate = getParentByStub();
if (candidate instanceof LuaPsiFile) {
return candidate;
}
return SharedImplUtil.getParent(getNode());
}
示例5: getParent
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
@Override
public PsiElement getParent() {
final PsiClassStub stub = getStub();
if (stub != null) {
final StubElement parentStub = stub.getParentStub();
if (parentStub instanceof PsiFileStub || parentStub instanceof PsiClassStub
) {
return parentStub.getPsi();
}
}
return SharedImplUtil.getParent(getNode());
}
示例6: createBuilder
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
private static PsiBuilderImpl createBuilder(final String text, ASTNode originalTree) {
final Language lang = StdFileTypes.JAVA.getLanguage();
final ParserDefinition parserDefinition = LanguageParserDefinitions.INSTANCE.forLanguage(lang);
assertNotNull(parserDefinition);
PsiFile psiFile = createFile("x.java", text);
return new PsiBuilderImpl(getProject(), psiFile, parserDefinition, JavaParserDefinition.createLexer(LanguageLevel.JDK_1_5),
SharedImplUtil.findCharTableByTree(psiFile.getNode()), text, originalTree, null);
}
示例7: findChildrenByType
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
protected <T extends PsiElement> T[] findChildrenByType(IElementType elementType, Class<T> arrayClass) {
return ContainerUtil.map2Array(SharedImplUtil.getChildrenOfType(getNode(), elementType), arrayClass, new Function<ASTNode, T>() {
@Override
public T fun(final ASTNode s) {
return (T)s.getPsi();
}
});
}
示例8: handleContentChange
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
public static <T extends PsiElement> T handleContentChange(T element,
TextRange range,
String newContent,
final IElementType tokenType) {
CheckUtil.checkWritable(element);
final CompositeElement attrNode = (CompositeElement)element.getNode();
final ASTNode valueNode = attrNode.findLeafElementAt(range.getStartOffset());
LOG.assertTrue(valueNode != null, "Leaf not found in " + attrNode + " at offset " + range.getStartOffset() + " in element " + element);
final PsiElement elementToReplace = valueNode.getPsi();
String text;
try {
text = elementToReplace.getText();
final int offsetInParent = elementToReplace.getStartOffsetInParent();
String textBeforeRange = text.substring(0, range.getStartOffset() - offsetInParent);
String textAfterRange = text.substring(range.getEndOffset()- offsetInParent, text.length());
newContent = element.getText().startsWith("'") || element.getText().endsWith("'") ?
newContent.replace("'", "'") : newContent.replace("\"", """);
text = textBeforeRange + newContent + textAfterRange;
} catch(StringIndexOutOfBoundsException e) {
LOG.error("Range: " + range + " in text: '" + element.getText() + "'", e);
throw e;
}
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(attrNode);
final LeafElement newValueElement = Factory.createSingleLeafElement(tokenType, text, charTableByTree, element.getManager());
attrNode.replaceChildInternal(valueNode, newValueElement);
return element;
}
示例9: encodeXmlTextContents
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
@Override
public ASTNode encodeXmlTextContents(String displayText, PsiElement text) {
final ASTNode firstChild = text.getNode().getFirstChildNode();
boolean textAlreadyHasCDATA = firstChild != null && firstChild.getElementType() == XmlElementType.XML_CDATA;
if ((textAlreadyHasCDATA || XmlUtil.toCode(displayText)) && !displayText.isEmpty()) {
final FileElement dummyParent = createCDATAElement(text.getManager(), SharedImplUtil.findCharTableByTree(text.getNode()), displayText);
return dummyParent.getFirstChildNode();
}
else {
return super.encodeXmlTextContents(displayText, text);
}
}
示例10: multiResolve
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
@NotNull
@Override
public JavaResolveResult[] multiResolve(final boolean incompleteCode) {
FileElement fileElement = SharedImplUtil.findFileElement(this);
if (fileElement == null) {
LOG.error("fileElement == null!");
return JavaResolveResult.EMPTY_ARRAY;
}
final PsiManagerEx manager = fileElement.getManager();
if (manager == null) {
LOG.error("getManager() == null!");
return JavaResolveResult.EMPTY_ARRAY;
}
PsiFile file = SharedImplUtil.getContainingFile(fileElement);
boolean valid = file != null && file.isValid();
if (!valid) {
LOG.error("invalid!");
return JavaResolveResult.EMPTY_ARRAY;
}
final MethodReferenceResolver resolver = new MethodReferenceResolver();
final Map<PsiMethodReferenceExpression, PsiType> map = PsiMethodReferenceUtil.ourRefs.get();
if (map != null && map.containsKey(this)) {
return (JavaResolveResult[])resolver.resolve(this, incompleteCode);
}
ResolveResult[] results = ResolveCache.getInstance(getProject()).resolveWithCaching(this, resolver, true, incompleteCode,file);
return results.length == 0 ? JavaResolveResult.EMPTY_ARRAY : (JavaResolveResult[])results;
}
示例11: getParentByStub
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
protected final PsiElement getParentByStub() {
final StubElement<?> stub = getStub();
if (stub != null) {
return stub.getParentStub().getPsi();
}
return SharedImplUtil.getParent(getNode());
}
示例12: getStubOrPsiChildren
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
public <Stub extends StubElement, Psi extends PsiElement> Psi[] getStubOrPsiChildren(final IStubElementType<Stub, Psi> elementType, Psi[] array) {
T stub = myStub;
if (stub != null) {
//noinspection unchecked
return (Psi[])stub.getChildrenByType(elementType, array);
}
else {
final ASTNode[] nodes = SharedImplUtil.getChildrenOfType(getNode(), elementType);
Psi[] psiElements = (Psi[])Array.newInstance(array.getClass().getComponentType(), nodes.length);
for (int i = 0; i < nodes.length; i++) {
psiElements[i] = (Psi)nodes[i].getPsi();
}
return psiElements;
}
}
示例13: encodeXmlTextContents
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
public ASTNode encodeXmlTextContents(String displayText, PsiElement text) {
final ASTNode firstChild = text.getNode().getFirstChildNode();
boolean textAlreadyHasCDATA = firstChild != null && firstChild.getElementType() == XmlElementType.XML_CDATA;
if ((textAlreadyHasCDATA || XmlUtil.toCode(displayText)) && displayText.length() > 0) {
final FileElement dummyParent = createCDATAElement(text.getManager(), SharedImplUtil.findCharTableByTree(text.getNode()), displayText);
return dummyParent.getFirstChildNode();
}
else {
return super.encodeXmlTextContents(displayText, text);
}
}
示例14: handleContentChange
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
public static <T extends PsiElement> T handleContentChange(T element,
TextRange range,
String newContent,
final IElementType tokenType) {
CheckUtil.checkWritable(element);
final CompositeElement attrNode = (CompositeElement)element.getNode();
final ASTNode valueNode = attrNode.findLeafElementAt(range.getStartOffset());
LOG.assertTrue(valueNode != null, "Leaf not found in " + attrNode + " at offset " + range.getStartOffset() + " in element " + element);
final PsiElement elementToReplace = valueNode.getPsi();
String text;
try {
text = elementToReplace.getText();
final int offsetInParent = elementToReplace.getStartOffsetInParent();
String textBeforeRange = text.substring(0, range.getStartOffset() - offsetInParent);
String textAfterRange = text.substring(range.getEndOffset()- offsetInParent, text.length());
text = textBeforeRange + newContent + textAfterRange;
} catch(StringIndexOutOfBoundsException e) {
LOG.error("Range: " + range + " in text: '" + element.getText() + "'", e);
throw e;
}
final CharTable charTableByTree = SharedImplUtil.findCharTableByTree(attrNode);
final LeafElement newValueElement = Factory.createSingleLeafElement(tokenType, text, charTableByTree, element.getManager());
attrNode.replaceChildInternal(valueNode, newValueElement);
return element;
}
示例15: HaxePsiBuilder
import com.intellij.psi.impl.source.tree.SharedImplUtil; //导入依赖的package包/类
public HaxePsiBuilder(@NotNull Project project,
@NotNull ParserDefinition parserDefinition,
@NotNull Lexer lexer,
@NotNull ASTNode chameleon,
@NotNull CharSequence text) {
super(project, parserDefinition, lexer, chameleon, text);
psiFile = SharedImplUtil.getContainingFile(chameleon);
setupDebugTraces();
}