View Javadoc

1   /*
2    *  soapUI, copyright (C) 2006 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of the GNU Lesser General Public License as published by the Free Software Foundation; 
6    *  either version 2.1 of the License, or (at your option) any later version.
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  
24  public abstract class AbstractXFormField<T> implements XFormField
25  {
26  //	private T component;
27  	private Set<XFormFieldListener> listeners;
28  	private List<XFormFieldValidator> validators;
29  	private RequiredValidator requiredValidator;
30  	
31     public AbstractXFormField()
32     {
33     }
34  
35  //	public AbstractXFormField(T component)
36  //	{
37  //		this.component = component;
38  //	}
39  //
40  //	public Object getComponent(ToolkitType toolkitType)
41  //	{
42  //		return component;
43  //	}
44  //	
45  //	public final T getComponent()
46  //	{
47  //		return component;
48  //	}
49     
50  //   public abstract void createComponent(Object panel, ToolkitType toolkitType);
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  //	public void setToolTip(String tooltip)
71  //	{
72  //		component.setToolTipText( tooltip );
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 //	public boolean isEnabled()
105 //	{
106 //		return component.isEnabled();
107 //	}
108 //
109 //	public void setEnabled(boolean enabled)
110 //	{
111 //		component.setEnabled( enabled );	
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 }