1 5 package org.exoplatform.portlets.nav.renderer.html; 6 7 import java.io.IOException ; 8 import java.util.ResourceBundle ; 9 import javax.faces.component.UIComponent; 10 import javax.faces.context.FacesContext; 11 import javax.faces.context.ResponseWriter; 12 import org.exoplatform.container.SessionContainer; 13 import org.exoplatform.faces.core.renderer.html.HtmlBasicRenderer; 14 import org.exoplatform.portal.filter.AdminRequestFilter; 15 import org.exoplatform.portal.session.ExoPortal; 16 import org.exoplatform.portal.session.RequestInfo; 17 import org.exoplatform.portlets.nav.component.UIMenu; 18 import org.exoplatform.services.portal.model.Node; 19 26 public class ExoMenuRenderer extends HtmlBasicRenderer { 27 28 public void encodeChildren(FacesContext context, UIComponent uiComponent) throws IOException { 29 ResourceBundle res = getApplicationResourceBundle(context.getExternalContext()) ; 30 UIMenu uiMenu = (UIMenu) uiComponent ; 31 SessionContainer scontainer = SessionContainer.getInstance() ; 32 RequestInfo rinfo = (RequestInfo)scontainer.getComponentInstanceOfType(RequestInfo.class); 33 ExoPortal portal = (ExoPortal)scontainer.getComponentInstanceOfType(ExoPortal.class) ; 34 String ownerURI = rinfo.getOwnerURI() ; 35 ResponseWriter w = context.getResponseWriter() ; 36 Node selectNode = portal.getRootNode(); 37 w.write("<div class='UIMenu'>"); 38 if(uiMenu.isShowAdminButton()) { 39 renderAdmin(res, w, uiMenu); 40 } 41 w. write("<div class='tree'>"); 42 w. write("<div class='root'>"); 43 w. write("<a HREF='"); w.write(ownerURI); w.write(selectNode.getUri()); w.write("'>") ; 44 w. write(selectNode.getResolvedLabel()) ; 45 w. write("</a>") ; 46 w. write("</div>"); 47 renderNode(w, uiMenu, res, selectNode, ownerURI); 48 w. write("</div>"); 49 w.write("</div>"); 50 61 } 62 63 protected void renderNode(ResponseWriter w, UIMenu uiMenu, ResourceBundle res, 64 Node node, String ownerURI) throws IOException { 65 int childrenSize = node.getChildrenSize(); 66 if (childrenSize == 0) return; 67 w.write("<ul>"); 68 for (int i = 0; i < childrenSize; i++) { 69 Node child = node.getChild(i); 70 if(!child.isVisible()) continue ; 71 if (child.getChildrenSize() > 0) { 72 if (child.isSelectedPath()) { 73 w.write("<li class='expanded-child'>"); 74 } else { 75 w.write("<li class='collapsed-child'>"); 76 } 77 } else { 78 w.write("<li class='leaf'>"); 79 } 80 w. write("<a HREF='"); w.write(ownerURI); w.write(child.getUri()); w.write("'>") ; 81 w. write(child.getResolvedLabel()) ; 82 w. write("</a>") ; 83 if (child.isSelectedPath()) { 84 renderNode(w, uiMenu, res, child, ownerURI); 85 } 86 w.write("</li>"); 87 } 88 w.write("</ul>"); 89 } 90 91 protected void renderAdmin(ResourceBundle res, ResponseWriter w, UIMenu uiMenu) throws IOException { 92 UIComponent uiChild = uiMenu.getUIToolbarView(); 93 uiChild.encodeBegin(FacesContext.getCurrentInstance()); 94 uiChild.encodeChildren(FacesContext.getCurrentInstance()); 95 uiChild.encodeEnd(FacesContext.getCurrentInstance()); 96 } 97 } | Popular Tags |