From 12ad0f5cf900043a416fee19cda97a46fe4dfcce Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 26 Jan 2005 17:07:10 +0300 Subject: [PATCH] (no message) --- .../source/parsing/ChameleonTransforming.java | 2 +- .../impl/schema/AnyXmlElementDescriptor.java | 10 +-- .../impl/schema/NullElementDescriptor.java | 88 +++++++++++++++++++ 3 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 source/com/intellij/xml/impl/schema/NullElementDescriptor.java diff --git a/source/com/intellij/psi/impl/source/parsing/ChameleonTransforming.java b/source/com/intellij/psi/impl/source/parsing/ChameleonTransforming.java index 9f9c5c9b2fc9..6f93d40a2660 100644 --- a/source/com/intellij/psi/impl/source/parsing/ChameleonTransforming.java +++ b/source/com/intellij/psi/impl/source/parsing/ChameleonTransforming.java @@ -27,7 +27,7 @@ public class ChameleonTransforming implements Constants { TreeElement newElement = chameleon.transform(file.getTreeElement().getCharTable(), file.createLexer()); final TreeElement treeNext = chameleon.getTreeNext(); - TreeUtil.replace(chameleon, newElement); + TreeUtil.replaceWithList(chameleon, newElement); if (DebugUtil.CHECK) { if (newElement != null) { DebugUtil.checkTreeStructure(newElement); diff --git a/source/com/intellij/xml/impl/schema/AnyXmlElementDescriptor.java b/source/com/intellij/xml/impl/schema/AnyXmlElementDescriptor.java index cbab6491a493..bd1066c3e12a 100644 --- a/source/com/intellij/xml/impl/schema/AnyXmlElementDescriptor.java +++ b/source/com/intellij/xml/impl/schema/AnyXmlElementDescriptor.java @@ -13,17 +13,17 @@ import com.intellij.psi.PsiSubstitutor; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlTag; -import com.intellij.xml.XmlAttributeDescriptor; -import com.intellij.xml.XmlNSDescriptor; -import com.intellij.xml.XmlElementDescriptor; import com.intellij.util.ArrayUtil; +import com.intellij.xml.XmlAttributeDescriptor; +import com.intellij.xml.XmlElementDescriptor; +import com.intellij.xml.XmlNSDescriptor; public class AnyXmlElementDescriptor implements XmlElementDescriptor { private final XmlElementDescriptor myParentDescriptor; private final XmlNSDescriptor myXmlNSDescriptor; public AnyXmlElementDescriptor(XmlElementDescriptor parentDescriptor, XmlNSDescriptor xmlNSDescriptor) { - myParentDescriptor = parentDescriptor; + myParentDescriptor = parentDescriptor == null ? NullElementDescriptor.getInstance() : parentDescriptor; myXmlNSDescriptor = xmlNSDescriptor; } @@ -67,7 +67,7 @@ public class AnyXmlElementDescriptor implements XmlElementDescriptor { } public XmlElementDescriptor getElementDescriptor(XmlTag tag){ - return myParentDescriptor!=null ? myParentDescriptor.getElementDescriptor(tag):null; + return myParentDescriptor.getElementDescriptor(tag); } public XmlAttributeDescriptor[] getAttributesDescriptors() { diff --git a/source/com/intellij/xml/impl/schema/NullElementDescriptor.java b/source/com/intellij/xml/impl/schema/NullElementDescriptor.java new file mode 100644 index 000000000000..8c41d3acbcf4 --- /dev/null +++ b/source/com/intellij/xml/impl/schema/NullElementDescriptor.java @@ -0,0 +1,88 @@ +/** + * @author cdr + */ +package com.intellij.xml.impl.schema; + +import com.intellij.xml.XmlElementDescriptor; +import com.intellij.xml.XmlAttributeDescriptor; +import com.intellij.xml.XmlNSDescriptor; +import com.intellij.psi.xml.XmlTag; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiSubstitutor; +import com.intellij.psi.scope.PsiScopeProcessor; + +public class NullElementDescriptor implements XmlElementDescriptor { + private static final NullElementDescriptor INSTANCE = new NullElementDescriptor(); + + public static NullElementDescriptor getInstance() { + return INSTANCE; + } + + private NullElementDescriptor() { + } + + public String getQualifiedName() { + return null; + } + + public String getDefaultName() { + return null; + } + + //todo: refactor to support full DTD spec + public XmlElementDescriptor[] getElementsDescriptors(XmlTag context) { + return new XmlElementDescriptor[0]; + } + + public XmlElementDescriptor getElementDescriptor(XmlTag childTag) { + return null; + } + + public XmlAttributeDescriptor[] getAttributesDescriptors() { + return new XmlAttributeDescriptor[0]; + } + + public XmlAttributeDescriptor getAttributeDescriptor(String attributeName) { + return null; + } + + public XmlAttributeDescriptor getAttributeDescriptor(XmlAttribute attribute) { + return null; + } + + public XmlNSDescriptor getNSDescriptor() { + return null; + } + + public int getContentType() { + return 0; + } + + public PsiElement getDeclaration() { + return null; + } + + public boolean processDeclarations(PsiElement context, + PsiScopeProcessor processor, + PsiSubstitutor substitutor, + PsiElement lastElement, + PsiElement place) { + return false; + } + + public String getName(PsiElement context) { + return null; + } + + public String getName() { + return null; + } + + public void init(PsiElement element) { + } + + public Object[] getDependences() { + return new Object[0]; + } +} \ No newline at end of file