KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > portal > faces > renderer > html > portlet > PortletCategoriesRenderer


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.portal.faces.renderer.html.portlet;
6
7
8 import javax.faces.component.UIComponent;
9 import javax.faces.context.FacesContext;
10 import javax.faces.context.ResponseWriter;
11 import org.exoplatform.faces.core.component.model.Parameter;
12 import org.exoplatform.faces.core.renderer.html.HtmlBasicRenderer;
13 import org.exoplatform.portal.faces.component.UIPortletCategories;
14 import org.exoplatform.portal.faces.component.model.PortletCategoryData;
15 import org.exoplatform.services.portletregistery.Portlet;
16 import java.io.IOException JavaDoc;
17 import java.util.Collection JavaDoc;
18 import java.util.Iterator JavaDoc;
19 import java.util.List JavaDoc;
20 import java.util.ResourceBundle JavaDoc;
21 /**
22  * Created y the eXo platform team
23  * User: Benjamin Mestrallet
24  * Date: 16 juin 2004
25  */

26 public class PortletCategoriesRenderer extends HtmlBasicRenderer{
27   private static Parameter[] cancelActionParams_ =
28     { new Parameter(ACTION , CANCEL_ACTION) };
29   
30   private static Parameter SELECT_PORTLET_CATEGORY =
31     new Parameter(ACTION , UIPortletCategories.SELECT_PORTLET_CATEGORY) ;
32   private static Parameter SHOW_PORTLET_CATEGORY =
33     new Parameter(ACTION , UIPortletCategories.SHOW_PORTLET_CATEGORY_MONITOR) ;
34   private static Parameter SHOW_PORTLET =
35     new Parameter(ACTION , UIPortletCategories.SHOW_PORTLET_MONITOR) ;
36   
37   final public static String JavaDoc EXPAND = "<img class='expand' SRC='/skin/blank.gif'/>";
38   final public static String JavaDoc COLLAPSE = "<img class='collapse' SRC='/skin/blank.gif'/>";
39
40   public void encodeChildren( FacesContext context, UIComponent component ) throws IOException JavaDoc {
41     UIPortletCategories uiCategories = (UIPortletCategories) component;
42     ResourceBundle JavaDoc res = getApplicationResourceBundle(context.getExternalContext()) ;
43     ResponseWriter w = context.getResponseWriter() ;
44     List JavaDoc children = component.getChildren() ;
45     w.write("<table class='UIPortletRegistery'>") ;
46     w. write("<tr>") ;
47     if (!uiCategories.hasCategory()) {
48       w.write("<td class='no-category'>");
49       w.write(res.getString("UIPortletCategories.label.no-categories"));
50       w.write("</td>");
51     } else {
52         w. write("<td class='UIPortletCategoryMenu'>") ;
53         renderMenu(context, uiCategories) ;
54         w. write("</td>") ;
55       for(int i = 0; i < children.size(); i++) {
56         UIComponent uiChild = (UIComponent) children.get(i);
57         if(uiChild.isRendered()) {
58             w.write("<td width='*'>") ;
59             uiChild.encodeBegin(context) ;
60             uiChild.encodeChildren(context) ;
61             uiChild.encodeEnd(context) ;
62             w. write("</td>") ;
63         }
64       }
65       w. write("</tr>") ;
66     }
67     w.write("</table>") ;
68     renderFooter(uiCategories, w, res) ;
69   }
70   
71   private void renderMenu( FacesContext context, UIPortletCategories uiCategories ) throws IOException JavaDoc {
72     ResponseWriter w = context.getResponseWriter() ;
73     Parameter categoryParam = new Parameter(UIPortletCategories.PORTLET_CATEGORY_NAME_PARAM , "");
74     Parameter portletIdParam = new Parameter(UIPortletCategories.PORTLET_NAME_PARAM , "");
75     Parameter[] selectPortletCategoryParams = { SELECT_PORTLET_CATEGORY , categoryParam} ;
76     Parameter[] showPortletCategoryParams = { SHOW_PORTLET_CATEGORY , categoryParam} ;
77     Parameter[] showPortletParams = { SHOW_PORTLET , categoryParam, portletIdParam} ;
78     Collection JavaDoc categories = uiCategories.getPortletCaterories().values() ;
79     Iterator JavaDoc appsIterator = categories.iterator() ;
80     w.write("<table>") ;
81     while(appsIterator.hasNext()) {
82       PortletCategoryData portletCategoryData = (PortletCategoryData) appsIterator.next() ;
83       String JavaDoc portletCategoryName = portletCategoryData.getPortletCategoryName() ;
84       categoryParam.setValue(portletCategoryName);
85       String JavaDoc sign = EXPAND ;
86       if (portletCategoryData.isSelect()) sign = COLLAPSE;
87         w.write("<tr>") ;
88         w. write("<th>");
89       linkRenderer_.render(w,uiCategories, sign, selectPortletCategoryParams) ;
90       linkRenderer_.render(w,uiCategories, portletCategoryName, showPortletCategoryParams) ;
91       w.write("</th>") ;
92         w.write("</tr>") ;
93         if(portletCategoryData.isSelect()) {
94             Iterator JavaDoc portletDatasItr = portletCategoryData.getPortlets().iterator();
95             while(portletDatasItr.hasNext()) {
96                 Portlet rtd = (Portlet)portletDatasItr.next() ;
97                 String JavaDoc portletName = rtd.getDisplayName();
98                 portletIdParam.setValue(rtd.getId());
99                 w.write("<tr>") ;
100                 w. write("<td>");
101                 linkRenderer_.render(w,uiCategories, portletName, showPortletParams) ;
102           w. write("</td>") ;
103                 w.write("</tr>") ;
104             }
105       }
106     }
107     w.write("</table>") ;
108   }
109   
110   protected void renderFooter(UIPortletCategories uiCategories,
111                                 ResponseWriter w, ResourceBundle JavaDoc res) throws IOException JavaDoc {
112     w.write("<div align='center'>") ;
113     linkRenderer_.render(w,uiCategories, res.getString("UIPortletCategories.button.cancel"), cancelActionParams_) ;
114     w.write("</div>") ;
115   }
116 }
Popular Tags