1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.silvermindsoftware.hitch.binding.components;
18
19 import java.util.List;
20
21 import javax.swing.JList;
22 import javax.swing.ListCellRenderer;
23
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26 import org.jdesktop.beansbinding.AutoBinding;
27 import org.jdesktop.beansbinding.Property;
28 import org.jdesktop.swingbinding.JListBinding;
29 import org.jdesktop.swingbinding.SwingBindings;
30
31 import com.silvermindsoftware.hitch.binding.AbstractBindingCreator;
32 import com.silvermindsoftware.hitch.binding.PropertyUtil;
33
34 import ch.elca.el4j.services.gui.swing.GUIApplication;
35 import ch.elca.el4j.util.config.GenericConfig;
36
37
38
39
40
41
42
43
44 public class ListBinding extends AbstractBindingCreator<JList> {
45
46
47
48 private static Logger s_logger = LoggerFactory.getLogger(ListBinding.class);
49
50
51
52
53 private Property<?, ?> m_property;
54
55
56
57
58 public ListBinding(String property) {
59 this(PropertyUtil.create(property));
60 }
61
62
63
64
65 public ListBinding(Property<?, ?> property) {
66 m_property = property;
67 }
68
69
70 @SuppressWarnings("unchecked")
71 public AutoBinding createBinding(Object object, JList formComponent) {
72 if (!List.class.isAssignableFrom(object.getClass())) {
73 s_logger.error("Cannot bind object " + object.toString()
74 + " to list component, because it is not a list.");
75 return null;
76 }
77 List list = (List) object;
78 JListBinding lb = SwingBindings.createJListBinding(
79 m_updateStrategy, list, formComponent);
80
81
82 lb.setDetailBinding(m_property);
83
84 return lb;
85 }
86
87
88 public void addValidation(JList formComponent) {
89 GenericConfig config = GUIApplication.getInstance().getConfig();
90 formComponent.setCellRenderer(
91 (ListCellRenderer) config.get("cellRenderer"));
92 }
93
94 }