JEphem Informatic Trail Source code DOMTreeModel.java
//*********************************************************************************
//		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