001 package net.databinder.components;
002
003 import org.apache.wicket.Component;
004 import org.apache.wicket.markup.html.link.Link;
005 import org.apache.wicket.model.IModel;
006
007 /**
008 * Links to set the model of a target component.
009 * @author Nathan Hamblen
010 */
011 public class ModelSourceLink extends Link {
012 private Component target;
013 /**
014 * Construct link to set model of component.
015 * @param id component id
016 * @param target set model of this component
017 * @param model the model to set
018 */
019 public ModelSourceLink(String id, Component target, IModel model) {
020 super(id, model);
021 this.target = target;
022 }
023 /** return false when model is already set to target and is visible */
024 @Override
025 public boolean isEnabled() {
026 if (!target.isVisible())
027 return true;
028
029 return !getModelObject().equals(target.getModelObject());
030 }
031 /**
032 * Set model of target, and set target to visible in case it has hide before use behavior.
033 */
034 @Override
035 public void onClick() {
036 target.setModelObject(getModelObject());
037 target.setVisible(true);
038 }
039 }