KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > portlets > nav > renderer > html > ExoMenuRenderer


1 /***************************************************************************
2  * Copyright 2001-2003 The eXo Platform SARL All rights reserved. *
3  * Please look at license.txt in info directory for more license detail. *
4  **************************************************************************/

5 package org.exoplatform.portlets.nav.renderer.html;
6
7 import java.io.IOException JavaDoc;
8 import java.util.ResourceBundle JavaDoc;
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 /**
20  * Thu, May 5, 2004 @ 15:38
21  *
22  * @author: Tuan Nguyen
23  * @email: tuan08@users.sourceforge.net
24  * @version: $Id: ExoMenuRenderer.java,v 1.14 2004/10/19 14:30:53 benjmestrallet Exp $
25  */

26 public class ExoMenuRenderer extends HtmlBasicRenderer {
27   
28   public void encodeChildren(FacesContext context, UIComponent uiComponent) throws IOException JavaDoc {
29     ResourceBundle JavaDoc 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 JavaDoc 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     /*
51     if(uiMenu.getShowReturn()) {
52       w.write("<div class='inspect'>");
53       w.write("<a HREF='"); w.write(ownerURI); w.write('?');
54       w.write(AdminRequestFilter.ACTION); w.write('=') ; w.write(AdminRequestFilter.RETURN) ;
55       w.write("'>") ;
56       w. write(res.getString("UIMenu.button.back")) ;
57       w.write("</a>") ;
58       w.write("</div>");
59     }
60     */

61   }
62
63   protected void renderNode(ResponseWriter w, UIMenu uiMenu, ResourceBundle JavaDoc res,
64                             Node node, String JavaDoc ownerURI) throws IOException JavaDoc {
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 JavaDoc res, ResponseWriter w, UIMenu uiMenu) throws IOException JavaDoc {
92     UIComponent uiChild = uiMenu.getUIToolbarView();
93     uiChild.encodeBegin(FacesContext.getCurrentInstance());
94     uiChild.encodeChildren(FacesContext.getCurrentInstance());
95     uiChild.encodeEnd(FacesContext.getCurrentInstance());
96   }
97 }
Popular Tags