package org.brixcms.plugin.content.blog.tile.post.comment; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.datetime.markup.html.basic.DateLabel; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.brixcms.jcr.api.JcrSession; import org.brixcms.plugin.content.blog.post.comment.CommentNode; import org.brixcms.web.generic.BrixGenericPanel; /** * @author dan.simko@gmail.com */ @SuppressWarnings("serial") public class CommentPanel extends BrixGenericPanel<CommentNode> { private static final String REPLY_PANEL_ID = "reply"; public CommentPanel(String id, IModel<CommentNode> model) { super(id, new CompoundPropertyModel<CommentNode>(model)); setOutputMarkupId(true); add(new Label("createdBy")); add(DateLabel.forDateStyle("created", "FS")); add(new Label("dataAsString")); add(new EmptyPanel("reply")); add(new AjaxLink<Void>("replyLink") { @Override public boolean isVisible() { return CommentPanel.this.get(REPLY_PANEL_ID) instanceof EmptyPanel; } @Override public void onClick(AjaxRequestTarget target) { Component panel = CommentPanel.this.get(REPLY_PANEL_ID); panel.replaceWith(new AddCommentPanel<CommentNode>(REPLY_PANEL_ID, model)); target.add(CommentPanel.this); } }); add(new Link<CommentNode>("deleteLink", model) { @Override public void onClick() { CommentNode commentNode = getModelObject(); JcrSession session = commentNode.getSession(); commentNode.remove(); session.save(); } }); add(new CommentsPanel<>("comments", model, false)); } }