Java 类com.intellij.psi.xml.XmlTag 实例源码

项目:AppleScript-IDEA    文件:DictionaryClass.java   
public DictionaryClass(@NotNull Suite suite, @NotNull String name, @NotNull String code,
                       @NotNull XmlTag xmlTagClass, @Nullable String parentClassName,
                       @Nullable List<String> elementNames, @Nullable List<String> respondingCommandNames,
                       @Nullable String pluralClassName) {
  super(suite, name, code, xmlTagClass, null);
  this.parentClassName = parentClassName;
  this.pluralClassName = StringUtil.isEmpty(pluralClassName) ? name + "s" : pluralClassName;
  if (elementNames != null) {
    this.elementNames = elementNames;
  } else {
    this.elementNames = new ArrayList<>();
  }
  if (respondingCommandNames != null) {
    this.respondingCommandNames = respondingCommandNames;
  } else {
    this.respondingCommandNames = new ArrayList<>();
  }
}
项目:idea-php-typo3-plugin    文件:TranslationReferenceTest.java   
public void testReferenceCanResolveDefinition() {
    PsiFile file = myFixture.configureByText(PhpFileType.INSTANCE, "<?php \n" +
            "\"LLL:EXT:foo/sample.xlf:sys_<caret>language.language_isocode.ab\";");

    PsiElement elementAtCaret = file.findElementAt(myFixture.getCaretOffset()).getParent();
    PsiReference[] references = elementAtCaret.getReferences();
    for (PsiReference reference : references) {
        if (reference instanceof TranslationReference) {
            ResolveResult[] resolveResults = ((TranslationReference) reference).multiResolve(false);
            for (ResolveResult resolveResult : resolveResults) {
                assertInstanceOf(resolveResult.getElement(), XmlTag.class);

                return;
            }
        }
    }

    fail("No TranslationReference found");
}
项目:magento2-phpstorm-plugin    文件:LayoutIndex.java   
private static List<XmlTag> getComponentDeclarations(String componentValue, String componentType, ID<String, Void> id, Project project, ComponentMatcher componentMatcher) {
    List<XmlTag> results = new ArrayList<XmlTag>();
    Collection<VirtualFile> containingFiles = FileBasedIndex.getInstance()
        .getContainingFiles(
            id,
            componentValue,
            GlobalSearchScope.allScope(project)
        );
    PsiManager psiManager = PsiManager.getInstance(project);

    for (VirtualFile virtualFile: containingFiles) {
        XmlFile xmlFile = (XmlFile)psiManager.findFile(virtualFile);
        if (xmlFile == null) {
            continue;
        }

        XmlTag rootTag = xmlFile.getRootTag();
        if (rootTag == null) {
            continue;
        }
        collectComponentDeclarations(rootTag, results, componentValue, componentType, componentMatcher);
    }

    return results;
}
项目:magento2-phpstorm-plugin    文件:TypeConfigurationIndex.java   
public static List<XmlTag> getClassConfigurations(PhpClass phpClass) {
    String classFqn = phpClass.getPresentableFQN();

    Collection<VirtualFile> containingFiles = FileBasedIndex.getInstance()
        .getContainingFiles(KEY, classFqn, GlobalSearchScope.allScope(phpClass.getProject())
    );

    PsiManager psiManager = PsiManager.getInstance(phpClass.getProject());

    List<XmlTag> tags = new ArrayList<XmlTag>();

    for (VirtualFile virtualFile: containingFiles) {
        XmlFile file = (XmlFile)psiManager.findFile(virtualFile);

        if (file == null) {
            continue;
        }

        XmlTag rootTag = file.getRootTag();
        fillRelatedTags(classFqn, rootTag, tags);
    }

    return tags;
}
项目:magento2-phpstorm-plugin    文件:TypeConfigurationIndex.java   
private static void fillRelatedTags(String classFqn, XmlTag parentTag, List<XmlTag> tagsReferences) {
    for (XmlTag childTag: parentTag.getSubTags()) {
        String tagName = childTag.getName();
        String attribute = TAG_ATTRIBUTE_RELATION.get(tagName);
        if (attribute != null) {
            String className = childTag.getAttributeValue(attribute);
            if (className != null && PhpLangUtil.toPresentableFQN(className).equals(classFqn)) {
                tagsReferences.add(getLineMarkerDecorator(childTag));
            }
        }

        // type tag has plugin tags
        if (tagName.equals(TYPE_TAG)) {
            fillRelatedTags(classFqn, childTag, tagsReferences);
        }

        if (tagName.equals("event")) {
            fillRelatedTags(classFqn, childTag, tagsReferences);
        }
    }
}
项目:magento2-phpstorm-plugin    文件:TypeConfigurationIndex.java   
/**
 * Decorate tag with appropriate line marker decorator.
 */
