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

Quick Search    Search Deep

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


1   /**
2    * @modification $Date: 2001/12/03 16:28:07 $
3    * @statut       unstable
4    * @file         BuGenericPreferencesModel.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.fu.*;
16  
17  /**
18   * @creation     2001-03-06
19   * @modification 2001-03-06
20   * @statut       unstable
21   */
22  
23  import java.awt.*;
24  import java.awt.event.*;
25  import java.util.*;
26  
27  import javax.swing.*;
28  import javax.swing.border.*;
29  import javax.swing.event.*;
30  import javax.swing.table.*;
31  
32  /**
33   * A table model for the user preferences.
34   * any
35   */
36  public class BuGenericPreferencesModel
37         implements TableModel
38  {
39    private Vector        listeners_;
40    private FuPreferences options_;
41    private String[]      keys_;
42    private int           size_;
43    private String        mask_;
44    private boolean       editable_,growable_;
45  
46    public BuGenericPreferencesModel(FuPreferences _options)
47    {
48      this(_options,"",true,false);
49    }
50  
51    public BuGenericPreferencesModel
52      (FuPreferences _options, String _mask,
53       boolean _editable, boolean _growable)
54    {
55      listeners_=new Vector();
56      options_  =_options;
57      keys_     =new String[0];
58      size_     =0;
59      editable_ =_editable;
60      growable_ =_growable;
61  
62      setMask(_mask);
63    }
64  
65    public String getMask()
66    {
67      return mask_;
68    }
69  
70    public void setMask(String _mask)
71    {
72      if(_mask==null) _mask="";
73      mask_=_mask;
74      build();
75    }
76  
77    protected void build()
78    {
79      synchronized(options_)
80      {
81        keys_=new String[options_.size()];
82  
83        Enumeration e=options_.keys();
84        int         i=0;
85        while(e.hasMoreElements())
86        {
87    String s=(String)e.nextElement();
88    if(s.startsWith(mask_))
89    {
90      keys_[i]=s;
91      i++;
92    }
93        }
94        size_=i;
95      }
96      FuSort.sort(keys_,0,size_);
97      fireTableChanged();
98    }
99  
100   public Class getColumnClass(int column)
101   {
102     Class r=null;
103     switch(column)
104     {
105     case  0: r=String.class;  break; // name
106     case  1: r=String.class;  break; // value
107     default: r=Object.class;  break;
108     }
109     return r;
110   }
111 
112   public int getColumnCount()
113   { return 2; }
114 
115   public String getColumnName(int column)
116   {
117     String r="";
118 
119     switch(column)
120     {
121     case  0: r=BuResource.BU.getString("Clef");    break;
122     case  1: r=BuResource.BU.getString("Valeur"); break;
123     default: r="undefined"; break;
124     }
125     
126     return r;
127   }
128 
129   public int getRowCount()
130   {
131     return size_+(growable_ ? 1 : 0);
132   }
133 
134   public Object getValueAt(int row, int column)
135   {
136     Object r=null;
137 
138     switch(column)
139     {
140     case 0:  r=((row==size_) ? ""
141     : keys_[row]); break;
142     case 1:  r=((row==size_) ? ""
143     : options_.getStringProperty(keys_[row])); break;
144     default: r="default"; break;
145     }
146 
147     if(!(r instanceof String)) r=""+r;
148     return r;
149   }
150 
151   public boolean isCellEditable(int row, int column)
152   {
153     return   (editable_&&(column==1))
154      ||(growable_&&(row==size_)&&(column==0));
155   }
156 
157   public void setValueAt(Object value, int row, int column)
158   {
159     if(!(value instanceof String)) value=""+value;
160 
161     if(column==0)
162     {
163       String k=(String)value;
164       k=k.toLowerCase().trim();
165       if(!"".equals(k)&&k.startsWith(mask_))
166       {
167   String v=options_.getStringProperty(k,"");
168   options_.putStringProperty(k,v);
169         build();
170       }
171     }
172     else
173     if(column==1)
174     {
175       options_.putStringProperty(keys_[row],(String)value);
176       fireRowChanged(row);
177     }
178   }
179 
180   public void fireRowChanged(int row)
181   {
182     TableModelEvent e=new TableModelEvent(this,row);
183     Enumeration     l=listeners_.elements();
184     while(l.hasMoreElements())
185       ((TableModelListener)l.nextElement()).tableChanged(e);
186   }
187 
188   public void fireTableChanged()
189   {
190     TableModelEvent e=new TableModelEvent(this);
191     Enumeration     l=listeners_.elements();
192     while(l.hasMoreElements())
193       ((TableModelListener)l.nextElement()).tableChanged(e);
194   }
195 
196   public void addTableModelListener(TableModelListener _l)
197   { listeners_.addElement(_l); }
198 
199   public void removeTableModelListener(TableModelListener _l)
200   { listeners_.removeElement(_l); }
201 }