Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2002-2010 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package info.joseluismartin.gui.bind;
 
 
 import java.util.Date;
 
Base class for Binders. Implement doBind() to do the binding. Dereference ModelHolders when setting its as binded model.

Author(s):
Jose Luis Martin - (jlm@joseluismartin.info)
 
 public abstract class AbstractBinder implements PropertyBinder {
 	
 	private static final Log log = LogFactory.getLog(AbstractBinder.class);

binded property name
  
 	protected String propertyName;
last value, used to revert o detect cicles
 
 	protected Object oldValue;
binded model
 
 	private Object model;
component object
 
 	protected Object component;
if true, binding is readOnly, ie from model to control
 
 	protected boolean readOnly = false;
 
 	public final void bind(Object componentString propertyNameObject model) {
 		bind(componentpropertyNamemodelfalse);
 	}

 
 	public final void bind(Object componentString propertyNameObject modelboolean readOnly) {
 		this. = propertyName;
 		this. = model;
 		this. = component;
 		this. = readOnly;
 		doBind();
 	}

Hook method to do bind via Component Listeners By default, do nothing

Parameters:
component Component to bind
 
 	protected void doBind() {
 		
 	}
 	
 	public final void refresh() {
 	}
 	
 	public final void update() {
 		if (! &&  != null) {
 		}
 	}

Create a new Binding result, override to set nested paths on complex binders

Returns:
a new instance of BindingResult for this model
 
	}
	abstract protected void doRefresh();
	abstract protected void doUpdate();

Set value on binded object using the property name.

Parameters:
value the value to set
	protected void setValue(Object value) {
		if (value == null || value != ) {
			try {
				 = value;
			}
			catch (PropertyAccessException pae) {
				.error(pae);
			}
		}
	}

Get value from model

Returns:
model value
	protected Object getValue() {
		Object value = null;
		try {
			value = wrapper.getPropertyValue();
		catch (BeansException e) {
		}
		return value;
	}
		BeanWrapper wrapper = PropertyAccessorFactory.forBeanPropertyAccess(getModel());
		wrapper.registerCustomEditor(Date.class
				new CustomDateEditor(SimpleDateFormat.getDateTimeInstance(), true));
		return wrapper;
	}
	// Getters and Setters
	public String getPropertyName() {
		return ;
	}
	public void setPropertyName(String propertyName) {
		this. = propertyName;
	}
	protected Object getOldValue() {
		return ;
	}
	protected void setOldValue(Object oldValue) {
		this. = oldValue;
	}
	public Object getModel() {
		if ( instanceof ModelHolder<?>) {
			return ((ModelHolder<?>) ).getModel();
		}
		return ;
	}
	public void setModel(Object model) {
		this. = model;
	}

Returns:
the component
	public Object getComponent() {
		return ;
	}

Parameters:
component the component to set
	public void setComponent(Object component) {
		this. = component;
	}
	}
New to GrepCode? Check out our FAQ X