@NotNull
private static XmlTag getLineMarkerDecorator(XmlTag tag) {
    switch (tag.getName()) {
        case PREFERENCE_TAG:
            return new DiPreferenceLineMarkerXmlTagDecorator(tag);
        case TYPE_TAG:
            return new DiTypeLineMarkerXmlTagDecorator(tag);
        case PLUGIN_TAG:
            return new DiPluginLineMarkerXmlTagDecorator(tag);
        case VIRTUAL_TYPE_TAG:
            return new DiVirtualTypeLineMarkerXmlTagDecorator(tag);
        default:
            return tag;
    }
}
项目:magento2-phpstorm-plugin    文件:WebApiTypeIndex.java   
/**
 * Get list of Web API routes associated with the provided method.
 *
 * Parent classes are not taken into account.
 */
public static List<XmlTag> getWebApiRoutes(Method method) {
    List<XmlTag> tags = new ArrayList<>();
    if (!method.getAccess().isPublic()) {
        return tags;
    }
    PhpClass phpClass = method.getContainingClass();
    String methodFqn = method.getName();
    if (phpClass == null) {
        return tags;
    }
    String classFqn = phpClass.getPresentableFQN();
    Collection<VirtualFile> containingFiles = FileBasedIndex
        .getInstance().getContainingFiles(KEY, classFqn, GlobalSearchScope.allScope(phpClass.getProject()));

    PsiManager psiManager = PsiManager.getInstance(phpClass.getProject());
    for (VirtualFile virtualFile : containingFiles) {
        XmlFile file = (XmlFile) psiManager.findFile(virtualFile);
        if (file == null) {
            continue;
        }
        XmlTag rootTag = file.getRootTag();
        fillRelatedTags(classFqn, methodFqn, rootTag, tags);
    }
    return tags;
}
项目:magento2-phpstorm-plugin    文件:MagentoComponentManager.java   
@Override
public String getMagentoName() {
    if (moduleName != null) {
        return moduleName;
    }

    PsiDirectory configurationDir = directory.findSubdirectory(CONFIGURATION_PATH);
    if (configurationDir != null) {
        PsiFile configurationFile = configurationDir.findFile("module.xml");

        if (configurationFile != null && configurationFile instanceof XmlFile) {
            XmlTag rootTag = ((XmlFile) configurationFile).getRootTag();
            if (rootTag != null) {
                XmlTag module = rootTag.findFirstSubTag("module");
                if (module != null && module.getAttributeValue("name") != null) {
                    moduleName = module.getAttributeValue("name");
                    return moduleName;
                }
            }
        }
    }

    return DEFAULT_MODULE_NAME;
}
项目:magento2-phpstorm-plugin    文件:WebApiLineMarkerProvider.java   
/**
 * Get list of Web API routes related to the specified method.
 * <p/>
 * Web API declarations for parent classes are taken into account.
 * Results are not cached.
 */
List<XmlTag> extractRoutesForMethod(@NotNull Method method) {
    List<XmlTag> routesForMethod = WebApiTypeIndex.getWebApiRoutes(method);
    PhpClass phpClass = method.getContainingClass();
    if (phpClass == null) {
        return routesForMethod;
    }
    for (PhpClass parent : method.getContainingClass().getSupers()) {
        for (Method parentMethod : parent.getMethods()) {
            if (parentMethod.getName().equals(method.getName())) {
                routesForMethod.addAll(extractRoutesForMethod(parentMethod));
            }
        }
    }
    return routesForMethod;
}
项目:hybris-integration-intellij-idea-plugin    文件:BeansUtils.java   
public static <T extends DomElement, V> GenericAttributeValue<V> expectDomAttributeValue(
    @NotNull final PsiElement element,
    @NotNull final Class<? extends T> domTagClass,
    @NotNull final Function<T, GenericAttributeValue<V>> domGetter
) {
    final DomManager domManager = DomManager.getDomManager(element.getProject());

    if (!(element instanceof XmlElement)) {
        return null;
    }

    final XmlAttribute xmlAttribute = PsiTreeUtil.getParentOfType(element, XmlAttribute.class, false);
    if (xmlAttribute == null) {
        return null;
    }

    final XmlTag xmlParentTag = PsiTreeUtil.getParentOfType(element, XmlTag.class, false);
    DomElement domParentTag = domManager.getDomElement(xmlParentTag);

    return Optional.ofNullable(domParentTag)
                   .map(o -> ObjectUtils.tryCast(o, domTagClass))
                   .map(domGetter)
                   .filter(val -> val == domManager.getDomElement(xmlAttribute))
                   .orElse(null);
}
项目:hybris-integration-intellij-idea-plugin    文件:PsiXmlUtils.java   
/**
 * <tagName attributeName="XmlAttributeValue">
 */
