/* Jaxe - Editeur XML en Java Copyright (C) 2005 Observatoire de Paris-Meudon Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation ; version 2 de la licence, ou encore (à votre choix) toute version ultérieure. Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence Publique Générale GNU . Vous devez avoir reçu un exemplaire de la Licence Publique Générale GNU en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, Etats-Unis. */ package pluginsjaxe; import javax.swing.JOptionPane; import javax.swing.text.BadLocationException; import org.w3c.dom.*; import jaxe.JaxeDocument; import jaxe.Fonction; /** * Fonction affichant un dialogue avec des statistiques sur le document. * Les attributs sont ignorés. * compilation: * javac -encoding ISO-8859-1 -classpath .:Jaxe.jar pluginsjaxe/FonctionStatistiques.java */ public class FonctionStatistiques implements Fonction { int nbmots, nbcar; public boolean appliquer(JaxeDocument doc, int start, int end) { nbmots = 0; nbcar = 0; String infosel; try { if (start == end) { infosel = "Ensemble du document"; calculer(doc.getText(0, doc.getLength())); } else { infosel = "Sélection"; calculer(doc.getText(start, end - start)); } JOptionPane.showMessageDialog(doc.jframe, infosel + " :\n" + " nombre de mots : " + nbmots + "\n" + " nombre de caractères (espaces compris) : " + nbcar, "Statistiques", JOptionPane.INFORMATION_MESSAGE); return(true); } catch (BadLocationException ex) { // une exception peut être lancée par doc.getText ex.printStackTrace(); return(false); } } private void calculer(String s) { char c; int ind1 = -1; // index dernier espace for (int i=0; i 1) nbmots++; ind1 = i; } if (c != '*') // le caractère * correspond à une balise, on ne le compte pas nbcar++; } if (s.length() - ind1 > 1) nbmots++; } }