2 * Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved.
4 package com
.intellij
.patterns
;
6 import com
.intellij
.psi
.xml
.XmlAttribute
;
7 import com
.intellij
.psi
.xml
.XmlElement
;
8 import com
.intellij
.psi
.xml
.XmlTag
;
9 import com
.intellij
.util
.xml
.DomElement
;
10 import com
.intellij
.util
.xml
.DomManager
;
11 import org
.jetbrains
.annotations
.NotNull
;
16 public class DomPatterns
{
18 public static <T
extends DomElement
> DomElementPattern
.Capture
<T
> domElement(Class
<T
> aClass
) {
19 return new DomElementPattern
.Capture
<T
>(aClass
);
22 public static DomElementPattern
.Capture
<DomElement
> domElement() {
23 return domElement(DomElement
.class);
26 public static GenericDomValuePattern
<?
> genericDomValue() {
27 return new GenericDomValuePattern();
30 public static <T
> GenericDomValuePattern
<T
> genericDomValue(ElementPattern valuePattern
) {
31 return ((GenericDomValuePattern
)genericDomValue()).withValue(valuePattern
);
34 public static <T
> GenericDomValuePattern
<T
> genericDomValue(Class
<T
> aClass
) {
35 return new GenericDomValuePattern
<T
>(aClass
);
38 public static XmlElementPattern
.Capture
withDom(final ElementPattern pattern
) {
39 return new XmlElementPattern
.Capture().with(new PatternCondition
<XmlElement
>() {
40 public boolean accepts(@NotNull final XmlElement xmlElement
, final MatchingContext matchingContext
, @NotNull final TraverseContext traverseContext
) {
41 final DomManager manager
= DomManager
.getDomManager(xmlElement
.getProject());
42 if (xmlElement
instanceof XmlAttribute
) {
43 return pattern
.accepts(manager
.getDomElement((XmlAttribute
)xmlElement
), matchingContext
, traverseContext
);
45 if (xmlElement
instanceof XmlTag
) {
46 return pattern
.accepts(manager
.getDomElement((XmlTag
)xmlElement
), matchingContext
, traverseContext
);