package fr.openwide.core.wicket.more.link.descriptor.impl;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.ResourceReference;
import com.google.common.collect.ImmutableList;
import fr.openwide.core.wicket.more.link.descriptor.DynamicImage;
import fr.openwide.core.wicket.more.link.descriptor.IImageResourceLinkDescriptor;
import fr.openwide.core.wicket.more.link.descriptor.generator.IImageResourceLinkGenerator;
import fr.openwide.core.wicket.more.link.descriptor.parameter.mapping.LinkParametersMapping;
import fr.openwide.core.wicket.more.link.descriptor.parameter.validator.ILinkParameterValidator;
import fr.openwide.core.wicket.more.util.model.Models;
public class CoreImageResourceLinkDescriptorImpl extends CoreResourceLinkDescriptorImpl
implements IImageResourceLinkDescriptor {
private static final long serialVersionUID = 1L;
public CoreImageResourceLinkDescriptorImpl(IModel<? extends ResourceReference> resourceReferenceModel,
LinkParametersMapping parametersMapping, ILinkParameterValidator validator) {
super(resourceReferenceModel, parametersMapping, validator);
}
@Override
public DynamicImage image(String wicketId) {
return new DynamicImage(wicketId, resourceReferenceModel, parametersMapping, parametersValidator);
}
@Override
public IImageResourceLinkDescriptor wrap(Component component) {
return new CoreImageResourceLinkDescriptorImpl(
Models.wrap(resourceReferenceModel, component),
parametersMapping.wrapOnAssignment(component),
parametersValidator
);
}
@Override
public IImageResourceLinkGenerator chain(IImageResourceLinkGenerator other) {
if (other instanceof IImageResourceLinkGenerator) {
return chain((IImageResourceLinkGenerator) other);
}
return new ChainedImageResourceLinkGeneratorImpl(ImmutableList.of(this, other));
}
}