public static XmlAttributeValuePattern tagAttributeValuePattern(
    String attributeName,
    String fileName
) {
    return XmlPatterns
        .xmlAttributeValue()
        .withParent(
            XmlPatterns
                .xmlAttribute(attributeName)
                .withParent(
                    XmlPatterns
                        .xmlTag()
                )
        ).inside(
            XmlPatterns.psiElement(XmlTag.class)
        ).inFile(XmlPatterns.psiFile()
                            .withName(XmlPatterns.string().endsWith(fileName + ".xml")));
}
项目:hybris-integration-intellij-idea-plugin    文件:ValidateContextImpl.java   
@Nullable
private static PsiElement findByLineAndColumn(
    @NotNull final PsiElement file,
    @Nullable final Point columnAndLine
) {
    if (columnAndLine == null) {
        return file;
    }
    final int line = columnAndLine.y - 1;
    final int column = columnAndLine.x - 1;

    PsiElement leaf = findByLineAndColumn(file, line, column);

    if (leaf instanceof PsiWhiteSpace) {
        leaf = PsiTreeUtil.prevVisibleLeaf(leaf);
    }

    final PsiElement tag = leaf instanceof XmlTag ? leaf : PsiTreeUtil.getParentOfType(leaf, XmlTag.class);
    return tag == null ? leaf : tag;
}
项目:Android-Resource-Usage-Count    文件:UsageCountLineProvider.java   
private int findTagUsage(XmlTag element) {
    final FindUsagesHandler handler = FindUsageUtils.getFindUsagesHandler(element, element.getProject());
    if (handler != null) {
        final FindUsagesOptions findUsagesOptions = handler.getFindUsagesOptions();
        final PsiElement[] primaryElements = handler.getPrimaryElements();
        final PsiElement[] secondaryElements = handler.getSecondaryElements();
        Factory factory = new Factory() {
            public UsageSearcher create() {
                return FindUsageUtils.createUsageSearcher(primaryElements, secondaryElements, handler, findUsagesOptions, (PsiFile) null);
            }
        };
        UsageSearcher usageSearcher = (UsageSearcher)factory.create();
        final AtomicInteger mCount = new AtomicInteger(0);
        usageSearcher.generate(new Processor<Usage>() {
            @Override
            public boolean process(Usage usage) {
                if (ResourceUsageCountUtils.isUsefulUsageToCount(usage)) {
                    mCount.incrementAndGet();
                }
                return true;
            }
        });
        return mCount.get();
    }
    return 0;
}
项目:Android-Resource-Usage-Count    文件:ResourceUsageCountUtils.java   
/**
 * valid tag to count
 */
static boolean isTargetTagToCount(PsiElement tag) {
    if (tag == null || !(tag instanceof XmlTag) || TextUtils.isEmpty(((XmlTag)tag).getName())) {
        return false;
    }
    String name = ((XmlTag)tag).getName();
    return name.equals("array")
            || name.equals("attr")
            || name.equals("bool")
            || name.equals("color")
            || name.equals("declare-styleable")
            || name.equals("dimen")
            || name.equals("drawable")
            || name.equals("eat-comment")
            || name.equals("fraction")
            || name.equals("integer")
            || name.equals("integer-array")
            || name.equals("item")
            || name.equals("plurals")
            || name.equals("string")
            || name.equals("string-array")
            || name.equals("style");
}
项目:Android-Resource-Usage-Count    文件:UsageCountLineProvider.java   
private int findTagUsage(XmlTag element) {
    final FindUsagesHandler handler = FindUsageUtils.getFindUsagesHandler(element, element.getProject());
    if (handler != null) {
        final FindUsagesOptions findUsagesOptions = handler.getFindUsagesOptions();
        final PsiElement[] primaryElements = handler.getPrimaryElements();
        final PsiElement[] secondaryElements = handler.getSecondaryElements();
        Factory factory = new Factory() {
            public UsageSearcher create() {
                return FindUsageUtils.createUsageSearcher(primaryElements, secondaryElements, handler, findUsagesOptions, (PsiFile) null);
            }
        };
        UsageSearcher usageSearcher = (UsageSearcher)factory.create();
        final AtomicInteger mCount = new AtomicInteger(0);
        usageSearcher.generate(new Processor<Usage>() {
            @Override
            public boolean process(Usage usage) {
                if (ResourceUsageCountUtils.isUsefulUsageToCount(usage)) {
                    mCount.incrementAndGet();
                }
                return true;
            }
        });
        return mCount.get();
    }
    return 0;
}
项目:Android-Resource-Usage-Count    文件:ResourceUsageCountUtils.java   
/**
 * valid tag to count
 */
