/* Jaxe - Editeur XML en Java Copyright (C) 2002 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 jaxe; import java.awt.event.ActionEvent; import java.lang.reflect.Constructor; import javax.swing.text.TextAction; import org.w3c.dom.Element; public class ActionFonction extends TextAction { Fonction fct; JaxeDocument doc; public ActionFonction(JaxeDocument doc, String titre, String classe) { super(titre); this.doc = doc; try { Class c = Class.forName(classe); fct = (Fonction) c.newInstance(); } catch (Exception ex) { System.err.println("Erreur: Classe introuvable : " + classe); System.err.println(ex.getClass().getName() + " : " + ex.getMessage()); } } public ActionFonction(JaxeDocument doc, String titre, String classe, Element fctdef) { super(titre); this.doc = doc; try { // on essaye d'abord un constructeur avec "Element fctdef" en paramètre // pour permettre à la fonction d'obtenir les paramètres // on utilise le constructeur vide sinon Class c = Class.forName(classe); Constructor cons = null; try { Class[] parameterTypes = new Class[1]; parameterTypes[0] = Element.class; cons = c.getConstructor(parameterTypes); } catch (NoSuchMethodException ex) { // cons sera null } if (cons != null) { Object[] initargs = new Object[1]; initargs[0] = fctdef; fct = (Fonction) cons.newInstance(initargs); } else fct = (Fonction) c.newInstance(); } catch (Exception ex) { System.err.println("Erreur: Classe introuvable : " + classe); System.err.println(ex.getClass().getName() + " : " + ex.getMessage()); } } public void actionPerformed(ActionEvent e) { if (doc == null || doc.textPane == null || fct == null) return; if (getTextComponent(e) == null && doc.textPane != null) doc.textPane.requestFocus(); doc.modif = true; int start = doc.textPane.getSelectionStart(); int end = doc.textPane.getSelectionEnd(); fct.appliquer(doc, start, end); } }