faces tree presentations
[fedora-idea.git] / source / com / intellij / util / xml / tree / DomModelTreeView.java
blob08d256c960c8266bfeb66ddbe9b3086d6152018e
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;
18 import javax.swing.*;
19 import javax.swing.tree.DefaultMutableTreeNode;
20 import javax.swing.tree.DefaultTreeModel;
21 import java.awt.*;
22 import java.util.Map;
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() {
42 return null;
46 myBuilder = new SimpleTreeBuilder(myTree, (DefaultTreeModel)myTree.getModel(), treeStructure, WeightBasedComparator.INSTANCE);
47 myBuilder.setNodeDescriptorComparator(null);
48 myBuilder.initRoot();
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() {
62 return myRootElement;
65 protected SimpleTreeStructure getTreeStructure(final DomElement rootDomElement) {
66 return new DomModelTreeStructure(rootDomElement.getRoot());
69 public SimpleTreeBuilder getBuilder() {
70 return myBuilder;
73 public void dispose() {
74 myDomManager.removeDomEventListener(myDomEventListener);
77 public SimpleTree getTree() {
78 return myTree;