package net.databinder.components;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.IModel;
/**
* Links to set the model of a target component.
* @author Nathan Hamblen
*/
public class ModelSourceLink<T> extends Link<T> {
private Component target;
/**
* Construct link to set model of component.
* @param id component id
* @param target set model of this component
* @param model the model to set
*/
public ModelSourceLink(String id, Component target, IModel<T> model) {
super(id, model);
this.target = target;
}
/** return false when model is already set to target and is visible */
@Override
public boolean isEnabled() {
if (!target.isVisible())
return true;
return !getModelObject().equals(target.getDefaultModelObject());
}
/**
* Set model of target, and set target to visible in case it has hide before use behavior.
*/
@Override
public void onClick() {
target.setDefaultModelObject(getModelObject());
target.setVisible(true);
}
}