package org.brixcms.plugin.content.breadcrumb;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.brixcms.BrixNodeModel;
import org.brixcms.jcr.wrapper.BrixNode;
import org.brixcms.plugin.site.page.PageSiteNodePlugin;
import org.brixcms.plugin.site.page.tile.admin.GenericTileEditorPanel;
import org.brixcms.plugin.site.picker.node.SiteNodePickerPanel;
import org.brixcms.web.picker.node.NodePickerPanel;
import org.brixcms.web.picker.node.NodeTypeFilter;
import org.brixcms.web.tree.NodeFilter;
@SuppressWarnings("serial")
public class BreadcrumbTileEditor extends GenericTileEditorPanel<BrixNode> {
public static final String HOME_NODE = "homeNode";
public static final String HOME_TITLE = "homeTitle";
private IModel<BrixNode> targetNodeModel = new BrixNodeModel<>();
private String title = "Home";
public BreadcrumbTileEditor(String id, IModel<BrixNode> tileContainerNode) {
this(id, tileContainerNode, new NodeTypeFilter(PageSiteNodePlugin.TYPE));
}
public BreadcrumbTileEditor(String id, IModel<BrixNode> tileContainerNode, NodeFilter filter) {
super(id, tileContainerNode);
NodePickerPanel picker = new SiteNodePickerPanel("nodePicker", targetNodeModel,
tileContainerNode.getObject().getSession().getWorkspace().getName(), filter);
picker.setRequired(true);
add(picker);
add(new TextField<String>("title", new PropertyModel<String>(this, "title")).setRequired(true));
}
@Override
protected void detachModel() {
if (targetNodeModel != null) {
targetNodeModel.detach();
}
super.detachModel();
}
@Override
public void load(BrixNode node) {
if (node.hasProperty(HOME_NODE)) {
BrixNode pageNode = (BrixNode) node.getProperty(HOME_NODE).getNode();
targetNodeModel.setObject(pageNode);
}
if (node.hasProperty(HOME_TITLE)) {
title = node.getProperty(HOME_TITLE).getString();
}
}
@Override
public void save(BrixNode node) {
node.setProperty(HOME_NODE, targetNodeModel.getObject());
node.setProperty(HOME_TITLE, title);
}
}