package fr.openwide.core.wicket.more.markup.html.basic.impl; import java.util.Collection; import org.apache.wicket.Component; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; import com.google.common.base.Predicate; import fr.openwide.core.wicket.more.condition.Condition; import fr.openwide.core.wicket.more.markup.html.basic.AbstractComponentBooleanPropertyBehavior; import fr.openwide.core.wicket.more.markup.html.basic.IPlaceholderEnclosureBuilder; /** * NE PAS RÉFÉRENCER CETTE CLASSE. Elle devrait être déplacée dans le sous-package 'impl' et être renommée * en AbstractPlaceholderEnclosureBehavior afin de créer un véritable AbstractHideableContainer, dont la seule fonction * implémentée est le fait de définir sa visibilité à chaque onConfigure() (cf. {@link AbstractComponentBooleanPropertyBehavior}). */ public abstract class AbstractConfigurableComponentBooleanPropertyContainer<T extends AbstractConfigurableComponentBooleanPropertyContainer<T>> extends WebMarkupContainer implements IPlaceholderEnclosureBuilder<T> { private static final long serialVersionUID = -4570949966472824133L; private final AbstractConfigurableComponentBooleanPropertyBehavior<?> behavior; protected AbstractConfigurableComponentBooleanPropertyContainer(String wicketId, AbstractConfigurableComponentBooleanPropertyBehavior<?> behavior) { super(wicketId); this.behavior = behavior; add(behavior); } /** * @return this as an object of type T * @see PlaceholderBehavior * @see EnclosureBehavior */ protected abstract T thisAsT(); /** * @deprecated Use {@link Condition#collectionModelNotEmpty(IModel)} instead. */ @Deprecated @Override public T collectionModel(IModel<? extends Collection<?>> model) { behavior.collectionModel(model); return thisAsT(); } /** * @deprecated Use {@link Condition#modelNotNull(IModel)} instead. */ @Deprecated @Override public T model(IModel<?> model) { behavior.model(model); return thisAsT(); } /** * @deprecated Use {@link Condition#predicate(IModel, Predicate)} instead */ @Deprecated @Override public <T2> T model(Predicate<? super T2> predicate, IModel<? extends T2> model) { behavior.model(predicate, model); return thisAsT(); } /** * @deprecated Use {@link Condition#modelsAnyNotNull(IModel, IModel...)} instead */ @Deprecated @Override public T models(IModel<?> firstModel, IModel<?>... otherModels) { behavior.models(firstModel, otherModels); return thisAsT(); } /** * Use {@link Condition#predicateAnyTrue(Predicate, IModel, IModel...)} */ @Deprecated @Override @SafeVarargs public final <T2> T models(Predicate<? super T2> predicate, IModel<? extends T2> firstModel, IModel<? extends T2>... otherModels) { behavior.models(predicate, firstModel, otherModels); return thisAsT(); } /** * @deprecated Use {@link Condition#componentVisible(Component)} instead */ @Deprecated @Override public T component(Component component) { behavior.component(component); return thisAsT(); } /** * @deprecated Use {@link Condition#componentsAnyVisible(Component, Component...)} instead */ @Deprecated @Override public T components(Component firstComponent, Component... otherComponents) { behavior.components(firstComponent, otherComponents); return thisAsT(); } /** * @deprecated Use {@link Condition#componentsAnyVisible(Collection)} instead */ @Deprecated @Override public T components(Collection<? extends Component> components) { behavior.components(components); return thisAsT(); } public T condition(Condition condition) { behavior.condition(condition); return thisAsT(); } public T anyChildVisible() { behavior.condition(Condition.anyChildVisible(this)); return thisAsT(); } public T anyChildEnabled() { behavior.condition(Condition.anyChildEnabled(this)); return thisAsT(); } }