View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
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 }