package com.revolsys.ui.web.config.action; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import com.revolsys.ui.html.layout.DefinitionListLayout; import com.revolsys.ui.html.layout.UnorderedListLayout; import com.revolsys.ui.html.view.DivElementContainer; import com.revolsys.ui.html.view.ElementContainer; import com.revolsys.ui.html.view.XmlTagElement; import com.revolsys.ui.model.Menu; import com.revolsys.ui.web.config.Action; import com.revolsys.ui.web.config.PageController; import com.revolsys.ui.web.config.Site; import com.revolsys.ui.web.config.SiteNode; import com.revolsys.ui.web.config.SiteNodeController; import com.revolsys.util.HtmlElem; public class DisplayConfigAction implements Action { private static final Logger log = Logger.getLogger(DisplayConfigAction.class); private void addMenu(final ElementContainer menusView, final String name, final Menu menu) { // TODO Auto-generated method stub } private void addSite(final ElementContainer view, final Site site) { view.add(new XmlTagElement(HtmlElem.H3, site.getName())); addSiteNode(view, site.getRootNode()); } private void addSiteNode(final ElementContainer view, final SiteNode siteNode) { if (siteNode != null) { final ElementContainer nodeView = new ElementContainer(); view.add(nodeView); final String path = siteNode.getPath(); if (path == null) { nodeView.add(new XmlTagElement(HtmlElem.H4, "/")); } else { nodeView.add(new XmlTagElement(HtmlElem.H4, path)); } final SiteNodeController controller = siteNode.getController(); if (controller instanceof PageController) { final PageController pageController = (PageController)controller; final ElementContainer pageView = new ElementContainer(new DefinitionListLayout()); nodeView.add(pageView); pageView.add("Actions"); final ElementContainer actionsView = new ElementContainer(new UnorderedListLayout()); pageView.add(actionsView); for (final Iterator actions = pageController.getActions().iterator(); actions.hasNext();) { final Action action = (Action)actions.next(); actionsView.add(action.getClass().getName()); } pageView.add("Menus"); final ElementContainer menusView = new ElementContainer(new UnorderedListLayout()); pageView.add(menusView); for (final Iterator menus = pageController.getMenus().entrySet().iterator(); menus .hasNext();) { final Map.Entry entry = (Entry)menus.next(); final String name = (String)entry.getKey(); final Menu menu = (Menu)entry.getValue(); addMenu(menusView, name, menu); } } final Collection nodes = siteNode.getNodes(); if (!nodes.isEmpty()) { final ElementContainer childNodesView = new ElementContainer(new UnorderedListLayout()); nodeView.add(childNodesView); for (final Iterator nodeIter = nodes.iterator(); nodeIter.hasNext();) { final SiteNode childNode = (SiteNode)nodeIter.next(); addSiteNode(childNodesView, childNode); } } } } @Override public void init(final ServletContext context) throws ServletException { } @Override public void process(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException { final DivElementContainer view = new DivElementContainer(); addSite(view, (Site)request.getAttribute("site")); request.setAttribute("view", view); response.setContentType("text/html"); view.serialize(response.getWriter()); } }