package org.brixcms.plugin.content.folder; import javax.jcr.Node; import org.brixcms.Brix; import org.brixcms.jcr.JcrNodeWrapperFactory; import org.brixcms.jcr.api.JcrNode; import org.brixcms.jcr.api.JcrSession; import org.brixcms.jcr.wrapper.BrixNode; import org.brixcms.plugin.content.ContentPlugin; import org.brixcms.plugin.hierarchical.nodes.SimpleFolderNode; import org.brixcms.web.picker.common.TreeAwareNode; import org.brixcms.web.tree.AbstractJcrTreeNode; import org.brixcms.web.tree.JcrTreeNode; /** * @author dan.simko@gmail.com */ @SuppressWarnings("serial") public class FolderNode extends SimpleFolderNode implements TreeAwareNode { public FolderNode(Node delegate, JcrSession session) { super(delegate, session); } @Override public JcrTreeNode getTreeNode(BrixNode node) { return new FolderTreeNode(node); } private static class FolderTreeNode extends AbstractJcrTreeNode { public FolderTreeNode(BrixNode node) { super(node); } }; public static final JcrNodeWrapperFactory FACTORY = new JcrNodeWrapperFactory() { @Override public boolean canWrap(Brix brix, JcrNode node) { if (!node.isNodeType("nt:folder")) { return false; } ContentPlugin contentPlugin = ContentPlugin.get(brix); if (contentPlugin == null) { return false; } return node.getPath().startsWith(contentPlugin.getRootNodePath()); } @Override public JcrNode wrap(Brix brix, Node node, JcrSession session) { return new FolderNode(node, session); } }; public static FolderNode initialize(JcrNode node) { BrixNode brixNode = (BrixNode) node; brixNode.setNodeType(FolderNodePlugin.TYPE); return new FolderNode(node.getDelegate(), node.getSession()); } @Override public String getUserVisibleType() { return "Folder"; } }