Source code: jaxe/elements/JEEquation.java
1 /*
2 Jaxe - Editeur XML en Java
3
4 Copyright (C) 2003 Observatoire de Paris-Meudon
5
6 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.
7
8 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 .
9
10 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.
11 */
12
13 package jaxe.elements;
14
15 import jaxe.equations.DialogueEquation;
16 import jaxe.JaxeDocument;
17 import jaxe.JaxeElement;
18 import jaxe.JaxeResourceBundle;
19
20 import java.io.File;
21 import javax.swing.JFrame;
22 import javax.swing.JOptionPane;
23 import javax.swing.text.Position;
24
25 import org.w3c.dom.*;
26
27
28 /**
29 * Equation
30 * Type d'élément Jaxe: 'equation'
31 * paramètre: texteAtt: le nom de l'attribut donnant le texte de l'équation
32 * paramètre: srcAtt: le nom de l'attribut donnant le nom de l'image
33 */
34 public class JEEquation extends JEFichier {
35
36 public final static String defTexteAtt = "texte";
37
38 public JEEquation(JaxeDocument doc) {
39 super(doc);
40 alignementY = (float)0.5;
41 }
42
43 public void init(Position pos, Node noeud) {
44 // l'image est créée si elle n'existe pas
45 // (elle peut avoir été effacée lors d'un couper-coller)
46 Element el = (Element)noeud;
47 Element defbalise = doc.cfg.getBaliseDef(el.getTagName());
48 File fimg;
49 srcAttr = doc.cfg.getParamFromDefinition(defbalise, "srcAtt", defaultSrcAttr);
50 String nomf = el.getAttribute(srcAttr);
51 if (doc.fsave == null)
52 fimg = new File(nomf);
53 else
54 fimg = new File(doc.fsave.getParent() + File.separatorChar + nomf);
55 if (!fimg.exists()) {
56 String texteAtt = doc.cfg.getParamFromDefinition(defbalise, "texteAtt", defTexteAtt);
57 String texteEquation = el.getAttribute(texteAtt);
58 String nomImage = DialogueEquation.creerImage(texteEquation, fimg.getPath(), doc);
59 el.setAttribute(srcAttr, nomImage);
60 }
61 super.init(pos, noeud);
62 }
63
64 public Element nouvelElement(Element defbalise) {
65 if (doc.fsave == null) {
66 JOptionPane.showMessageDialog(doc.jframe,
67 JaxeResourceBundle.getRB().getString("equation.SauverAvant"),
68 JaxeResourceBundle.getRB().getString("erreur.Erreur"), JOptionPane.ERROR_MESSAGE);
69 return(null);
70 }
71 String nombalise = doc.cfg.nomBalise(defbalise);
72
73 srcAttr = doc.cfg.getParamFromDefinition(defbalise, "srcAtt", defaultSrcAttr);
74 String texteAtt = doc.cfg.getParamFromDefinition(defbalise, "texteAtt", defTexteAtt);
75
76 Element newel = nouvelElementDOM(doc, nombalise);
77
78 DialogueEquation dlg = new DialogueEquation(doc, "", null);
79 if (!dlg.afficher())
80 return null;
81 String texte = dlg.getTexte();
82 String nomImage = dlg.getImage();
83
84 try {
85 newel.setAttribute(texteAtt, texte);
86 newel.setAttribute(srcAttr, nomImage);
87 } catch (DOMException ex) {
88 System.err.println("DOMException: " + ex.getMessage());
89 return null;
90 }
91
92 return(newel);
93 }
94
95 public void afficherDialogue(JFrame jframe) {
96 Element el = (Element)noeud;
97
98 Element defbalise = doc.cfg.getBaliseDef(el.getTagName());
99 String texteAtt = doc.cfg.getParamFromDefinition(defbalise, "texteAtt", defTexteAtt);
100 String texteEquation = el.getAttribute(texteAtt);
101 String nomImage = el.getAttribute(srcAttr);
102 DialogueEquation dlg = new DialogueEquation(doc, texteEquation, nomImage);
103 if (!dlg.afficher())
104 return;
105 texteEquation = dlg.getTexte();
106 nomImage = dlg.getImage();
107
108 try {
109 el.setAttribute(texteAtt, texteEquation);
110 el.setAttribute(srcAttr, nomImage);
111 } catch (DOMException ex) {
112 System.err.println("DOMException: " + ex.getMessage());
113 return;
114 }
115
116 majAffichage();
117 }
118
119 public void effacer() {
120 File fimg;
121 String nomf = ((Element)noeud).getAttribute(srcAttr);
122 if (doc.fsave == null)
123 fimg = new File(nomf);
124 else
125 fimg = new File(doc.fsave.getParent() + File.separatorChar + nomf);
126 if (fimg.exists() && fimg.isFile())
127 fimg.delete();
128 }
129 }