//*********************************************************************************
// CLASS: jetheme.util.tree.DOMTreeModel.java
//*********************************************************************************
package tig.util.tree;
import tig.util.*;
import java.io.*;
import javax.xml.parsers.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import javax.swing.*;
import org.w3c.dom.*;
import org.xml.sax.*;
/**********************************************************************************
Implémentation de javax.swing.tree.TreeModel pouvant gérer des jetheme.util.tree.DOMTreeNode.
@author Thierry Graff
07/08/2000 : création
**********************************************************************************/
public class DOMTreeModel implements TreeModel{
//**********************************************************
// FIELDS
//**********************************************************
private org.w3c.dom.Document myDOMDoc;
//*********************************** Constructeur ******************************
/***************************************************************************
Constructeur spécifiant le org.w3c.dom.Document servant à construire l'arbre
@param theDOMDoc Document DOM servant à construire l'arbre
***************************************************************************/
public DOMTreeModel(org.w3c.dom.Document theDOMDoc){
this.myDOMDoc=theDOMDoc;
}//fin DOMTreeModel(org.w3c.dom.Document)
//*********************************************************************************
//********************** Implémentation de TreeModel ******************************
//*********************************************************************************
//**************************************
public Object getRoot(){
return new DOMTreeNode(myDOMDoc);
}// fin getRoot
//**************************************
public boolean isLeaf(Object objectNode) {
DOMTreeNode dtNode = (DOMTreeNode)objectNode;
if (dtNode.getChildCount() > 0)
return false;
else
return true;
}// fin isLeaf
//**************************************
public int getChildCount(Object objectNode) {
DOMTreeNode dtNode = (DOMTreeNode)objectNode;
int count = 0;
for (int i=0; i<dtNode.getChildCount(); i++)
count++;
return count;
}// fin getChildCount
//**************************************
public Object getChild(Object objectNode, int index) {
DOMTreeNode dtNode = (DOMTreeNode)objectNode;
return dtNode.getChild(index);
}//fin getChild
//**************************************
public int getIndexOfChild(Object objectNode, Object objectChild) {
DOMTreeNode dtNode = (DOMTreeNode) objectNode;
return dtNode.getIndexOfChild((DOMTreeNode)objectChild);
}//fin getIndexOfChild
//**************************************
public void valueForPathChanged(TreePath path, Object newValue) {
}//fin valueForPathChanged
//**************************************
public void addTreeModelListener( TreeModelListener listener ) {
}//fin addTreeModelListener
//**************************************
public void removeTreeModelListener( TreeModelListener listener ) {
}//fin removeTreeModelListener
//****************************** XMLFile2JTree *****************************
/***************************************************************************
Construit un arbre DOM à partir d'un fichier XML et le transfère dans un JTree.
Point d'entrée de la classe DOMTreeModel.
<LI>A partir de theXMLFile, construit un org.w3c.dom.Document.</LI>
<LI>Parse ce Document.</LI>
<LI>Utilise ce Document pour construire un DOMTreeModel.</LI>
<LI>Associe ce DOMTreeModel au JTree.</LI>
@param theXMLFile : fichier XML
@param theJTree : JTree auquel est associé le modèle.
*****************************************************************************/
public static void XMLFile2JTree(File theXMLFile, JTree theJTree){
String erreurMsg;
// Initialisation du DOM
try {
org.w3c.dom.Document theDocument;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
theDocument = builder.parse(theXMLFile);
//theDocument.getDocumentElement().normalize();
theJTree.setModel (new DOMTreeModel(theDocument));
}
catch (FactoryConfigurationError fce){ // pour newInstance()
Util.message("FactoryConfigurationError");
}
catch (ParserConfigurationException pce){ // pour newDocumentBuilder()
Util.message("ParserConfigurationException");
}
catch (SAXParseException spe){ //pour parse()
erreurMsg = "SAXParseException :\n" + spe.getSystemId() + " - Line nb " + spe.getLineNumber() + " : \n" + spe.getMessage();
// Contained Exception
Exception x=spe.getException();
if (x!=null)
erreurMsg.concat("\n\nContained Exception : " + x.getClass().getName() + "\n" + x.getMessage());
Util.message(erreurMsg);
}
catch (SAXException sxe){ //pour parse()
Util.message("SAXException");
}
catch (IllegalArgumentException iae){ //pour parse()
Util.message("IllegalArgumentException");
}
catch (IOException ioe){
Util.message("IOException");
}
}//fin XMLFile2JTree(File theXMLFile, JTree theJTree)
} //fin public class DOMTreeModel