static boolean isTargetTagToCount(PsiElement tag) {
    if (tag == null || !(tag instanceof XmlTag) || TextUtils.isEmpty(((XmlTag)tag).getName())) {
        return false;
    }
    String name = ((XmlTag)tag).getName();
    return name.equals("array")
            || name.equals("attr")
            || name.equals("bool")
            || name.equals("color")
            || name.equals("declare-styleable")
            || name.equals("dimen")
            || name.equals("drawable")
            || name.equals("eat-comment")
            || name.equals("fraction")
            || name.equals("integer")
            || name.equals("integer-array")
            || name.equals("item")
            || name.equals("plurals")
            || name.equals("string")
            || name.equals("string-array")
            || name.equals("style");
}
项目:intellij-ce-playground    文件:TreeIncrementalUpdateTest.java   
public void testRemoveAttributeParent() throws Throwable {
  final XmlFile file = (XmlFile)createFile("file.xml", "<?xml version='1.0' encoding='UTF-8'?>\n" +
                                                       "<!DOCTYPE ejb-jar PUBLIC \"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN\" \"http://java.sun.com/dtd/ejb-jar_2_0.dtd\">\n" +
                                                       "<a>\n" +
                                                       " <child-element xxx=\"239\"/>\n" +
                                                       "</a>");
  final DomFileElementImpl<MyElement> fileElement =
    getDomManager().getFileElement(file, MyElement.class, "a");
  myCallRegistry.clear();
  final MyElement rootElement = fileElement.getRootElement();
  final MyElement oldLeaf = rootElement.getChildElements().get(0);
  final GenericAttributeValue<String> xxx = oldLeaf.getXxx();
  final XmlTag oldLeafTag = oldLeaf.getXmlTag();

  new WriteCommandAction(getProject()) {
    @Override
    protected void run(@NotNull Result result) throws Throwable {
      oldLeafTag.delete();
    }
  }.execute();

  assertFalse(oldLeaf.isValid());
  assertFalse(xxx.isValid());
}
项目:dimenify    文件:AbstractDimenAction.java   
protected XmlTag[] getDimenValuesInFile(XmlFile xmlFile) {
    XmlTag[] dimens = null;
    if (xmlFile.getDocument() != null && xmlFile.getDocument().getRootTag() != null) {
        String name = xmlFile.getDocument().getRootTag().getName();

        switch (name) {
            case "xml":
                XmlTag resourcesTag = xmlFile.getDocument().getRootTag().findFirstSubTag("resources");
                if (resourcesTag != null) {
                    dimens = resourcesTag.findSubTags("dimen");
                }
                break;
            case "resources":
                dimens = xmlFile.getDocument().getRootTag().findSubTags("dimen");
                break;

        }
    }
    return dimens;
}
项目:intellij-ce-playground    文件:DomMetaDataContributor.java   
@Override
public void contributeMetaData(MetaDataRegistrar registrar) {
  registrar.registerMetaData(new ElementFilter() {
    @Override
    public boolean isAcceptable(Object element, PsiElement context) {
      if (element instanceof XmlTag) {
        final XmlTag tag = (XmlTag)element;
        final DomElement domElement = DomManager.getDomManager(tag.getProject()).getDomElement(tag);
        if (domElement != null) {
          return domElement.getGenericInfo().getNameDomElement(domElement) != null;
        }
      }
      return false;
    }

    @Override
    public boolean isClassAcceptable(Class hintClass) {
      return XmlTag.class.isAssignableFrom(hintClass);
    }
  }, DomMetaData.class);
}
项目:intellij-ce-playground    文件:DomChildrenTest.java   
public void testUndefineLastFixedChild() throws Throwable {
  new WriteCommandAction.Simple(getProject()) {
    @Override
    protected void run() throws Throwable {
      final MyElement element =
        createElement("<a>" + "<child>1</child>" + "<child attr=\"\">2</child>" + "<child attr=\"\">2</child>" + "</a>");
      final MyElement child = element.getChild();
      final MyElement child2 = element.getChild2();
      child2.undefine();

      myCallRegistry.putExpected(new DomEvent(child2, false));
      myCallRegistry.assertResultsAndClear();

      XmlTag[] subTags = element.getXmlTag().getSubTags();
      assertTrue(child.isValid());
      assertTrue(child2.isValid());
      assertEquals(1, subTags.length);
      assertNull(child2.getXmlTag());

      assertEquals(element, child.getParent());
      assertEquals(element, child2.getParent());
    }
  }.execute().throwException();
}
项目:intellij-ce-playground    文件:DomAttributeXmlDescriptor.java   
static String getQualifiedAttributeName(PsiElement context, XmlName xmlName) {
  final String localName = xmlName.getLocalName();
  if (context instanceof XmlTag) {
    final XmlTag tag = (XmlTag)context;
    final DomInvocationHandler handler = DomManagerImpl.getDomManager(context.getProject()).getDomHandler(tag);
    if (handler != null) {
      final String ns = handler.createEvaluatedXmlName(xmlName).getNamespace(tag, handler.getFile());
      if (!ns.equals(XmlUtil.EMPTY_URI) && !ns.equals(tag.getNamespace())) {
        final String prefix = tag.getPrefixByNamespace(ns);
        if (StringUtil.isNotEmpty(prefix)) {
          return prefix + ":" + localName;
        }
      }
    }
  }

  return localName;
}
项目:intellij-ce-playground    文件:MavenDomUtil.java   
@Nullable
public static XmlTag findTag(@NotNull DomElement domElement, @NotNull String path) {
  List<String> elements = StringUtil.split(path, ".");
  if (elements.isEmpty()) return null;

  Pair<String, Integer> nameAndIndex = translateTagName(elements.get(0));
  String name = nameAndIndex.first;
  Integer index = nameAndIndex.second;

  XmlTag result = domElement.getXmlTag();
  if (result == null || !name.equals(result.getName())) return null;
  result = getIndexedTag(result, index);

  for (String each : elements.subList(1, elements.size())) {
    nameAndIndex = translateTagName(each);
    name = nameAndIndex.first;
    index = nameAndIndex.second;

    result = result.findFirstSubTag(name);
    if (result == null) return null;
    result = getIndexedTag(result, index);
  }
  return result;
}
项目:intellij-ce-playground    文件:DomFileDescription.java   
/**
 * Consider using {@link DomService#getXmlFileHeader(com.intellij.psi.xml.XmlFile)} when implementing this.
 */
