1*db859879SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*db859879SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*db859879SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*db859879SAndrew Rist * distributed with this work for additional information 6*db859879SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*db859879SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*db859879SAndrew Rist * "License"); you may not use this file except in compliance 9*db859879SAndrew Rist * with the License. You may obtain a copy of the License at 10*db859879SAndrew Rist * 11*db859879SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*db859879SAndrew Rist * 13*db859879SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*db859879SAndrew Rist * software distributed under the License is distributed on an 15*db859879SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*db859879SAndrew Rist * KIND, either express or implied. See the License for the 17*db859879SAndrew Rist * specific language governing permissions and limitations 18*db859879SAndrew Rist * under the License. 19*db859879SAndrew Rist * 20*db859879SAndrew Rist *************************************************************/ 21*db859879SAndrew Rist 22*db859879SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package com.sun.star.xml.security.uno; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import org.w3c.dom.Document; 27cdf0e10cSrcweir import javax.swing.event.TreeModelListener; 28cdf0e10cSrcweir import javax.swing.event.TreeModelEvent; 29cdf0e10cSrcweir import javax.swing.tree.TreePath; 30cdf0e10cSrcweir import java.util.Enumeration; 31cdf0e10cSrcweir import java.util.Vector; 32cdf0e10cSrcweir 33cdf0e10cSrcweir /* 34cdf0e10cSrcweir * This adapter converts the current Document (a DOM) into 35cdf0e10cSrcweir * a JTree model. 36cdf0e10cSrcweir */ 37cdf0e10cSrcweir class DomToTreeModelAdapter 38cdf0e10cSrcweir implements javax.swing.tree.TreeModel 39cdf0e10cSrcweir { 40cdf0e10cSrcweir private Document m_document; 41cdf0e10cSrcweir private Vector m_listenerList = new Vector(); 42cdf0e10cSrcweir DomToTreeModelAdapter(Document document)43cdf0e10cSrcweir public DomToTreeModelAdapter(Document document) 44cdf0e10cSrcweir { 45cdf0e10cSrcweir m_document = document; 46cdf0e10cSrcweir } 47cdf0e10cSrcweir 48cdf0e10cSrcweir /* 49cdf0e10cSrcweir * Basic TreeModel operations 50cdf0e10cSrcweir */ getRoot()51cdf0e10cSrcweir public Object getRoot() 52cdf0e10cSrcweir { 53cdf0e10cSrcweir return new AdapterNode(m_document); 54cdf0e10cSrcweir } 55cdf0e10cSrcweir isLeaf(Object aNode)56cdf0e10cSrcweir public boolean isLeaf(Object aNode) 57cdf0e10cSrcweir { 58cdf0e10cSrcweir boolean rc = true; 59cdf0e10cSrcweir 60cdf0e10cSrcweir /* 61cdf0e10cSrcweir * Determines whether the icon shows up to the left. 62cdf0e10cSrcweir * Return true for any node with no children. 63cdf0e10cSrcweir */ 64cdf0e10cSrcweir AdapterNode node = (AdapterNode) aNode; 65cdf0e10cSrcweir 66cdf0e10cSrcweir if (node.childCount() > 0) 67cdf0e10cSrcweir { 68cdf0e10cSrcweir rc = false; 69cdf0e10cSrcweir } 70cdf0e10cSrcweir 71cdf0e10cSrcweir return rc; 72cdf0e10cSrcweir } 73cdf0e10cSrcweir getChildCount(Object parent)74cdf0e10cSrcweir public int getChildCount(Object parent) 75cdf0e10cSrcweir { 76cdf0e10cSrcweir AdapterNode node = (AdapterNode) parent; 77cdf0e10cSrcweir return node.childCount(); 78cdf0e10cSrcweir } 79cdf0e10cSrcweir getChild(Object parent, int index)80cdf0e10cSrcweir public Object getChild(Object parent, int index) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir AdapterNode node = (AdapterNode) parent; 83cdf0e10cSrcweir return node.child(index); 84cdf0e10cSrcweir } 85cdf0e10cSrcweir getIndexOfChild(Object parent, Object child)86cdf0e10cSrcweir public int getIndexOfChild(Object parent, Object child) 87cdf0e10cSrcweir { 88cdf0e10cSrcweir AdapterNode node = (AdapterNode) parent; 89cdf0e10cSrcweir return node.index((AdapterNode) child); 90cdf0e10cSrcweir } 91cdf0e10cSrcweir valueForPathChanged(TreePath path, Object newValue)92cdf0e10cSrcweir public void valueForPathChanged(TreePath path, Object newValue) 93cdf0e10cSrcweir { 94cdf0e10cSrcweir /* 95cdf0e10cSrcweir * Null. We won't be making changes in the GUI 96cdf0e10cSrcweir * If we did, we would ensure the new value was really new, 97cdf0e10cSrcweir * adjust the model, and then fire a TreeNodesChanged event. 98cdf0e10cSrcweir */ 99cdf0e10cSrcweir } 100cdf0e10cSrcweir addTreeModelListener(TreeModelListener listener)101cdf0e10cSrcweir public void addTreeModelListener(TreeModelListener listener) 102cdf0e10cSrcweir { 103cdf0e10cSrcweir if ( listener != null 104cdf0e10cSrcweir && ! m_listenerList.contains( listener ) ) 105cdf0e10cSrcweir { 106cdf0e10cSrcweir m_listenerList.addElement( listener ); 107cdf0e10cSrcweir } 108cdf0e10cSrcweir } 109cdf0e10cSrcweir removeTreeModelListener(TreeModelListener listener)110cdf0e10cSrcweir public void removeTreeModelListener(TreeModelListener listener) 111cdf0e10cSrcweir { 112cdf0e10cSrcweir if ( listener != null ) 113cdf0e10cSrcweir { 114cdf0e10cSrcweir m_listenerList.removeElement( listener ); 115cdf0e10cSrcweir } 116cdf0e10cSrcweir } 117cdf0e10cSrcweir fireTreeNodesChanged( TreeModelEvent e )118cdf0e10cSrcweir public void fireTreeNodesChanged( TreeModelEvent e ) 119cdf0e10cSrcweir { 120cdf0e10cSrcweir Enumeration listeners = m_listenerList.elements(); 121cdf0e10cSrcweir while ( listeners.hasMoreElements() ) 122cdf0e10cSrcweir { 123cdf0e10cSrcweir TreeModelListener listener = 124cdf0e10cSrcweir (TreeModelListener) listeners.nextElement(); 125cdf0e10cSrcweir listener.treeNodesChanged( e ); 126cdf0e10cSrcweir } 127cdf0e10cSrcweir } 128cdf0e10cSrcweir fireTreeNodesInserted( TreeModelEvent e )129cdf0e10cSrcweir public void fireTreeNodesInserted( TreeModelEvent e ) 130cdf0e10cSrcweir { 131cdf0e10cSrcweir Enumeration listeners = m_listenerList.elements(); 132cdf0e10cSrcweir while ( listeners.hasMoreElements() ) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir TreeModelListener listener = 135cdf0e10cSrcweir (TreeModelListener) listeners.nextElement(); 136cdf0e10cSrcweir listener.treeNodesInserted( e ); 137cdf0e10cSrcweir } 138cdf0e10cSrcweir } 139cdf0e10cSrcweir fireTreeNodesRemoved( TreeModelEvent e )140cdf0e10cSrcweir public void fireTreeNodesRemoved( TreeModelEvent e ) 141cdf0e10cSrcweir { 142cdf0e10cSrcweir Enumeration listeners = m_listenerList.elements(); 143cdf0e10cSrcweir while ( listeners.hasMoreElements() ) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir TreeModelListener listener = 146cdf0e10cSrcweir (TreeModelListener) listeners.nextElement(); 147cdf0e10cSrcweir listener.treeNodesRemoved( e ); 148cdf0e10cSrcweir } 149cdf0e10cSrcweir } 150cdf0e10cSrcweir fireTreeStructureChanged( TreeModelEvent e )151cdf0e10cSrcweir public void fireTreeStructureChanged( TreeModelEvent e ) 152cdf0e10cSrcweir { 153cdf0e10cSrcweir Enumeration listeners = m_listenerList.elements(); 154cdf0e10cSrcweir while ( listeners.hasMoreElements() ) 155cdf0e10cSrcweir { 156cdf0e10cSrcweir TreeModelListener listener = 157cdf0e10cSrcweir (TreeModelListener) listeners.nextElement(); 158cdf0e10cSrcweir listener.treeStructureChanged( e ); 159cdf0e10cSrcweir } 160cdf0e10cSrcweir } 161cdf0e10cSrcweir } 162cdf0e10cSrcweir 163