package fr.openwide.core.wicket.more.link.descriptor.builder.impl.factory;
import org.apache.wicket.Page;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.resource.ResourceReference;
import fr.openwide.core.wicket.more.link.descriptor.IImageResourceLinkDescriptor;
import fr.openwide.core.wicket.more.link.descriptor.IPageLinkDescriptor;
import fr.openwide.core.wicket.more.link.descriptor.IResourceLinkDescriptor;
import fr.openwide.core.wicket.more.util.model.Models;
/**
* A container object for storing the various {@link IBuilderLinkDescriptorFactory}.
*/
public class BuilderTargetFactories
<
TEarlyTargetDefinitionLinkDescriptor, TEarlyTarget,
TLateTargetDefinitionPageLinkDescriptor,
TLateTargetDefinitionResourceLinkDescriptor,
TLateTargetDefinitionImageResourceLinkDescriptor
> {
public static <TEarlyTargetDefinitionLinkDescriptor, TEarlyTarget>
BuilderTargetFactories<
TEarlyTargetDefinitionLinkDescriptor, TEarlyTarget,
Void, Void, Void
> early(IBuilderLinkDescriptorFactory<TEarlyTarget, TEarlyTargetDefinitionLinkDescriptor> factory,
IModel<? extends TEarlyTarget> earlyTargetModel) {
return new BuilderTargetFactories<
TEarlyTargetDefinitionLinkDescriptor, TEarlyTarget,
Void, Void, Void
>(
factory, earlyTargetModel,
BuilderLinkDescriptorFactory.<Class<? extends Page>>none(),
BuilderLinkDescriptorFactory.<ResourceReference>none(),
BuilderLinkDescriptorFactory.<ResourceReference>none()
);
}
public static <TEarlyTargetDefinitionLinkDescriptor> BuilderTargetFactories<
Void, Void,
IPageLinkDescriptor, IResourceLinkDescriptor, IImageResourceLinkDescriptor
> late() {
return new BuilderTargetFactories<
Void, Void,
IPageLinkDescriptor, IResourceLinkDescriptor, IImageResourceLinkDescriptor
>(
BuilderLinkDescriptorFactory.<Void>none(), Models.<Void>placeholder(),
BuilderLinkDescriptorFactory.page(),
BuilderLinkDescriptorFactory.resource(),
BuilderLinkDescriptorFactory.imageResource()
);
}
private final IBuilderLinkDescriptorFactory<TEarlyTarget, TEarlyTargetDefinitionLinkDescriptor>
earlyTargetDefinitionLinkDescriptorFactory;
private final IModel<? extends TEarlyTarget> earlyTargetDefinitionTargetModel;
private final IBuilderLinkDescriptorFactory<
Class<? extends Page>, TLateTargetDefinitionPageLinkDescriptor
> lateTargetDefinitionPageLinkDescriptorFactory;
private final IBuilderLinkDescriptorFactory<
ResourceReference, TLateTargetDefinitionResourceLinkDescriptor
> lateTargetDefinitionResourceLinkDescriptorFactory;
private final IBuilderLinkDescriptorFactory<
ResourceReference, TLateTargetDefinitionImageResourceLinkDescriptor
> lateTargetDefinitionImageResourceLinkDescriptorFactory;
private BuilderTargetFactories(
IBuilderLinkDescriptorFactory<TEarlyTarget, TEarlyTargetDefinitionLinkDescriptor>
earlyTargetDefinitionLinkDescriptorFactory,
IModel<? extends TEarlyTarget> earlyTargetDefinitionTargetModel,
IBuilderLinkDescriptorFactory<
Class<? extends Page>, TLateTargetDefinitionPageLinkDescriptor
> lateTargetDefinitionPageLinkDescriptorFactory,
IBuilderLinkDescriptorFactory<
ResourceReference, TLateTargetDefinitionResourceLinkDescriptor
> lateTargetDefinitionResourceLinkDescriptorFactory,
IBuilderLinkDescriptorFactory<
ResourceReference, TLateTargetDefinitionImageResourceLinkDescriptor
> lateTargetDefinitionImageResourceLinkDescriptorFactory) {
super();
this.earlyTargetDefinitionLinkDescriptorFactory = earlyTargetDefinitionLinkDescriptorFactory;
this.earlyTargetDefinitionTargetModel = earlyTargetDefinitionTargetModel;
this.lateTargetDefinitionPageLinkDescriptorFactory = lateTargetDefinitionPageLinkDescriptorFactory;
this.lateTargetDefinitionResourceLinkDescriptorFactory = lateTargetDefinitionResourceLinkDescriptorFactory;
this.lateTargetDefinitionImageResourceLinkDescriptorFactory = lateTargetDefinitionImageResourceLinkDescriptorFactory;
}
public IBuilderLinkDescriptorFactory<TEarlyTarget, TEarlyTargetDefinitionLinkDescriptor>
getEarlyTargetDefinitionLinkDescriptorFactory() {
return earlyTargetDefinitionLinkDescriptorFactory;
}
public IModel<? extends TEarlyTarget> getEarlyTargetDefinitionTargetModel() {
return earlyTargetDefinitionTargetModel;
}
public IBuilderLinkDescriptorFactory<Class<? extends Page>, TLateTargetDefinitionPageLinkDescriptor>
getLateTargetDefinitionPageLinkDescriptorFactory() {
return lateTargetDefinitionPageLinkDescriptorFactory;
}
public IBuilderLinkDescriptorFactory<ResourceReference, TLateTargetDefinitionResourceLinkDescriptor>
getLateTargetDefinitionResourceLinkDescriptorFactory() {
return lateTargetDefinitionResourceLinkDescriptorFactory;
}
public IBuilderLinkDescriptorFactory<ResourceReference, TLateTargetDefinitionImageResourceLinkDescriptor>
getLateTargetDefinitionImageResourceLinkDescriptorFactory() {
return lateTargetDefinitionImageResourceLinkDescriptorFactory;
}
}