xref: /trunk/main/xmlsecurity/tools/uno/DomToTreeModelAdapter.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package com.sun.star.xml.security.uno;
29 
30 import org.w3c.dom.Document;
31 import javax.swing.event.TreeModelListener;
32 import javax.swing.event.TreeModelEvent;
33 import javax.swing.tree.TreePath;
34 import java.util.Enumeration;
35 import java.util.Vector;
36 
37 /*
38  * This adapter converts the current Document (a DOM) into
39  * a JTree model.
40  */
41 class DomToTreeModelAdapter
42     implements javax.swing.tree.TreeModel
43 {
44     private Document m_document;
45     private Vector m_listenerList = new Vector();
46 
47     public DomToTreeModelAdapter(Document document)
48     {
49         m_document = document;
50     }
51 
52     /*
53      * Basic TreeModel operations
54      */
55     public Object  getRoot()
56     {
57         return new AdapterNode(m_document);
58     }
59 
60     public boolean isLeaf(Object aNode)
61     {
62         boolean rc = true;
63 
64         /*
65          * Determines whether the icon shows up to the left.
66          * Return true for any node with no children.
67          */
68         AdapterNode node = (AdapterNode) aNode;
69 
70         if (node.childCount() > 0)
71         {
72             rc = false;
73         }
74 
75         return rc;
76     }
77 
78     public int getChildCount(Object parent)
79     {
80         AdapterNode node = (AdapterNode) parent;
81         return node.childCount();
82     }
83 
84     public Object getChild(Object parent, int index)
85     {
86         AdapterNode node = (AdapterNode) parent;
87         return node.child(index);
88     }
89 
90     public int getIndexOfChild(Object parent, Object child)
91     {
92         AdapterNode node = (AdapterNode) parent;
93         return node.index((AdapterNode) child);
94     }
95 
96     public void valueForPathChanged(TreePath path, Object newValue)
97     {
98         /*
99          * Null. We won't be making changes in the GUI
100          * If we did, we would ensure the new value was really new,
101          * adjust the model, and then fire a TreeNodesChanged event.
102          */
103     }
104 
105     public void addTreeModelListener(TreeModelListener listener)
106     {
107         if ( listener != null
108             && ! m_listenerList.contains( listener ) )
109         {
110             m_listenerList.addElement( listener );
111         }
112     }
113 
114     public void removeTreeModelListener(TreeModelListener listener)
115     {
116         if ( listener != null )
117         {
118             m_listenerList.removeElement( listener );
119         }
120     }
121 
122     public void fireTreeNodesChanged( TreeModelEvent e )
123     {
124         Enumeration listeners = m_listenerList.elements();
125         while ( listeners.hasMoreElements() )
126         {
127             TreeModelListener listener =
128             (TreeModelListener) listeners.nextElement();
129             listener.treeNodesChanged( e );
130         }
131     }
132 
133     public void fireTreeNodesInserted( TreeModelEvent e )
134     {
135         Enumeration listeners = m_listenerList.elements();
136         while ( listeners.hasMoreElements() )
137         {
138             TreeModelListener listener =
139             (TreeModelListener) listeners.nextElement();
140             listener.treeNodesInserted( e );
141         }
142     }
143 
144     public void fireTreeNodesRemoved( TreeModelEvent e )
145     {
146         Enumeration listeners = m_listenerList.elements();
147         while ( listeners.hasMoreElements() )
148         {
149             TreeModelListener listener =
150             (TreeModelListener) listeners.nextElement();
151             listener.treeNodesRemoved( e );
152         }
153     }
154 
155     public void fireTreeStructureChanged( TreeModelEvent e )
156     {
157         Enumeration listeners = m_listenerList.elements();
158         while ( listeners.hasMoreElements() )
159         {
160             TreeModelListener listener =
161             (TreeModelListener) listeners.nextElement();
162             listener.treeStructureChanged( e );
163         }
164     }
165 }
166 
167