Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Tree - ajouter un élément à un arbre rdf

Envoyé par : Gregco

Date : 03/07/2007 14:02

Bonjour,

J'ai un problème technique et j'ai besoin de vos lumières encore une fois pour une broutille. J'essaie d'ajouter une ligne à mon arbre.

Mon script ajoute une ligne au fichier rdf via un nsIFileOutputStream et un nsIConverterOutputStream. Voici la suite du script

/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       Commentaire
       Quand le fichier rdf n'est pas vide, arbre.view est créé. Si le fichier rdf ne contient pas de "row"
	   alors arbre.view return null et n'est pas créé
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
	*/
if(arbre.view!=null)
	{
		nouvellebranche = document.createElement("treeitem")
		nouvellebranche.appendChild(document.createElement("treerow"));
		nouvellebranche.childNodes[0].appendChild(document.createElement("treecell"));
		nouvellebranche.childNodes[0].appendChild(document.createElement("treecell"));
		nouvellebranche.childNodes[0].appendChild(document.createElement("treecell"));
		nouvellebranche.childNodes[0].appendChild(document.createElement("treecell"));
		nouvellebranche.childNodes[0].childNodes[0].setAttribute("label", "0");
		nouvellebranche.childNodes[0].childNodes[1].setAttribute("label", "Description2");
		nouvellebranche.childNodes[0].childNodes[2].setAttribute("label", "xxx.xxx.xxx.xxx");
		nouvellebranche.childNodes[0].childNodes[3].setAttribute("label", "0");
		
		if(arbre.view.rowCount!=0)
		{
			//Quand il y a plusieurs lignes dans le TreeViewContent, on ajoute simplement via DOM la branche au treeViewContent
			arbre.view.getItemAtIndex(0).parentNode.appendChild(nouvellebranche);
		}
		else
		{
			//problème ici
			//on entre dans cette condition si arbre.view a été créé par le constructeur mais qu'on a supprimé toutes les lignes
			//on ne peut pas obtenir d'élément pour faire un appendChild car il n'y a plus de ligne dans le tree.
			//arbre.view.appendChild(nouvellebrache) return une erreur... 
			//arbre.builder.refresh() ne change recharge rien... BUG???
		}
	}
	else
	{
		//on entre dans cette condition si arbre.view n'a pas été créé à la construction. Puisque le fichier rdf a été
		//modifié et une ligne ajoutée dans le code plus haut, on refresh et la nouvelle ligne s'affiche
		arbre.builder.refresh();
	}

Mon problème ce situe dans la condition où il est écrit "problème ici". Comme vous l'avez remarqué un peu plus haut, je peux ajouter "nouvellebranche" via DOM si j'arrive à séléctionner une ligne grace à "getItemAtIndex(0)" mais si il n'y a pas de ligne, je ne sais pas comment faire.

J'ai fouillé dans la doc TreeContentView . la seul méthode que je peux utilisé pour obtenir un élément (et faire un appendChild)est "getItemAtIndex" qui n'est pas possible dans mon cas...

Merci d'avance pour vos interventions Greg

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.