package fr.openwide.core.showcase.web.application.links.component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import fr.openwide.core.showcase.core.business.user.model.User;
import fr.openwide.core.showcase.web.application.navigation.link.LinkFactory;
import fr.openwide.core.showcase.web.application.widgets.component.UserAutocompleteAjaxComponent;
import fr.openwide.core.wicket.more.link.descriptor.LinkInvalidTargetRuntimeException;
import fr.openwide.core.wicket.more.link.descriptor.parameter.validator.LinkParameterValidationRuntimeException;
import fr.openwide.core.wicket.more.model.GenericEntityModel;
public class DynamicImageTestPanel extends GenericPanel<User> {
private static final long serialVersionUID = -3224809110343020920L;
public DynamicImageTestPanel(String id) {
super(id, new GenericEntityModel<Long, User>(null));
final IModel<User> userModel = getModel();
Form<?> form = new Form<Void>("form");
add(form);
final MarkupContainer testContainer = new WebMarkupContainer("testContainer");
testContainer.setOutputMarkupId(true);
add(testContainer);
UserAutocompleteAjaxComponent autocomplete = new UserAutocompleteAjaxComponent("user", userModel) {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
target.add(testContainer);
}
};
autocomplete.setAutoUpdate(true);
final IModel<Boolean> booleanModel = Model.of(false);
form.add(
new CheckBox("boolean", booleanModel)
.setLabel(new ResourceModel("links.boolean")),
autocomplete
.setLabel(new ResourceModel("links.imageUnusedUserParameter"))
);
form.add(new AjaxFormSubmitBehavior(OnChangeAjaxBehavior.EVENT_NAME) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target) {
target.add(testContainer);
}
});
testContainer.add(
new Label("url", new AbstractReadOnlyModel<String>() {
private static final long serialVersionUID = 1L;
@Override
public String getObject() {
try {
return LinkFactory.get().testImage(booleanModel, userModel).fullUrl();
} catch(LinkInvalidTargetRuntimeException|LinkParameterValidationRuntimeException e) {
return e.getMessage();
}
}
@Override
public void detach() {
super.detach();
booleanModel.detach();
userModel.detach();
}
}),
LinkFactory.get().testImage(booleanModel, userModel).image("dynamicImage")
.hideIfInvalid(),
LinkFactory.get().testImage(booleanModel, userModel).link("bookmarkableLink")
.hideIfInvalid()
);
}
}