package de.flower.rmt.ui.page.blog;
import de.flower.common.ui.ajax.event.AjaxEventSender;
import de.flower.common.ui.markup.html.form.TextAreaMaxLengthBehavior;
import de.flower.rmt.model.db.entity.BArticle;
import de.flower.rmt.model.db.entity.BComment;
import de.flower.rmt.service.IBlogManager;
import de.flower.rmt.ui.markup.html.form.EntityForm;
import de.flower.rmt.ui.panel.RMTBasePanel;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
/**
* form to create new comment.
*
* @author flowerrrr
*/
public class CommentFormPanel extends RMTBasePanel<BArticle> {
@SpringBean
private IBlogManager blogManager;
public CommentFormPanel(final IModel<BArticle> model) {
super(model);
IModel<BComment> commentModel = new LoadableDetachableModel<BComment>() {
@Override
protected BComment load() {
return blogManager.newComment(model.getObject(), getUser());
}
};
EntityForm<BComment> form = new EntityForm<BComment>("form", commentModel) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<BComment> form) {
BComment comment = form.getModelObject();
if (StringUtils.isNotBlank(comment.getText())) {
blogManager.save(comment);
}
AjaxEventSender.entityEvent(this, BComment.class);
}
};
add(form);
form.add(new TextArea("text") {
{
add(new TextAreaMaxLengthBehavior(BComment.MAXLENGTH));
}
});
}
}