/* 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; /** * Function displaying a dialog with statistics on the document. * Attributes are ignored. * compilation: * javac -encoding ISO-8859-1 -classpath .:Jaxe.jar pluginsjaxe/StatisticsFunction.java */ public class StatisticsFunction 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 = "All the document"; calculer(doc.getText(0, doc.getLength())); } else { infosel = "Selection"; calculer(doc.getText(start, end - start)); } JOptionPane.showMessageDialog(doc.jframe, infosel + " :\n" + " word count : " + nbmots + "\n" + " character count (including spaces) : " + nbcar, "Statistics", JOptionPane.INFORMATION_MESSAGE); return(true); } catch (BadLocationException ex) { // an exception can be thrown by doc.getText ex.printStackTrace(); return(false); } } private void calculer(String s) { char c; int ind1 = -1; // index last space for (int i=0; i 1) nbmots++; ind1 = i; } if (c != '*') // the * character corresponds to a tag, we don't count it nbcar++; } if (s.length() - ind1 > 1) nbmots++; } }