1 package com
.intellij
.util
.xml
.tree
;
3 import com
.intellij
.openapi
.actionSystem
.*;
4 import com
.intellij
.openapi
.util
.IconLoader
;
5 import com
.intellij
.ui
.components
.panels
.Wrapper
;
6 import com
.intellij
.util
.ui
.tree
.TreeUtil
;
7 import com
.intellij
.util
.xml
.DomElement
;
8 import com
.intellij
.util
.xml
.DomEventListener
;
9 import com
.intellij
.util
.xml
.DomManager
;
10 import com
.intellij
.util
.xml
.events
.DomEvent
;
11 import jetbrains
.fabrique
.ui
.treeStructure
.SimpleTree
;
12 import jetbrains
.fabrique
.ui
.treeStructure
.SimpleTreeBuilder
;
13 import jetbrains
.fabrique
.ui
.treeStructure
.SimpleTreeStructure
;
14 import jetbrains
.fabrique
.ui
.treeStructure
.WeightBasedComparator
;
15 import jetbrains
.fabrique
.ui
.treeStructure
.actions
.CollapseAllAction
;
16 import jetbrains
.fabrique
.ui
.treeStructure
.actions
.ExpandAllAction
;
19 import javax
.swing
.tree
.DefaultMutableTreeNode
;
20 import javax
.swing
.tree
.DefaultTreeModel
;
24 public class DomModelTreeView
extends Wrapper
{
25 private final SimpleTree myTree
;
26 private final SimpleTreeBuilder myBuilder
;
27 private DomManager myDomManager
;
28 private DomEventListener myDomEventListener
;
29 private DomElement myRootElement
;
31 public DomModelTreeView(DomElement rootElement
) {
32 myRootElement
= rootElement
;
33 myTree
= new SimpleTree(new DefaultTreeModel(new DefaultMutableTreeNode()));
34 myTree
.setRootVisible(false);
35 myTree
.setShowsRootHandles(true);
37 ToolTipManager
.sharedInstance().registerComponent(myTree
);
38 TreeUtil
.installActions(myTree
);
40 final SimpleTreeStructure treeStructure
= rootElement
!= null ?
getTreeStructure(rootElement
) : new SimpleTreeStructure() {
41 public Object
getRootElement() {
46 myBuilder
= new SimpleTreeBuilder(myTree
, (DefaultTreeModel
)myTree
.getModel(), treeStructure
, WeightBasedComparator
.INSTANCE
);
47 myBuilder
.setNodeDescriptorComparator(null);
50 add(myTree
, BorderLayout
.CENTER
);
52 myDomEventListener
= new DomEventListener() {
53 public void eventOccured(DomEvent event
) {
54 myBuilder
.updateFromRoot(true);
57 myDomManager
= rootElement
.getManager();
58 myDomManager
.addDomEventListener(myDomEventListener
);
61 public DomElement
getRootElement() {
65 protected SimpleTreeStructure
getTreeStructure(final DomElement rootDomElement
) {
66 return new DomModelTreeStructure(rootDomElement
.getRoot());
69 public SimpleTreeBuilder
getBuilder() {
73 public void dispose() {
74 myDomManager
.removeDomEventListener(myDomEventListener
);
77 public SimpleTree
getTree() {