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

Quick Search    Search Deep

Source code: com/memoire/bu/BuLookPreferencesPanel.java


1   /**
2    * @modification $Date: 2002/12/16 18:56:24 $
3    * @statut       unstable
4    * @file         BuLookPreferencesPanel.java
5    * @version      0.36
6    * @author       Guillaume Desnoix
7    * @email        guillaume@desnoix.com
8    * @license      GNU General Public License 2 (GPL2)
9    * @copyright    1998-2001 Guillaume Desnoix
10   */
11  
12  package com.memoire.bu;
13  
14  import com.memoire.bu.*;
15  import com.memoire.dnd.*;
16  import com.memoire.fu.*;
17  import com.memoire.re.*;
18  
19  
20  import java.awt.*;
21  import java.awt.event.*;
22  import java.awt.image.*;
23  import java.util.*;
24  
25  import javax.swing.*;
26  import javax.swing.border.*;
27  
28  /**
29   * A panel where the user can choose his favorite look.
30   * (background, look and feel, icons, ...)
31   */
32  
33  /**
34   * desktop.decor
35   * desktop.texture
36   * desktop.background
37   * lookandfeel.name
38   * lookandfeel.class
39   * lookandfeel.theme
40   * icons.size
41   */
42  
43  public class BuLookPreferencesPanel
44         extends BuAbstractPreferencesPanel
45         implements ActionListener
46  {
47    private static final class OptionItem
48    {
49      public String  texte;
50      public Icon    icone;
51      public boolean activee;
52    
53      public OptionItem(String _texte, Icon _icone, boolean _activee)
54      {
55        texte  =_texte;
56        activee=_activee;
57        icone  =_icone;
58  
59        if(!activee&&(icone instanceof ImageIcon))
60    icone=new ImageIcon
61      (BuLib.HELPER.createImage
62       (new FilteredImageSource
63        (((ImageIcon)icone).getImage().getSource(),
64         BuFilters.getDisabled())));
65  
66        int s=BuResource.BU.getDefaultMenuSize();
67        if((icone!=null)&&!(icone instanceof BuFixedSizeIcon))
68        {
69    int wi=icone.getIconWidth();
70    int hi=icone.getIconHeight();
71    if((wi<s)||(hi<s))
72      icone=new BuFixedSizeIcon
73        (icone,Math.max(wi,s),Math.max(hi,s));
74        }
75      }
76  
77      public OptionItem(String _texte, Icon _icone)
78      {
79        this(_texte,_icone,true);
80      }
81    }
82  
83    /*
84  
85    private final class XCBCR
86      implements ListCellRenderer
87    {
88      public Component getListCellRendererComponent
89        (JList list,
90         Object value,
91         int index,
92         boolean isSelected,
93         boolean cellHasFocus)
94      {
95        return new XCBCC((OptionItem)value, isSelected, cellHasFocus, list);
96      }
97    }
98  
99    private final class XCBCC
100     extends JLabel
101   {
102     public XCBCC
103       (OptionItem _option, boolean _selected, boolean _focus, JList _list)
104     {
105       super("",null,SwingConstants.LEFT);
106       if(_option!=null)
107       {
108   this.setText(_option.texte);
109   this.setEnabled(_option.activee);
110   this.setIcon(_option.icone);
111       }
112       else
113       {
114   this.setText("Erreur");
115   this.setEnabled(false);
116       }
117 
118       if(_selected)
119       {
120   this.setOpaque(true);
121   this.setBackground(_list.getSelectionBackground());
122   this.setForeground(_list.getSelectionForeground());
123   this.setBorder(UIManager.getBorder("ComboBox.selectedCellBorder"));
124       }
125       else
126       {
127   this.setOpaque(false);
128   this.setBackground(_list.getBackground());
129   this.setForeground(_list.getForeground());
130   this.setBorder(UIManager.getBorder("ComboBox.cellBorder"));
131       }
132     }
133   }
134   */
135 
136   /*
137   private final class XCBCR
138     extends BuLabel
139     implements ListCellRenderer
140   {
141     public Component getListCellRendererComponent
142       (JList _list,
143        Object _value,
144        int _index,
145        boolean _selected,
146        boolean _focus)
147     {
148       OptionItem _option=(OptionItem)_value;
149 
150       setHorizontalAlignment(LEFT);
151 
152       if(_option!=null)
153       {
154   this.setText(_option.texte);
155   this.setEnabled(_option.activee&&_list.isEnabled());
156   this.setIcon(_option.icone);
157   this.setDisabledIcon(_option.icone);
158       }
159       else
160       {
161   this.setText("Erreur");
162   this.setEnabled(false);
163   this.setIcon(null);
164       }
165 
166       if(_selected)
167       {
168   this.setOpaque(true);
169   this.setBackground(_list.getSelectionBackground());
170   this.setForeground(_list.getSelectionForeground());
171   this.setBorder(UIManager.getBorder("ComboBox.selectedCellBorder"));
172       }
173       else
174       {
175   this.setOpaque(false);
176   this.setBackground(_list.getBackground());
177   this.setForeground(_list.getForeground());
178   this.setBorder(UIManager.getBorder("ComboBox.cellBorder"));
179       }
180 
181       return this;
182     }
183   }
184   */
185 
186   private final class XCBCR
187     extends BuAbstractCellRenderer
188   {
189     public XCBCR()
190     {
191       super(BuAbstractCellRenderer.COMBOBOX);
192     }
193 
194     public Component getListCellRendererComponent
195       (JList _list,
196        Object _value,
197        int _index,
198        boolean _selected,
199        boolean _focus)
200     {
201       BuLabel r=(BuLabel)super.getListCellRendererComponent
202     (_list,_value,_index,_selected,_focus);
203 
204       OptionItem _option=(OptionItem)_value;
205 
206       if(_option!=null)
207       {
208   boolean e=(_option.activee&&_list.isEnabled());
209   r.setText(_option.texte);
210   r.setEnabled(e);
211   r.setIcon(_option.icone);
212   r.setDisabledIcon(_option.icone);
213   if(!e) r.setForeground(_list.getBackground().darker());
214       }
215       else
216       {
217   r.setText(BuResource.BU.getString("Erreur"));
218   r.setEnabled(false);
219   r.setIcon(null);
220       }
221 
222       return r;
223     }
224   }
225 
226   BuCommonInterface     appli_;
227   BuPreferences         options_;
228   Hashtable             optionsStr_;
229   XCBCR                 cbRenderer_;
230 
231   // Panneau des options generales
232   BuGridLayout   loGen_;
233   BuPanel        pnGenDesk_;
234   AbstractBorder boGenDesk_;
235   BuGridLayout   loGenDesk_;
236   BuLabel        lbGenDeskDecor_, lbGenDeskTexture_, lbGenDeskCouleur_;
237   BuComboBox     liGenDeskDecor_, liGenDeskTexture_, liGenDeskCouleur_;
238   BuLabel        lbGenAspAspect_, lbGenAspSlaf_, lbGenAspMetal_;
239   BuComboBox     liGenAspAspect_, liGenAspSlaf_, liGenAspMetal_;
240   BuLabel        lbGenAspSkinlf_, lbGenAspOyoaha_;
241   BuTextField    tfGenAspSkinlf_, tfGenAspOyoaha_;
242 
243   BuLabel        lbIcones_;
244   BuComboBox     chIcones_;
245 
246   public String getTitle()
247     { return BuResource.BU.getString("Aspect"); }
248 
249   // Constructeur
250   
251   public BuLookPreferencesPanel(BuCommonInterface _appli)
252   {
253     super();
254     appli_     =_appli;
255     options_   =BuPreferences.BU;
256     cbRenderer_=new XCBCR();
257     optionsStr_=new Hashtable();
258 
259     OptionItem itemOpt;
260     String     itemStr;
261 
262     optionsStr_.put(itemStr="16",
263         itemOpt=new OptionItem(BuResource.BU.getString("16x16 (standard)"),
264              BuResource.BU.getMenuIcon("ouvrir_16")));
265     optionsStr_.put(itemOpt, itemStr);
266     optionsStr_.put(itemStr="20",
267         itemOpt=new OptionItem(BuResource.BU.getString("20x20 (dean)"),
268              BuResource.BU.getMenuIcon("ouvrir_20")));
269     optionsStr_.put(itemOpt, itemStr);
270     optionsStr_.put(itemStr="22",
271         itemOpt=new OptionItem(BuResource.BU.getString("22x22 (kde)"),
272              BuResource.BU.getMenuIcon("ouvrir_22")));
273     optionsStr_.put(itemOpt, itemStr);
274     optionsStr_.put(itemStr="24",
275         itemOpt=new OptionItem(BuResource.BU.getString("24x24 (gnome)"),
276              BuResource.BU.getMenuIcon("ouvrir_24")));
277     optionsStr_.put(itemOpt, itemStr);
278     optionsStr_.put(itemStr="26",
279         itemOpt=new OptionItem(BuResource.BU.getString("26x26 (swing)"),
280              BuResource.BU.getMenuIcon("ouvrir_26")));
281     optionsStr_.put(itemOpt, itemStr);
282     optionsStr_.put(itemStr="48",
283         itemOpt=new OptionItem(BuResource.BU.getString("48x48 (grem)"),
284              BuResource.BU.getMenuIcon("ouvrir_48")));
285     optionsStr_.put(itemOpt, itemStr);
286     optionsStr_.put(itemStr="64",
287         itemOpt=new OptionItem(BuResource.BU.getString("64x64 (real)"),
288              BuResource.BU.getMenuIcon("ouvrir_64")));
289     optionsStr_.put(itemOpt, itemStr);
290 
291     optionsStr_.put(itemStr="DESKTOP_UNIFORME",
292         itemOpt=new OptionItem(BuResource.BU.getString("Uniforme"),
293              BuResource.BU.getIcon("uniforme")));
294     optionsStr_.put(itemOpt, itemStr);
295     optionsStr_.put(itemStr="DESKTOP_DEGRADE",
296         itemOpt=new OptionItem(BuResource.BU.getString("Dégradé"),
297              BuResource.BU.getIcon("degrade")));
298     optionsStr_.put(itemOpt, itemStr);
299     optionsStr_.put(itemStr="DESKTOP_TEXTURE",
300         itemOpt=new OptionItem(BuResource.BU.getString("Texturé"),
301              BuResource.BU.getIcon("texture")));
302     optionsStr_.put(itemOpt, itemStr);
303     optionsStr_.put(itemStr="DESKTOP_TEXTURE1",
304         itemOpt=new OptionItem(BuResource.BU.getString("Texture")+" 1",
305              new BuTextureIcon(BuResource.BU.getImage("background_desktop_1"))));
306     optionsStr_.put(itemOpt, itemStr);
307     optionsStr_.put(itemStr="DESKTOP_TEXTURE2",
308         itemOpt=new OptionItem(BuResource.BU.getString("Texture")+" 2",
309              new BuTextureIcon(BuResource.BU.getImage("background_desktop_2"))));
310     optionsStr_.put(itemOpt, itemStr);
311     optionsStr_.put(itemStr="DESKTOP_TEXTURE3",
312         itemOpt=new OptionItem(BuResource.BU.getString("Texture")+" 3",
313              new BuTextureIcon(BuResource.BU.getImage("background_desktop_3"))));
314     optionsStr_.put(itemOpt, itemStr);
315     optionsStr_.put(itemStr="DESKTOP_TEXTURE4",
316         itemOpt=new OptionItem
317         (BuResource.BU.getString("Texture")+" 4",
318          new BuTextureIcon(new ImageIcon
319                (BuPreferences.BU.getStringProperty("desktop.image")).getImage())));
320     optionsStr_.put(itemOpt, itemStr);
321     optionsStr_.put(itemStr="DESKTOP_ROUGE",
322         itemOpt=new OptionItem(BuResource.BU.getString("Rouge"),
323              new BuColorIcon(new Color(128, 64, 64))));
324     optionsStr_.put(itemOpt, itemStr);
325     optionsStr_.put(itemStr="DESKTOP_VERT",
326         itemOpt=new OptionItem(BuResource.BU.getString("Vert"),
327              new BuColorIcon(new Color( 64,129, 64))));
328     optionsStr_.put(itemOpt, itemStr);
329     optionsStr_.put(itemStr="DESKTOP_BLEU",
330         itemOpt=new OptionItem(BuResource.BU.getString("Bleu"),
331              new BuColorIcon(new Color( 64, 64,128))));
332     optionsStr_.put(itemOpt, itemStr);
333     optionsStr_.put(itemStr="DESKTOP_ORANGE",
334         itemOpt=new OptionItem(BuResource.BU.getString("Orange"),
335              new BuColorIcon(new Color(192,128, 96))));
336     optionsStr_.put(itemOpt, itemStr);
337     optionsStr_.put(itemStr="DESKTOP_SIMILAIRE",
338         itemOpt=new OptionItem(BuResource.BU.getString("Similaire"),
339              new BuColorIcon(UIManager.getColor("Panel.background"))));
340     optionsStr_.put(itemOpt, itemStr);
341     optionsStr_.put(itemStr="DESKTOP_DEFAUT",
342         itemOpt=new OptionItem(BuResource.BU.getString("Défaut"),
343              new BuColorIcon(UIManager.getColor("Desktop.background"))));
344     optionsStr_.put(itemOpt, itemStr);
345     optionsStr_.put(itemStr="ASPECT_DEFAUT",
346         itemOpt=new OptionItem(BuResource.BU.getString("Défaut"),
347              BuLib.loadToolCommandIcon(itemStr),
348              options_.isEnabled("ASPECT_DEFAUT")));
349     optionsStr_.put(itemOpt, itemStr);
350     optionsStr_.put(itemStr="ASPECT_AMIGA",
351         itemOpt=new OptionItem("Amiga",
352              BuLib.loadToolCommandIcon(itemStr),
353              options_.isEnabled("ASPECT_AMIGA")));
354     optionsStr_.put(itemOpt, itemStr);
355     optionsStr_.put(itemStr="ASPECT_KUNSTSTOFF",
356         itemOpt=new OptionItem("Kunststoff",
357              BuLib.loadToolCommandIcon(itemStr),
358              options_.isEnabled("ASPECT_KUNSTSTOFF")));
359     optionsStr_.put(itemOpt, itemStr);
360     optionsStr_.put(itemStr="ASPECT_MAC",
361         itemOpt=new OptionItem("Mac",
362              BuLib.loadToolCommandIcon(itemStr),
363              options_.isEnabled("ASPECT_MAC")));
364     optionsStr_.put(itemOpt, itemStr);
365     optionsStr_.put(itemStr="ASPECT_METAL",
366         itemOpt=new OptionItem("Metal",
367              BuLib.loadToolCommandIcon(itemStr),
368              options_.isEnabled("ASPECT_METAL")));
369     optionsStr_.put(itemOpt, itemStr);
370     optionsStr_.put(itemStr="ASPECT_MOTIF",
371         itemOpt=new OptionItem("Motif",
372              BuLib.loadToolCommandIcon(itemStr),
373              options_.isEnabled("ASPECT_MOTIF")));
374     optionsStr_.put(itemOpt, itemStr);
375     optionsStr_.put(itemStr="ASPECT_NEXT",
376         itemOpt=new OptionItem("Next",
377              BuLib.loadToolCommandIcon(itemStr),
378              options_.isEnabled("ASPECT_NEXT")));
379     optionsStr_.put(itemOpt, itemStr);
380     optionsStr_.put(itemStr="ASPECT_ORGANIC",
381         itemOpt=new OptionItem("Organic",
382              BuLib.loadToolCommandIcon(itemStr),
383              options_.isEnabled("ASPECT_ORGANIC")));
384     optionsStr_.put(itemOpt, itemStr);
385     optionsStr_.put(itemStr="ASPECT_OYOAHA",
386         itemOpt=new OptionItem("Oyoaha",
387              BuLib.loadToolCommandIcon(itemStr),
388              options_.isEnabled("ASPECT_OYOAHA")));
389     optionsStr_.put(itemOpt, itemStr);
390     optionsStr_.put(itemStr="ASPECT_SKINLF",
391         itemOpt=new OptionItem("SkinLF",
392              BuLib.loadToolCommandIcon(itemStr),
393              options_.isEnabled("ASPECT_SKINLF")));
394     optionsStr_.put(itemOpt, itemStr);
395     optionsStr_.put(itemStr="ASPECT_SLAF",
396         itemOpt=new OptionItem("Slaf",
397              BuLib.loadToolCommandIcon(itemStr),
398              options_.isEnabled("ASPECT_SLAF")));
399     optionsStr_.put(itemOpt, itemStr);
400     optionsStr_.put(itemStr="ASPECT_WINDOWS",
401         itemOpt=new OptionItem("Windows",
402              BuLib.loadToolCommandIcon(itemStr),
403              options_.isEnabled("ASPECT_WINDOWS")));
404     optionsStr_.put(itemOpt, itemStr);
405 
406     Object[] items;
407     int nGen, nGenDesk;
408     
409     setLayout(new BuBorderLayout());
410     setBorder(new EmptyBorder(5,5,5,5));
411 
412     nGen=0;
413 
414     // Desktop
415     pnGenDesk_=new BuPanel();
416     boGenDesk_=new CompoundBorder
417       (new TitledBorder
418        (BuResource.BU.getString("Aspect")), new EmptyBorder(5,5,5,5));
419     pnGenDesk_.setBorder(boGenDesk_);
420     loGenDesk_=new BuGridLayout();
421     loGenDesk_.setColumns(2);
422     loGenDesk_.setVgap(5);
423     loGenDesk_.setHgap(5);
424     pnGenDesk_.setLayout(loGenDesk_);
425     nGenDesk=0;
426 
427     // Aspect
428     lbGenAspAspect_=new BuLabel(BuResource.BU.getString("Aspect:"),JLabel.RIGHT);
429     items=new OptionItem[12];
430     items[ 0]=optionsStr_.get("ASPECT_DEFAUT");
431     items[ 1]=optionsStr_.get("ASPECT_AMIGA");
432     items[ 2]=optionsStr_.get("ASPECT_KUNSTSTOFF");
433     items[ 3]=optionsStr_.get("ASPECT_MAC");
434     items[ 4]=optionsStr_.get("ASPECT_METAL");
435     items[ 5]=optionsStr_.get("ASPECT_MOTIF");
436     items[ 6]=optionsStr_.get("ASPECT_NEXT");
437     items[ 7]=optionsStr_.get("ASPECT_ORGANIC");
438     items[ 8]=optionsStr_.get("ASPECT_OYOAHA");
439     items[ 9]=optionsStr_.get("ASPECT_SKINLF");
440     items[10]=optionsStr_.get("ASPECT_SLAF");
441     items[11]=optionsStr_.get("ASPECT_WINDOWS");
442     liGenAspAspect_=new BuComboBox(items);
443     liGenAspAspect_.setRenderer(cbRenderer_);
444     liGenAspAspect_.setEditable(false);
445     liGenAspAspect_.addActionListener(this);
446     pnGenDesk_.add(lbGenAspAspect_, nGenDesk++);
447     pnGenDesk_.add(liGenAspAspect_, nGenDesk++);
448 
449     // Metal theme
450     lbGenAspMetal_=new BuLabel(BuResource.BU.getString
451             ("Thème Metal:"),JLabel.RIGHT);
452     BuMetalCustomTheme[] metalThemes=BuMetalCustomTheme.getList();
453     items=new OptionItem[metalThemes.length-4];
454     for(int i=0,j=0;i<metalThemes.length;i++)
455     {
456       BuMetalCustomTheme s=metalThemes[i];
457       if(s!=null)
458       {
459   optionsStr_.put(itemStr="THEME_METAL"+i,
460       itemOpt=new OptionItem(s.getName(),s.getIcon()));
461   optionsStr_.put(itemOpt, itemStr);
462   items[j]=optionsStr_.get("THEME_METAL"+i);
463   j++;
464       }
465     }
466     liGenAspMetal_=new BuComboBox(items);
467     liGenAspMetal_.setRenderer(cbRenderer_);
468     liGenAspMetal_.setEditable(false);
469     liGenAspMetal_.addActionListener(this);
470     pnGenDesk_.add(lbGenAspMetal_, nGenDesk++);
471     pnGenDesk_.add(liGenAspMetal_, nGenDesk++);
472 
473     // Slaf theme
474     lbGenAspSlaf_=new BuLabel(BuResource.BU.getString
475            ("Thème Slaf:"),JLabel.RIGHT);
476     BuSlafCustomTheme[] slafThemes=BuSlafCustomTheme.getList();
477     items=new OptionItem[slafThemes.length-3];
478     for(int i=0,j=0;i<slafThemes.length;i++)
479     {
480       BuSlafCustomTheme s=slafThemes[i];
481       if(s!=null)
482       {
483   optionsStr_.put(itemStr=s.getKey(),
484       itemOpt=new OptionItem(s.getName(),s.getIcon()));
485   optionsStr_.put(itemOpt, itemStr);
486   items[j]=optionsStr_.get(s.getKey());
487   j++;
488       }
489     }
490     liGenAspSlaf_=new BuComboBox(items);
491     liGenAspSlaf_.setRenderer(cbRenderer_);
492     liGenAspSlaf_.setEditable(false);
493     liGenAspSlaf_.addActionListener(this);
494     pnGenDesk_.add(lbGenAspSlaf_, nGenDesk++);
495     pnGenDesk_.add(liGenAspSlaf_, nGenDesk++);
496 
497     // Skinlf theme
498     lbGenAspSkinlf_=new BuLabel(BuResource.BU.getString
499            ("Thème Skinlf:"),JLabel.RIGHT);
500     tfGenAspSkinlf_=new BuTextField(25);
501     tfGenAspSkinlf_.addActionListener(this);
502     pnGenDesk_.add(lbGenAspSkinlf_, nGenDesk++);
503     pnGenDesk_.add(tfGenAspSkinlf_, nGenDesk++);
504 
505     // Oyoaha theme
506     lbGenAspOyoaha_=new BuLabel(BuResource.BU.getString
507         ("Thème Oyoaha:"),JLabel.RIGHT);
508     tfGenAspOyoaha_=new BuTextField(25);
509     tfGenAspOyoaha_.addActionListener(this);
510     pnGenDesk_.add(lbGenAspOyoaha_, nGenDesk++);
511     pnGenDesk_.add(tfGenAspOyoaha_, nGenDesk++);
512 
513     // Icones
514     lbIcones_=new BuLabel(BuResource.BU.getString("Icônes:"),JLabel.RIGHT);
515     items=new OptionItem[7];
516     items[0]=optionsStr_.get("16");
517     items[1]=optionsStr_.get("20");
518     items[2]=optionsStr_.get("22");
519     items[3]=optionsStr_.get("24");
520     items[4]=optionsStr_.get("26");
521     items[5]=optionsStr_.get("48");
522     items[6]=optionsStr_.get("64");
523     chIcones_=new BuComboBox(items);
524     chIcones_.setRenderer(cbRenderer_);
525     chIcones_.setEditable(false);
526     chIcones_.addActionListener(this);
527     pnGenDesk_.add(lbIcones_, nGenDesk++);
528     pnGenDesk_.add(chIcones_, nGenDesk++);
529 
530     // Decor
531     lbGenDeskDecor_=new BuLabel(BuResource.BU.getString("Décor:"),JLabel.RIGHT);
532     items=new OptionItem[3];
533     items[0]=optionsStr_.get("DESKTOP_UNIFORME");
534     items[1]=optionsStr_.get("DESKTOP_DEGRADE"); 
535     items[2]=optionsStr_.get("DESKTOP_TEXTURE"); 
536     liGenDeskDecor_=new BuComboBox(items);
537     liGenDeskDecor_.setRenderer(cbRenderer_);
538     liGenDeskDecor_.setEditable(false);
539     liGenDeskDecor_.addActionListener(this);
540     pnGenDesk_.add(lbGenDeskDecor_, nGenDesk++);
541     pnGenDesk_.add(liGenDeskDecor_, nGenDesk++);
542 
543     // Texture
544     lbGenDeskTexture_=new BuLabel(BuResource.BU.getString("Texture:"),JLabel.RIGHT);
545     items=new OptionItem[4];
546     items[0]=optionsStr_.get("DESKTOP_TEXTURE1");
547     items[1]=optionsStr_.get("DESKTOP_TEXTURE2");
548     items[2]=optionsStr_.get("DESKTOP_TEXTURE3");
549     items[3]=optionsStr_.get("DESKTOP_TEXTURE4");
550     liGenDeskTexture_=new BuComboBox(items);
551     liGenDeskTexture_.setRenderer(cbRenderer_);
552     liGenDeskTexture_.setEditable(false);
553     liGenDeskTexture_.addActionListener(this);
554     pnGenDesk_.add(lbGenDeskTexture_, nGenDesk++);
555     pnGenDesk_.add(liGenDeskTexture_, nGenDesk++);
556     
557     // Couleur
558     lbGenDeskCouleur_=new BuLabel(BuResource.BU.getString("Couleur:"),JLabel.RIGHT);
559     items=new OptionItem[6];
560     items[0]=optionsStr_.get("DESKTOP_ROUGE");
561     items[1]=optionsStr_.get("DESKTOP_VERT");
562     items[2]=optionsStr_.get("DESKTOP_BLEU");
563     items[3]=optionsStr_.get("DESKTOP_ORANGE");
564     items[4]=optionsStr_.get("DESKTOP_SIMILAIRE");
565     items[5]=optionsStr_.get("DESKTOP_DEFAUT");
566     liGenDeskCouleur_=new BuComboBox(items);
567     liGenDeskCouleur_.setRenderer(cbRenderer_);
568     liGenDeskCouleur_.setEditable(false);
569     liGenDeskCouleur_.addActionListener(this);
570     pnGenDesk_.add(lbGenDeskCouleur_, nGenDesk++);
571     pnGenDesk_.add(liGenDeskCouleur_, nGenDesk++);
572 
573     add(pnGenDesk_,BuBorderLayout.CENTER);
574 
575     updateComponents();
576   }
577   
578   // Evenements
579   
580   public void actionPerformed(ActionEvent _evt)
581   {
582     setAbility();
583   }
584 
585   // Methodes publiques
586 
587   public boolean isPreferencesValidable()
588     { return true; }
589 
590   public void validatePreferences()
591   {
592     fillTable();
593     options_.writeIniFile();
594   }
595 
596   public boolean isPreferencesApplyable()
597     { return (appli_!=null); }
598   
599   public void applyPreferences()
600   {
601     fillTable();
602     options_.applyOn(appli_);
603   }
604 
605   public boolean isPreferencesCancelable()
606     { return true; }
607 
608   public void cancelPreferences()
609   {
610     options_.readIniFile();
611     updateComponents();
612   }
613   
614   // Methodes privees
615   
616   private void fillTable()
617   {
618     Object o;
619 
620     o=liGenDeskDecor_  .getSelectedItem(); if(o==null) o="DESKTOP_UNIFORME";
621     options_.putStringProperty("desktop.decor"      , ""+optionsStr_.get(o));
622 
623     o=liGenDeskTexture_.getSelectedItem(); if(o==null) o="DESKTOP_TEXTURE1";
624     options_.putStringProperty("desktop.texture"    , ""+optionsStr_.get(o));
625 
626     o=liGenDeskCouleur_.getSelectedItem(); if(o==null) o="DESKTOP_DEFAUT";
627     options_.putStringProperty("desktop.background" , ""+optionsStr_.get(o));
628 
629     o=liGenAspAspect_.getSelectedItem(); if(o==null) o="ASPECT_DEFAUT";
630     options_.putStringProperty("lookandfeel.name"   , ""+optionsStr_.get(o));
631 
632     o=liGenAspMetal_.getSelectedItem(); if(o==null) o="THEME_METAL0";
633     options_.putStringProperty("metal.theme"        , ""+optionsStr_.get(o));
634 
635     o=liGenAspSlaf_.getSelectedItem(); if(o==null) o="default";
636     options_.putStringProperty("slaf.theme"         , ""+optionsStr_.get(o));
637 
638     o=chIcones_.getSelectedItem(); if(o==null) o="16";
639     options_.putStringProperty("icons.size"         , ""+optionsStr_.get(o));
640 
641     options_.putStringProperty("skinlf.theme",tfGenAspSkinlf_.getText());
642     options_.putStringProperty("oyoaha.theme",tfGenAspOyoaha_.getText());
643   }
644 
645   private void updateComponents()
646   {
647     liGenDeskDecor_      .setSelectedItem(optionsStr_.get(options_.getStringProperty("desktop.decor"     ,"DESKTOP_UNIFORME"  )));
648     liGenDeskTexture_    .setSelectedItem(optionsStr_.get(options_.getStringProperty("desktop.texture"   ,"DESKTOP_TEXTURE1"  )));
649     liGenDeskCouleur_    .setSelectedItem(optionsStr_.get(options_.getStringProperty("desktop.background","DESKTOP_DEFAUT"    )));
650     liGenAspAspect_      .setSelectedItem(optionsStr_.get(options_.getStringProperty("lookandfeel.name"  ,"ASPECT_DEFAUT"     )));
651     liGenAspMetal_       .setSelectedItem(optionsStr_.get(options_.getStringProperty("metal.theme"       ,"THEME_METAL0"      )));
652     liGenAspSlaf_        .setSelectedItem(optionsStr_.get(options_.getStringProperty("slaf.theme"        ,"default"           )));
653     chIcones_            .setSelectedItem(optionsStr_.get(options_.getStringProperty("icons.size"        ,"16"                )));
654 
655     tfGenAspSkinlf_.setText
656   (options_.getStringProperty
657    ("skinlf.theme","/usr/share/themes/Chrome/gtk/gtkrc"));
658     tfGenAspOyoaha_.setText
659   (options_.getStringProperty
660    ("oyoaha.theme","slushy.otm"));
661     setAbility();
662   }
663 
664   private void setAbility()
665   {
666     boolean b;
667 
668     b=(liGenDeskDecor_.getSelectedItem()==optionsStr_.get("DESKTOP_TEXTURE"));
669     liGenDeskTexture_.setEnabled(b);
670     liGenDeskCouleur_.setEnabled(!b);
671 
672     b=(liGenAspAspect_.getSelectedItem()==optionsStr_.get("ASPECT_METAL"));
673     liGenAspMetal_.setEnabled(b);
674 
675     b=(liGenAspAspect_.getSelectedItem()==optionsStr_.get("ASPECT_SLAF"));
676     liGenAspSlaf_.setEnabled(b);
677 
678     b=(liGenAspAspect_.getSelectedItem()==optionsStr_.get("ASPECT_SKINLF"));
679     tfGenAspSkinlf_.setEnabled(b);
680 
681     b=(liGenAspAspect_.getSelectedItem()==optionsStr_.get("ASPECT_OYOAHA"));
682     tfGenAspOyoaha_.setEnabled(b);
683   }
684 }