/* Exemple de création d'un nouvel élément Jaxe: élément booléen affiché avec une boîte à cocher compilation: javac -classpath .:Jaxe.jar -encoding ISO-8859-1 JEBooleen.java */ import jaxe.JaxeDocument; import jaxe.JaxeElement; import java.awt.event.*; import javax.swing.JCheckBox; import javax.swing.text.Position; import org.w3c.dom.*; /** * Elément booléen. * Valeurs possibles: "true" | "false" | "1" | "0" */ public class JEBooleen extends JaxeElement implements ItemListener { protected static final boolean defaut = false; protected JCheckBox coche; // initialisation de l'affichage pour un élément DOM public void init(Position pos, Node noeud) { Element el = (Element)noeud; // lecture de la valeur de l'élément String titre = el.getTagName(); Node child = noeud.getFirstChild(); String texte = null; if (child != null) texte = child.getNodeValue(); // création du composant Swing coche = new JCheckBox(titre, stringVersBooleen(texte)); coche.addItemListener(this); // insertion du composant dans le texte (insertComponent est une méthode de JaxeElement) insertComponent(pos, coche); } protected static boolean stringVersBooleen(String s) { if (s != null) s = s.trim(); if ("true".equals(s) || "1".equals(s)) return(true); else if ("false".equals(s) || "0".equals(s)) return(false); else return(defaut); } protected static String booleenVersString(boolean b) { if (b) return("true"); else return("false"); } // création d'un nouvel élément DOM public Node nouvelElement(Element refElement) { Element newel = nouvelElementDOM(doc, refElement); Node textnode = doc.DOMdoc.createTextNode(booleenVersString(defaut)); newel.appendChild(textnode); return(newel); } // mise à jour de l'affichage des attributs en fonction du DOM: rien à faire pour JEBooleen //public void majAffichage() { } public void itemStateChanged(ItemEvent e) { setValeur(coche.isSelected()); } public void setValeur(boolean valeur) { Element el = (Element)noeud; Node child = noeud.getFirstChild(); if (child != null) child.setNodeValue(booleenVersString(valeur)); else { Node textnode = doc.DOMdoc.createTextNode(booleenVersString(valeur)); el.appendChild(textnode); } } }