@SuppressWarnings({"MethodMayBeStatic"})
@NotNull
public List<String> getAllowedNamespaces(@NotNull String namespaceKey, @NotNull XmlFile file) {
  final NotNullFunction<XmlTag, List<String>> function = myNamespacePolicies.get(namespaceKey);
  if (function instanceof ConstantFunction) {
    return function.fun(null);
  }

  if (function != null) {
    final XmlDocument document = file.getDocument();
    if (document != null) {
      final XmlTag tag = document.getRootTag();
      if (tag != null) {
        return function.fun(tag);
      }
    }
  } else {
    return Collections.singletonList(namespaceKey);
  }
  return Collections.emptyList();
}
项目:intellij-ce-playground    文件:MavenDomGutterAnnotator.java   
@Override
public String getElementText(XmlTag tag) {
  DomElement domElement = DomManager.getDomManager(tag.getProject()).getDomElement(tag);
  if (domElement != null) {
    MavenDomProjectModel model = domElement.getParentOfType(MavenDomProjectModel.class, false);
    if (model != null) {
      MavenProject mavenProject = MavenDomUtil.findProject(model);
      if (mavenProject != null) return mavenProject.getDisplayName();

      String name = model.getName().getStringValue();
      if (!StringUtil.isEmptyOrSpaces(name)) {
        return name;
      }
    }
  }

  return tag.getContainingFile().getName();
}
项目:intellij-ce-playground    文件:XmlTagRuleProviderBase.java   
@Override
public void annotate(@NotNull XmlTag tag, @NotNull ProblemsHolder holder) {
  for (String attributeName : myAttributeNames) {
    if (tag.getAttribute(attributeName) != null) {
      return;
    }
  }

  if (!isClosedTag(tag)) return;

  PsiElement tagNameElement = getTagNameElement(tag);
  if (tagNameElement == null) return;

  LocalQuickFix[] fixes = new LocalQuickFix[myAttributeNames.length];
  for (int i = 0; i < myAttributeNames.length; i++) {
    fixes[i] = XmlQuickFixFactory.getInstance().insertRequiredAttributeFix(tag, myAttributeNames[i]);
  }

  holder.registerProblem(tagNameElement, "Tag should have one of following attributes: " + StringUtil.join(myAttributeNames, ", "),
                         myProblemHighlightType,
                         fixes);
}
项目:intellij-ce-playground    文件:Analyser.java   
private static Set<String> getIds(@Nullable XmlFile psiFile) {
  final Set<String> result = new HashSet<String>();
  if (psiFile == null) {
    return result;
  }
  psiFile.accept(new XmlRecursiveElementVisitor() {
    @Override
    public void visitXmlTag(XmlTag tag) {
      super.visitXmlTag(tag);
      String id = tag.getAttributeValue("id", SdkConstants.ANDROID_URI);
      if (id != null) {
        result.add(id.substring(getPrefix(id).length()));
      }
    }
  });
  return result;
}
项目:intellij-ce-playground    文件:AndroidPsiUtils.java   
/**
 * Get the value of an attribute in the {@link com.intellij.psi.xml.XmlFile} safely (meaning it will acquire the read lock first).
 */
