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 public abstract class AbstractXFormField<T> implements XFormField
24 {
25 private Set<XFormFieldListener> listeners;
26 private List<XFormFieldValidator> validators;
27 private RequiredValidator requiredValidator;
28 private ComponentEnabler enabler = null;
29
30 public AbstractXFormField()
31 {
32 }
33
34 public abstract T getComponent();
35
36 public void addFormFieldListener( XFormFieldListener listener )
37 {
38 if( listeners == null )
39 listeners = new HashSet<XFormFieldListener>();
40
41 listeners.add( listener );
42 }
43
44 public void addFormFieldValidator( XFormFieldValidator validator )
45 {
46 if( validators == null )
47 validators = new ArrayList<XFormFieldValidator>();
48
49 validators.add( validator );
50 }
51
52 public void addComponentEnabler( XFormField tf, String value )
53 {
54 if( enabler == null )
55 {
56 enabler = new ComponentEnabler( this );
57 }
58 enabler.add( tf, value );
59 }
60
61 public boolean isRequired()
62 {
63 return requiredValidator != null;
64 }
65
66 public void removeFieldListener( XFormFieldListener listener )
67 {
68 if( listeners != null )
69 listeners.remove( listener );
70 }
71
72 public void removeFormFieldValidator( XFormFieldValidator validator )
73 {
74 if( validators != null )
75 validators.remove( validator );
76 }
77
78 public void setRequired( boolean required, String message )
79 {
80 if( requiredValidator != null )
81 removeFormFieldValidator( requiredValidator );
82
83 if( required )
84 {
85 requiredValidator = new RequiredValidator( message );
86 addFormFieldValidator( requiredValidator );
87 }
88 }
89
90 public ValidationMessage[] validate()
91 {
92 if( validators == null || validators.isEmpty() )
93 return null;
94
95 ArrayList<ValidationMessage> messages = new ArrayList<ValidationMessage>();
96
97 for( XFormFieldValidator validator : validators )
98 {
99 ValidationMessage[] validateField = validator.validateField( this );
100 if( validateField != null && validateField.length > 0 )
101 messages.addAll( Arrays.asList( validateField ) );
102 }
103
104 return messages.toArray( new ValidationMessage[messages.size()] );
105 }
106
107 protected void fireValueChanged( String newValue, String oldValue )
108 {
109 if( listeners == null )
110 return;
111
112 for( XFormFieldListener listener : listeners )
113 {
114 listener.valueChanged( this, newValue, oldValue );
115 }
116 }
117
118 public Object getProperty( String name )
119 {
120 return null;
121 }
122
123 public abstract void setProperty( String name, Object value );
124
125 public boolean isMultiRow()
126 {
127 return false;
128 }
129 }