/* GNU GENERAL LICENSE Copyright (C) 2006 The Lobo Project. Copyright (C) 2014 - 2017 Lobo Evolution This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either verion 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General License for more details. You should have received a copy of the GNU General Public along with this program. If not, see <http://www.gnu.org/licenses/>. Contact info: lobochief@users.sourceforge.net; ivan.difrancesco@yahoo.it */ /* * Created on Oct 22, 2005 */ package org.lobobrowser.html.test; import javax.swing.event.TreeModelListener; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * The Class NodeTreeModel. */ public class NodeTreeModel implements TreeModel { /** The root node. */ private final Node rootNode; /** * Instantiates a new node tree model. * * @param node * the node */ public NodeTreeModel(Node node) { super(); rootNode = node; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeModel#getRoot() */ @Override public Object getRoot() { return this.rootNode; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int) */ @Override public Object getChild(Object parent, int index) { Node parentNode = (Node) parent; return parentNode == null ? null : parentNode.getChildNodes().item(index); } /* * (non-Javadoc) * * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object) */ @Override public int getChildCount(Object parent) { Node parentNode = (Node) parent; return parentNode == null ? 0 : parentNode.getChildNodes().getLength(); } /* * (non-Javadoc) * * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object) */ @Override public boolean isLeaf(Object node) { if (node == this.rootNode) { return false; } Node domNode = (Node) node; return domNode == null ? true : domNode.getChildNodes().getLength() == 0; } /* * (non-Javadoc) * * @see * javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, * java.lang.Object) */ @Override public void valueForPathChanged(TreePath path, Object newValue) { } /* * (non-Javadoc) * * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, * java.lang.Object) */ @Override public int getIndexOfChild(Object parent, Object child) { Node parentNode = (Node) parent; NodeList nodeList = parentNode == null ? null : parentNode.getChildNodes(); if (nodeList == null) { return -1; } int length = nodeList.getLength(); for (int i = 0; i < length; i++) { if (nodeList.item(i) == child) { return i; } } return -1; } /* * (non-Javadoc) * * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event. * TreeModelListener) */ @Override public void addTreeModelListener(TreeModelListener l) { // nop } /* * (non-Javadoc) * * @see * javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event. * TreeModelListener) */ @Override public void removeTreeModelListener(TreeModelListener l) { // nop } }