@Nullable
public static String getRootTagAttributeSafely(@NotNull final XmlFile file,
                                               @NotNull final String attribute,
                                               @Nullable final String namespace) {
  Application application = ApplicationManager.getApplication();
  if (!application.isReadAccessAllowed()) {
    return application.runReadAction(new Computable<String>() {
      @Nullable
      @Override
      public String compute() {
        return getRootTagAttributeSafely(file, attribute, namespace);
      }
    });
  } else {
    XmlTag tag = file.getRootTag();
    if (tag != null) {
      XmlAttribute attr = namespace != null ? tag.getAttribute(attribute, namespace) : tag.getAttribute(attribute);
      if (attr != null) {
        return attr.getValue();
      }
    }
    return null;
  }
}
项目:intellij-ce-playground    文件:AndroidFindStyleApplicationsTest.java   
public void testGranular1() throws Exception {
  myFixture.copyFileToProject(BASE_PATH + "1_layout.xml", "res/layout/layout.xml");
  final VirtualFile f = myFixture.copyFileToProject(BASE_PATH + "1.xml", "res/values/styles.xml");
  myFixture.configureFromExistingVirtualFile(f);
  XmlTag tag = PsiTreeUtil.getParentOfType(myFixture.getElementAtCaret(), XmlTag.class);
  AndroidFindStyleApplicationsAction.MyStyleData styleData = AndroidFindStyleApplicationsAction.getStyleData(tag);
  assertNotNull(styleData);
  AndroidFindStyleApplicationsProcessor processor =
    AndroidFindStyleApplicationsAction.createFindStyleApplicationsProcessor(tag, styleData, null);
  processor.configureScope(AndroidFindStyleApplicationsProcessor.MyScope.PROJECT, null);
  Collection<PsiFile> files = processor.collectFilesToProcess();
  assertEquals(1, files.size());
  XmlFile layoutFile = (XmlFile)files.iterator().next();
  assertInstanceOf(DomManager.getDomManager(myFixture.getProject()).getDomFileDescription(
    (XmlFile)layoutFile), LayoutDomFileDescription.class);
  final List<UsageInfo> usages = new ArrayList<UsageInfo>();
  processor.collectPossibleStyleApplications(layoutFile, usages);
  assertEquals(2, usages.size());
}
项目:intellij-ce-playground    文件:DeprecatedClassUsageInspection.java   
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder,
                                      boolean isOnTheFly,
                                      @NotNull LocalInspectionToolSession session) {
  return new XmlElementVisitor() {
    @Override
    public void visitXmlTag(XmlTag tag) {
      if (tag.getValue().getTextElements().length > 0) {
        checkReferences(tag, holder);
      }
    }

    @Override
    public void visitXmlAttributeValue(XmlAttributeValue value) {
      checkReferences(value, holder);
    }
  };
}
项目:intellij-ce-playground    文件:XmlResourceDomFileDescription.java   
@Override
public boolean isMyFile(@NotNull XmlFile file, @Nullable Module module) {
  if (!super.isMyFile(file, module)) {
    return false;
  }
  final XmlTag rootTag = file.getRootTag();

  if (rootTag == null || rootTag.getNamespace().length() > 0) {
    return false;
  }
  for (XmlAttribute attribute : rootTag.getAttributes()) {
    if (attribute.getName().equals("xmlns")) {
      return false;
    }
  }
  return true;
}
项目:intellij-ce-playground    文件:UnwrapTagFix.java   
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
  final PsiElement element = descriptor.getPsiElement();
  if (element != null) {
    final PsiFile containingFile = element.getContainingFile();
    LOG.assertTrue(containingFile != null && JavaFxFileTypeFactory.isFxml(containingFile), containingFile == null ? "no containing file found" : "containing file: " + containingFile.getName());
    final XmlTag xmlTag = PsiTreeUtil.getParentOfType(element, XmlTag.class);
    if (xmlTag != null) {
      final XmlTag parentTag = xmlTag.getParentTag();
      final PsiElement[] children = PsiTreeUtil.getChildrenOfType(xmlTag, XmlTagChild.class);
      if (children != null) {
        if (!FileModificationService.getInstance().preparePsiElementsForWrite(element)) return;
        if (children.length > 0) {
          parentTag.addRange(children[0], children[children.length - 1]);
        }
        xmlTag.delete();
        CodeStyleManager.getInstance(project).reformat(parentTag);
      }
    }
  }
}
项目:intellij-ce-playground    文件:TagNameReference.java   
@Override
public PsiElement resolve() {
  final XmlTag tag = getTagElement();
  final XmlElementDescriptor descriptor = tag != null ? tag.getDescriptor():null;

  if (LOG.isDebugEnabled()) {
    LOG.debug("Descriptor for tag " +
              (tag != null ? tag.getName() : "NULL") +
              " is " +
              (descriptor != null ? (descriptor.toString() + ": " + descriptor.getClass().getCanonicalName()) : "NULL"));
  }

  if (descriptor != null){
    return descriptor instanceof AnyXmlElementDescriptor ? tag : descriptor.getDeclaration();
  }
  return null;
}
项目:intellij-ce-playground    文件:XmlNSDescriptorImpl.java   
public synchronized XmlElementDescriptor[] getSubstitutes(String localName, String namespace) {
  if (!initSubstitutes()) {
    return XmlElementDescriptor.EMPTY_ARRAY;
  }
  Collection<XmlTag> substitutions = mySubstitutions.get(localName);
  if (substitutions.isEmpty()) return XmlElementDescriptor.EMPTY_ARRAY;
  List<XmlElementDescriptor> result = new SmartList<XmlElementDescriptor>();
  for (XmlTag tag : substitutions) {
    final String substAttr = tag.getAttributeValue("substitutionGroup");
    if (substAttr != null && checkElementNameEquivalence(localName, namespace, substAttr, tag)) {
      result.add(createElementDescriptor(tag));
    }
  }

  return result.toArray(new XmlElementDescriptor[result.size()]);
}
项目:intellij-ce-playground    文件:XmlSchemaTest.java   
public void testAttributeDescriptor3() throws Exception {
  XmlNSDescriptor NSDescriptor = createDescriptor(
      "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
      "<xsd:element name=\"purchaseOrder\" type=\"PurchaseOrderType\"/>" +
      "<xsd:complexType name=\"PurchaseOrderType\">" +
      "   <xsd:attribute name=\"orderDate\" type=\"xsd:date\" fixed=\"1 01 2001\"/>" +
      "</xsd:complexType>" +
      "</xsd:schema>");

  final XmlTag tag = XmlTestUtil.tag("purchaseOrder", getProject());
  XmlElementDescriptor elementDescriptor = NSDescriptor.getElementDescriptor(tag);
  XmlAttributeDescriptor attribute = elementDescriptor.getAttributeDescriptor("orderDate", tag);

  assertTrue(!attribute.isEnumerated());
  assertTrue(attribute.isFixed());
  assertTrue(!attribute.isRequired());
  assertEquals("1 01 2001", attribute.getDefaultValue());
}
项目:intellij-ce-playground    文件:CreateXmlElementIntentionAction.java   
@Override
public boolean isAvailable(@NotNull final Project project, final Editor editor, final PsiFile file) {
  if (!myIsAvailableEvaluated) {
    final XmlTag tag = PsiTreeUtil.getParentOfType(myRef.getElement(), XmlTag.class);
    if (tag != null) {
      final XmlNSDescriptorImpl descriptor = myRef.getDescriptor(tag, myRef.getCanonicalText());

      if (descriptor != null &&
          descriptor.getDescriptorFile() != null &&
          descriptor.getDescriptorFile().isWritable()
         ) {
        myTargetFile = descriptor.getDescriptorFile();
      }
    }
    myIsAvailableEvaluated = true;
  }
  return myTargetFile != null;
}
项目:mule-intellij-plugins    文件:MuleSchemaUtils.java   
public static void insertSchemaLocationLookup(XmlFile xmlFile, String namespace, String locationLookup) {
    final XmlTag rootTag = xmlFile.getRootTag();
    if (rootTag == null)
        return;
    final XmlAttribute attribute = rootTag.getAttribute("xsi:schemaLocation", HTTP_WWW_W3_ORG_2001_XMLSCHEMA);
    if (attribute != null) {
        final String value = attribute.getValue();
        attribute.setValue(value + "\n\t\t\t" + namespace + " " + locationLookup);
    } else {
        final XmlElementFactory elementFactory = XmlElementFactory.getInstance(xmlFile.getProject());
        final XmlAttribute schemaLocation = elementFactory.createXmlAttribute("xsi:schemaLocation", XmlUtil.XML_SCHEMA_INSTANCE_URI);
        schemaLocation.setValue(namespace + " " + locationLookup);
        rootTag.add(schemaLocation);
    }

}
项目:intellij-ce-playground    文件:ConvertIfToChooseIntention.java   
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
    if (!XsltSupport.isXsltFile(file)) return false;

    final int offset = editor.getCaretModel().getOffset();
    final PsiElement element = file.findElementAt(offset);
    if (element == null) return false;
    final XmlTag tag = PsiTreeUtil.getParentOfType(element, XmlTag.class);
    if (tag == null || tag.getParentTag() == null) return false;
    if (!tag.getLocalName().equals("if") || !XsltSupport.isXsltTag(tag)) return false;
    if (tag.getAttributeValue("test") == null) return false;

    final ASTNode node = tag.getNode();
    if (node == null) return false;

    final ASTNode child = XmlChildRole.START_TAG_NAME_FINDER.findChild(node);
    return child != null && child.getTextRange().contains(offset);
}
项目:intellij-ce-playground    文件:RenderedViewHierarchy.java   
@Nullable
public List<RenderedView> findViewsByTag(@NotNull XmlTag tag) {
  List<RenderedView> result = null;
  for (RenderedView view : myRoots) {
    List<RenderedView> matches = view.findViewsByTag(tag);
    if (matches != null) {
      if (result != null) {
        result.addAll(matches);
      } else {
        result = matches;
      }
    }
  }

  return result;
}
项目:intellij-ce-playground    文件:AntDomProject.java   
@NotNull
public final ClassLoader getClassLoader() {
  ClassLoader loader = myClassLoader;
  if (loader == null) {
    final XmlTag tag = getXmlTag();
    final PsiFile containingFile = tag.getContainingFile();
    final AntBuildFileImpl buildFile = (AntBuildFileImpl)AntConfigurationBase.getInstance(containingFile.getProject()).getAntBuildFile(containingFile);
    if (buildFile != null) {
      loader = buildFile.getClassLoader();
    }
    else {
      AntInstallation antInstallation = getAntInstallation();
      loader = antInstallation.getClassLoader();
    }
    myClassLoader = loader;
  }
  return loader;
}
项目:intellij-ce-playground    文件:XMLExternalAnnotator.java   
public static void addMessageWithFixes(final PsiElement context,
                                       final String message,
                                       @NotNull final Validator.ValidationHost.ErrorType type,
                                       AnnotationHolder myHolder,
                                       @NotNull final IntentionAction... fixes) {
  if (message != null && !message.isEmpty()) {
    if (context instanceof XmlTag) {
      addMessagesForTag((XmlTag)context, message, type, myHolder, fixes);
    }
    else {
      if (type == Validator.ValidationHost.ErrorType.ERROR) {
        appendFixes(myHolder.createErrorAnnotation(context, message), fixes);
      }
      else {
        appendFixes(myHolder.createWarningAnnotation(context, message), fixes);
      }
    }
  }
}