1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.x.form;
14
15 import java.util.ArrayList;
16 import java.util.Arrays;
17 import java.util.HashSet;
18 import java.util.List;
19 import java.util.Set;
20
21 import com.eviware.x.form.validators.RequiredValidator;
22
23
24 public abstract class AbstractXFormField<T> implements XFormField
25 {
26
27 private Set<XFormFieldListener> listeners;
28 private List<XFormFieldValidator> validators;
29 private RequiredValidator requiredValidator;
30
31 public AbstractXFormField()
32 {
33 }
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public abstract T getComponent();
53
54 public void addFormFieldListener(XFormFieldListener listener)
55 {
56 if( listeners == null )
57 listeners = new HashSet<XFormFieldListener>();
58
59 listeners.add( listener );
60 }
61
62 public void addFormFieldValidator(XFormFieldValidator validator)
63 {
64 if( validators == null )
65 validators = new ArrayList<XFormFieldValidator>();
66
67 validators.add( validator );
68 }
69
70
71
72
73
74
75 public boolean isRequired()
76 {
77 return requiredValidator != null;
78 }
79
80 public void removeFieldListener(XFormFieldListener listener)
81 {
82 if( listeners != null )
83 listeners.remove( listener );
84 }
85
86 public void removeFormFieldValidator(XFormFieldValidator validator)
87 {
88 if( validators != null )
89 validators.remove( validator );
90 }
91
92 public void setRequired(boolean required, String message)
93 {
94 if( requiredValidator != null )
95 removeFormFieldValidator( requiredValidator );
96
97 if( required )
98 {
99 requiredValidator = new RequiredValidator( message );
100 addFormFieldValidator( requiredValidator );
101 }
102 }
103
104
105
106
107
108
109
110
111
112
113
114 public ValidationMessage[] validate()
115 {
116 if( validators == null || validators.isEmpty() )
117 return null;
118
119 List<ValidationMessage> messages = new ArrayList<ValidationMessage>();
120
121 for( XFormFieldValidator validator : validators )
122 {
123 ValidationMessage[] validateField = validator.validateField( this );
124 if( validateField != null && validateField.length > 0 )
125 messages.addAll( Arrays.asList( validateField));
126 }
127
128 return messages.toArray( new ValidationMessage[messages.size()] );
129 }
130
131 protected void fireValueChanged(String newValue, String oldValue )
132 {
133 if( listeners == null )
134 return;
135
136 for( XFormFieldListener listener : listeners )
137 {
138 listener.valueChanged( this, newValue, oldValue );
139 }
140 }
141
142 public Object getProperty(String name)
143 {
144 return null;
145 }
146
147 public void setProperty(String name, Object value)
148 {
149 }
150
151 public boolean isMultiRow()
152 {
153 return false;
154 }
155 }