@NotNull public List<TagInfo> getAvailableTagNames(@NotNull final XmlFile file, @NotNull final XmlTag context) { final Set<String> namespaces = new HashSet<String>(Arrays.asList(context.knownNamespaces())); final List<XmlSchemaProvider> providers = XmlSchemaProvider.getAvailableProviders(file); for (XmlSchemaProvider provider : providers) { namespaces.addAll(provider.getAvailableNamespaces(file, null)); } List<String> nsInfo = new ArrayList<String>(); List<XmlElementDescriptor> descriptors = TagNameVariantCollector.getTagDescriptors(context, namespaces, nsInfo); final List<TagInfo> set = new ArrayList<TagInfo>(); for (int i = 0; i < descriptors.size(); i++) { final XmlElementDescriptor descriptor = descriptors.get(i); String qualifiedName = descriptor.getName(context); final int pos = qualifiedName.indexOf(':'); final String name = pos >= 0 ? qualifiedName.substring(pos + 1) : qualifiedName; set.add(new TagInfo(name, nsInfo.get(i)) { @Nullable @Override public PsiElement getDeclaration() { return descriptor.getDeclaration(); } }); } return set; }
@Override @NotNull public List<TagInfo> getAvailableTagNames(@NotNull final XmlFile file, @NotNull final XmlTag context) { final Set<String> namespaces = new HashSet<String>(Arrays.asList(context.knownNamespaces())); final List<XmlSchemaProvider> providers = XmlSchemaProvider.getAvailableProviders(file); for (XmlSchemaProvider provider : providers) { namespaces.addAll(provider.getAvailableNamespaces(file, null)); } List<String> nsInfo = new ArrayList<String>(); List<XmlElementDescriptor> descriptors = TagNameVariantCollector.getTagDescriptors(context, namespaces, nsInfo); final List<TagInfo> set = new ArrayList<TagInfo>(); for (int i = 0; i < descriptors.size(); i++) { final XmlElementDescriptor descriptor = descriptors.get(i); String qualifiedName = descriptor.getName(context); LOG.assertTrue(qualifiedName != null, descriptor + " returned null name"); final int pos = qualifiedName.indexOf(':'); final String name = pos >= 0 ? qualifiedName.substring(pos + 1) : qualifiedName; set.add(new TagInfo(name, nsInfo.get(i)) { @Nullable @Override public PsiElement getDeclaration() { return descriptor.getDeclaration(); } }); } return set; }
private static boolean moveTags(MoveInfo info, XmlTag moved, XmlTag target, boolean down) { if (target.getParent() == moved) { // we are going to jump into our own children // this can mean that target computed incorrectly XmlTag next = down ? PsiTreeUtil.getNextSiblingOfType(moved, XmlTag.class) : PsiTreeUtil.getPrevSiblingOfType(moved, XmlTag.class); if (next == null) return info.prohibitMove(); info.toMove = new LineRange(moved); info.toMove2 = new LineRange(next); return true; } else if (moved.getParent() == target) { return false; } LineRange targetRange = new LineRange(target); if (targetRange.contains(info.toMove2)) { // we are going to jump into sibling tag XmlElementDescriptor descriptor = moved.getDescriptor(); if (descriptor == null) return false; XmlNSDescriptor nsDescriptor = descriptor.getNSDescriptor(); if (nsDescriptor == null) return false; XmlFile descriptorFile = nsDescriptor.getDescriptorFile(); if (descriptorFile == null || XmlDocumentImpl.isAutoGeneratedSchema(descriptorFile)) return false; if (!TagNameVariantCollector.couldContain(target, moved)) { info.toMove = new LineRange(moved); info.toMove2 = targetRange; return true; } } return false; }
private static void addJavaFxTagVariants(JavaFxTagNameReference reference, CompletionResultSet result) { final XmlTag xmlTag = (XmlTag)reference.getElement(); List<String> namespaces = Arrays.asList(xmlTag.knownNamespaces()); final List<XmlElementDescriptor> variants = TagNameVariantCollector.getTagDescriptors(xmlTag, namespaces, null); for (XmlElementDescriptor descriptor : variants) { final String descriptorName = descriptor.getName(reference.getElement()); if (descriptorName != null) { LookupElementBuilder lookupElement = LookupElementBuilder.create(descriptor, descriptorName); result.addElement(lookupElement.withInsertHandler(JavaFxTagInsertHandler.INSTANCE)); } } }
@Override @NotNull public List<TagInfo> getAvailableTagNames(@NotNull final XmlFile file, @NotNull final XmlTag context) { final Set<String> namespaces = new HashSet<>(Arrays.asList(context.knownNamespaces())); final List<XmlSchemaProvider> providers = XmlSchemaProvider.getAvailableProviders(file); for(XmlSchemaProvider provider : providers) { namespaces.addAll(provider.getAvailableNamespaces(file, null)); } List<String> nsInfo = new ArrayList<>(); List<XmlElementDescriptor> descriptors = TagNameVariantCollector.getTagDescriptors(context, namespaces, nsInfo); final List<TagInfo> set = new ArrayList<>(); for(int i = 0; i < descriptors.size(); i++) { final XmlElementDescriptor descriptor = descriptors.get(i); String qualifiedName = descriptor.getName(context); LOG.assertTrue(qualifiedName != null, descriptor + " returned null name"); final int pos = qualifiedName.indexOf(':'); final String name = pos >= 0 ? qualifiedName.substring(pos + 1) : qualifiedName; set.add(new TagInfo(name, nsInfo.get(i)) { @Nullable @Override public PsiElement getDeclaration() { return descriptor.getDeclaration(); } }); } return set; }