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

Quick Search    Search Deep

Source code: jaxe/elements/JEItem.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  
18  import java.util.ArrayList;
19  import java.util.Hashtable;
20  import java.awt.*;
21  import java.awt.image.*;
22  import java.awt.event.MouseAdapter;
23  import java.awt.event.MouseEvent;
24  import javax.swing.*;
25  import javax.swing.text.Position;
26  import javax.swing.text.BadLocationException;
27  import javax.swing.text.Style;
28  import javax.swing.text.StyleConstants;
29  
30  import org.w3c.dom.*;
31  
32  /**
33   * Elément d'une liste, affiché avec des puces ou des numéros. Ce type d'élément de liste,
34   * inséré dans le texte, peut avoir n'importe quelle longueur, à la différence des éléments d'un JEListe.
35   * Type d'élément Jaxe: 'item'
36   */
37  public class JEItem extends JaxeElement {
38  
39      static String newline = "\n";
40      String fichierPastille1 = "images_Jaxe/pastille1.gif";
41      String fichierPastille2 = "images_Jaxe/pastille2.gif";
42      boolean selectionne = false;
43      Image imagePastille1 = null;
44      Image imagePastille2 = null;
45      Image imagePastille1sel = null;
46      Image imagePastille2sel = null;
47      ImageIcon iconePastille1 = null;
48      ImageIcon iconePastille2 = null;
49      int typeListe = 0;
50      JLabel label = null;
51      boolean mettreajour = false;
52  
53      public JEItem(JaxeDocument doc) {
54          this.doc = doc;
55      }
56      
57      public void init(Position pos, Node noeud) {
58          Position newpos;
59          
60          JaxeElement jeparent = null;
61          if (getParent() != null)
62              jeparent = doc.getElementForNode(getParent().noeud);
63          if (jeparent instanceof JEListe)
64              typeListe = ((JEListe)jeparent).typeListe;
65          if (typeListe == JEListe.NUMEROS) {
66              int lp = posDansListe();
67              label = new JLabel(lp+".");
68              label.setOpaque(true);
69              label.setBackground(Color.white);
70              newpos = insertComponent(pos, label);
71          } else {
72              if (doc.cfg != null) {
73                  Element defbalise = doc.cfg.getBaliseDef(noeud.getNodeName());
74                  
75                  if (defbalise != null)
76                      fichierPastille1 = doc.cfg.getParamFromDefinition(defbalise, "image1", fichierPastille1); 
77              }
78              
79              iconePastille1 = new ImageIcon(fichierPastille1);
80              newpos = insertIcon(pos, iconePastille1);
81              //label = new JLabel(iconePastille1);
82              //label.addMouseListener(new MyMouseListener(this, doc.jframe));
83          }
84          
85          creerEnfants(newpos);
86          
87          //doc.insertString(newpos.getOffset(), newline, null);
88          if (doc.cfg != null) {
89              Element defbalise = doc.cfg.getBaliseDef(noeud.getNodeName());
90              
91              if (defbalise != null)
92                  fichierPastille2 = doc.cfg.getParamFromDefinition(defbalise, "image2", fichierPastille2); 
93          }
94          
95          iconePastille2 = new ImageIcon(fichierPastille2);
96          newpos = insertIcon(newpos, iconePastille2);
97          
98          if (mettreajour) {
99              majListe(false);
100             mettreajour = false;
101         }
102     }
103     
104     public int posDansListe() {
105         Element parel = (Element)getParent().noeud;
106         NodeList lchildren = parel.getChildNodes();
107         String itemTag = noeud.getNodeName();
108         int p = 1;
109         for (int i=0; i<lchildren.getLength(); i++) {
110             if (itemTag.equals(lchildren.item(i).getNodeName())) {
111                 if (lchildren.item(i) == noeud)
112                     return(p);
113                 p++;
114             }
115         }
116         System.err.println("Erreur: Impossible de retrouver le numéro dans la liste");
117         return(0);
118     }
119     
120     public void majNombre(int p) {
121         if (p == 0)
122             p = posDansListe();
123         label.setText(p + ".");
124     }
125     
126     public void majListe(boolean pourEffacer) {
127         if (typeListe == JEListe.NUMEROS) {
128             Element parel = (Element)getParent().noeud;
129             NodeList lchildren = parel.getChildNodes();
130             String itemTag = noeud.getNodeName();
131             int p = 1;
132             for (Node n=parel.getFirstChild(); n != null; n=n.getNextSibling()) {
133                 if (itemTag.equals(n.getNodeName()) && (!pourEffacer || n != noeud)) {
134                     JEItem je = (JEItem)doc.getElementForNode(n);
135                     je.majNombre(p);
136                     p++;
137                 }
138             }
139         }
140     }
141     
142     public void effacer() {
143         super.effacer();
144         majListe(true);
145     }
146     
147     public Element nouvelElement(Element defbalise) {
148         String nombalise = defbalise.getAttribute("nom");
149         Element newel = nouvelElementDOM(doc, nombalise);
150         
151         mettreajour = true;
152         return(newel);
153     }
154 
155     public Position insPosition() {
156         return(fin);
157     }
158     
159     public void selection(boolean select) {
160         if (!selectionne && select) {
161             if (iconePastille1 != null && imagePastille1 == null)
162                 imagePastille1 = iconePastille1.getImage();
163             if (imagePastille2 == null)
164                 imagePastille2 = iconePastille2.getImage();
165             if (imagePastille1sel == null)
166                 creerImagesSel();
167             if (iconePastille1 != null)
168                 iconePastille1.setImage(imagePastille1sel);
169             else
170                 label.setBackground(Color.lightGray);
171             iconePastille2.setImage(imagePastille2sel);
172         }
173         if (selectionne && !select) {
174             if (iconePastille1 != null)
175                 iconePastille1.setImage(imagePastille1);
176             else
177                 label.setBackground(Color.white);
178             iconePastille2.setImage(imagePastille2);
179         }
180         selectionne = select;
181         doc.textPane.repaint();
182         super.selection(select);
183     }
184     
185     protected void creerImagesSel() {
186         ImageFilter filtre = new FiltreGris();
187         if (imagePastille1 != null) {
188             ImageProducer producteur1 = new FilteredImageSource(imagePastille1.getSource(), filtre);
189             imagePastille1sel = Toolkit.getDefaultToolkit().createImage(producteur1);
190         }
191         ImageProducer producteur2 = new FilteredImageSource(imagePastille2.getSource(), filtre);
192         imagePastille2sel = Toolkit.getDefaultToolkit().createImage(producteur2);
193     }
194     
195     class FiltreGris extends RGBImageFilter {
196         private int gris = 0xFFAFAFAF;
197         public FiltreGris() {
198             canFilterIndexColorModel = true;
199         }
200         public int filterRGB(int x, int y, int rgb) {
201             return(rgb & gris);
202         }
203     }
204     
205     /*
206     public void afficherDialogue(JFrame jframe) {
207         Element el = (Element)noeud;
208 
209         Element defbalise = doc.cfg.getBaliseDef(el.getTagName());
210         ArrayList latt = doc.cfg.listeAttributs(defbalise);
211         if (latt != null && latt.size() > 0) {
212             DialogueAttributs dlg = new DialogueAttributs(doc.jframe,
213                 "string: " + el.getTagName(), defbalise, el);
214             if (!dlg.afficher())
215                 return;
216             dlg.enregistrerReponses();
217         }
218     }
219     
220     class MyMouseListener extends MouseAdapter {
221         JEItem jei;
222         JFrame jframe;
223         public MyMouseListener(JEItem obj, JFrame jframe) {
224             super();
225             jei = obj;
226             this.jframe = jframe;
227         }
228         public void mouseClicked(MouseEvent e) {
229             jei.afficherDialogue(jframe);
230         }
231     }
232     */
233 }