KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > gumby > view > binding > ComboBinding


1 package org.sapia.gumby.view.binding;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Collection JavaDoc;
5 import java.util.Iterator JavaDoc;
6
7 import javax.swing.JComboBox JavaDoc;
8
9 import org.apache.commons.jxpath.JXPathContext;
10 import org.sapia.gumby.view.View;
11
12 /**
13  * @author Yanick Duchesne
14  *
15  * <dl>
16  * <dt><b>Copyright: </b>
17  * <dd>Copyright &#169; 2002-2005 <a HREF="http://www.sapia-oss.org">Sapia Open
18  * Source Software </a>. All Rights Reserved.</dd>
19  * </dt>
20  * <dt><b>License: </b>
21  * <dd>Read the license.txt file of the jar or visit the <a
22  * HREF="http://www.sapia-oss.org/license.html">license page </a> at the Sapia
23  * OSS web site</dd>
24  * </dt>
25  * </dl>
26  */

27 public class ComboBinding extends AbstractJXPathBinding {
28
29   private Collection JavaDoc _options;
30
31   public void onBound(View owner, Object JavaDoc model) {
32     JComboBox JavaDoc list = (JComboBox JavaDoc) acquireWidget(owner);
33     list.removeAllItems();
34     initList(list, model);
35   }
36
37   public void onChanged(View owner, Object JavaDoc model) {
38     JComboBox JavaDoc list = (JComboBox JavaDoc) acquireWidget(owner);
39     initList(list, model);
40   }
41
42   public void onUpdated(View owner, Object JavaDoc model) {
43     JComboBox JavaDoc list = (JComboBox JavaDoc) acquireWidget(owner);
44     list.removeAllItems();
45     initList(list, model);
46   }
47
48   public void updateModel(View owner, Object JavaDoc model) {
49     JXPathContext ctx = JXPathContext.newContext(model);
50     ctx.setLenient(true);
51     JComboBox JavaDoc list = (JComboBox JavaDoc) acquireWidget(owner);
52     if(list.getSelectedIndex() >= 0) {
53       _expr.setValue(ctx, list.getSelectedItem());
54     }
55   }
56
57   public void setOptions(Collection JavaDoc options) {
58     _options = options;
59   }
60
61   public void addOption(Object JavaDoc option) {
62     if(_options == null) {
63       _options = new ArrayList JavaDoc();
64     }
65     _options.add(option);
66   }
67
68   private void initList(JComboBox JavaDoc comp, Object JavaDoc model) {
69     JXPathContext ctx = JXPathContext.newContext(model);
70     ctx.setLenient(true);
71     Object JavaDoc value = _expr.getValue(ctx);
72     if(value != null) {
73       if(_options != null) {
74         Iterator JavaDoc options = _options.iterator();
75         int count = 0;
76         while(options.hasNext()) {
77           Object JavaDoc current = options.next();
78           comp.addItem(value);
79           if(current.equals(value)) {
80             comp.setSelectedIndex(count);
81           }
82           count++;
83         }
84       }
85     } else {
86       Iterator JavaDoc options = _options.iterator();
87       while(options.hasNext()) {
88         comp.addItem(options.next());
89       }
90     }
91   }
92 }
93
Popular Tags