package org.brixcms.plugin.content.blog.tile; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.OnChangeAjaxBehavior; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.PropertyModel; import org.brixcms.Brix; import org.brixcms.auth.Action.Context; import org.brixcms.jcr.wrapper.BrixNode; import org.brixcms.plugin.content.ContentPlugin; import org.brixcms.plugin.content.folder.FolderNodePlugin; import org.brixcms.plugin.hierarchical.admin.HierarchicalNodeManagerPanel; import org.brixcms.plugin.site.page.tile.admin.GenericTileEditorPanel; import org.brixcms.web.picker.common.TreeAwareNode; import org.brixcms.web.picker.node.NodePickerPanel; import org.brixcms.web.picker.node.NodeTypeFilter; import org.brixcms.workspace.Workspace; /** * @author dan.simko@gmail.com */ @SuppressWarnings("serial") public class BaseBlogTileEditorPanel extends GenericTileEditorPanel<BrixNode> { protected final BaseBlogContainer currentEntry; public BaseBlogTileEditorPanel(String id, IModel<BrixNode> tileContainerNode, BaseBlogContainer blogContainer) { super(id, tileContainerNode); this.currentEntry = blogContainer; setOutputMarkupId(true); } @Override public void load(BrixNode node) { currentEntry.load(node); } @Override public void save(BrixNode node) { currentEntry.save(node); } protected DropDownChoice<Workspace> newWorkspaceSwitcher(String id) { WorkspacesModel workspacesModel = new WorkspacesModel(); DropDownChoice<Workspace> switcher = new DropDownChoice<Workspace>(id, new PropertyModel<Workspace>(currentEntry, "workspace"), workspacesModel, new ChoiceRenderer<Workspace>() { @Override public Object getDisplayValue(Workspace workspace) { return ContentPlugin.get().getUserVisibleName(workspace, false); } @Override public String getIdValue(Workspace object, int index) { return object.getId(); } }); add(switcher); switcher.setNullValid(false); switcher.add(new OnChangeAjaxBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { target.add(BaseBlogTileEditorPanel.this); } }); return switcher; } protected WebMarkupContainer newNodePickerPanel(String id) { // TODO workspace state Workspace workspace = ContentPlugin.get().getContentWorkspace(currentEntry.getContentWorkspaceName(), null); if (workspace == null) { return new WebMarkupContainer(id); } NodePickerPanel picker = new NodePickerPanel(id, new PropertyModel<BrixNode>(currentEntry, "contentFolder"), TreeAwareNode.Util.getTreeNode(ContentPlugin.get().getRootNode(workspace.getId())), HierarchicalNodeManagerPanel.SHOW_ALL_NON_NULL_NODES_FILTER, new NodeTypeFilter(FolderNodePlugin.TYPE)); picker.setRequired(true); return picker; } private static class WorkspacesModel extends LoadableDetachableModel<List<Workspace>> { @Override protected List<Workspace> load() { return Brix.get().filterVisibleWorkspaces(ContentPlugin.get().getWorkspaces(null, false), Context.ADMINISTRATION); } } }