1 package com
.intellij
.util
.xml
.tree
;
3 import jetbrains
.fabrique
.ui
.treeStructure
.SimpleNode
;
4 import com
.intellij
.openapi
.util
.text
.StringUtil
;
5 import com
.intellij
.openapi
.diagnostic
.Logger
;
6 import com
.intellij
.ui
.SimpleTextAttributes
;
7 import com
.intellij
.util
.xml
.DomElement
;
9 import java
.lang
.reflect
.Method
;
10 import java
.util
.List
;
11 import java
.util
.ArrayList
;
14 public class DomElementsGroupNode
extends AbstractDomElementNode
{
15 Logger LOG
= Logger
.getInstance(DomModelTreeStructure
.class.getName());
17 private DomElement myModelElement
;
18 private Method myMethod
;
19 private String myChildrenTagName
;
21 public DomElementsGroupNode(final DomElement modelElement
, Method method
) {
22 myModelElement
= modelElement
;
25 myChildrenTagName
= modelElement
.getMethodsInfo().getTagName(method
);
28 public SimpleNode
[] getChildren() {
29 if (!myModelElement
.isValid()) return NO_CHILDREN
;
30 List
<SimpleNode
> children
= new ArrayList();
32 final List
<?
extends DomElement
> objects
= (List
<?
extends DomElement
>)myMethod
.invoke(myModelElement
, new Object
[0]);
33 for (DomElement domElement
: objects
) {
34 children
.add(getDomElementNode(domElement
, myChildrenTagName
, this));
40 return children
.toArray(new SimpleNode
[children
.size()]);
43 public Object
[] getEqualityObjects() {
47 protected boolean doUpdate() {
48 setUniformIcon(getNodeIcon());
51 addColoredFragment(getNodeName(), new SimpleTextAttributes(Font
.BOLD
, Color
.black
));
52 final int childrenCount
= getChildren().length
;
53 addColoredFragment(" (" + childrenCount
+ ')', new SimpleTextAttributes(Font
.ITALIC
, Color
.gray
));
55 return super.doUpdate();
58 public String
getNodeName() {
59 return getPropertyName(StringUtil
.pluralize(myChildrenTagName
));
62 public String
getTagName() {
63 return myChildrenTagName
;