Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: jaxe/elements/JEStyle.java


1   /*
2   Jaxe - Editeur XML en Java
3   
4   Copyright (C) 2002 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.JaxeDocument;
16  import jaxe.JaxeElement;
17  import jaxe.FonctionNormal;
18  
19  import javax.swing.text.Position;
20  import javax.swing.text.BadLocationException;
21  
22  import org.w3c.dom.*;
23  
24  
25  /**
26   * Elément de style (B ou I ou SUB ou SUP). Modifie l'aspect du texte en conséquence.
27   * Type d'élément Jaxe: 'style'
28   * paramètre: style: NORMAL | GRAS | ITALIQUE | EXPOSANT | INDICE | SOULIGNE
29   *
30   * NORMAL ne doit plus être utilisé (il faut utiliser FONCTION à la place, avec
31   * classe="jaxe.FonctionNormal")
32   */
33  public class JEStyle extends JaxeElement {
34  
35      public String ceStyle;
36      
37      public JEStyle(JaxeDocument doc) {
38          this.doc = doc;
39      }
40      
41      public void init(Position pos, Node noeud) {
42          Element defbalise = doc.cfg.getBaliseDef(noeud.getNodeName());
43          ceStyle = defbalise.getAttribute("param");
44          ceStyle = doc.cfg.getParamFromDefinition(defbalise, "style", ceStyle);
45          if (ceStyle == null || ceStyle.equals(""))
46              return;
47          
48          Node textnode = noeud.getFirstChild();
49          String texte = null;
50          if (textnode != null)
51              texte = textnode.getNodeValue();
52          int offsetdebut = pos.getOffset();
53          Position newpos = pos;
54          if (texte != null)
55              newpos = insertText(newpos, texte);
56          //creerEnfants(newpos);
57          for (Node n=noeud.getFirstChild(); n != null; n=n.getNextSibling())
58              if (n.getNodeType() != Node.TEXT_NODE)
59                  creerEnfant(newpos, n);
60          
61          if (texte != null)
62              changerStyle(ceStyle, offsetdebut, newpos.getOffset() - offsetdebut);
63      }
64      
65      public Element nouvelElement(Element defbalise) {
66          return(null);
67      }
68      
69      public static JEStyle nouveau(JaxeDocument doc, int start, int end, Element defbalise) {
70          String nombalise = doc.cfg.nomBalise(defbalise);
71          
72          String ceStyle = defbalise.getAttribute("param");
73          ceStyle = doc.cfg.getParamFromDefinition(defbalise, "style", ceStyle);
74          if (ceStyle.equals("")) {
75              System.err.println("Pas d'attribut param pour le style");
76              return null;
77          }
78          
79          if (ceStyle.equals(kNormal)) {
80              // conservé temporairement pour la compatibilité
81              FonctionNormal fct = new FonctionNormal();
82              fct.appliquer(doc, start, end);
83              return null;
84          }
85          JaxeElement p1 = doc.rootJE.elementA(start);
86          JaxeElement p2 = doc.rootJE.elementA(end - 1);
87          if (p1 == p2) {
88              p1 = doc.rootJE.elementA(start);
89              p2 = doc.rootJE.elementA(end - 1);
90          }
91          if (p1 != p2 || !(p1 instanceof JETexte))
92              return(null);
93          
94          try {
95              String texte = doc.textPane.getText(start, end-start);
96              
97              JEStyle newje = new JEStyle(doc);
98              
99              Node textnode = doc.DOMdoc.createTextNode(texte);
100             Element newel = nouvelElementDOM(doc, nombalise);
101             newel.appendChild(textnode);
102             newje.noeud = newel;
103             newje.doc = doc;
104             doc.dom2JaxeElement.put(newel, newje);
105             
106             newje.debut = doc.createPosition(start);
107             newje.fin = doc.createPosition(end - 1);
108             return(newje);
109         } catch (BadLocationException ex) {
110             System.err.println("BadLocationException: " + ex.getMessage());
111             return(null);
112         }
113     }
114     
115 }