1 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 ; 17 import java.util.Collection ; 18 import java.util.Iterator ; 19 import java.util.List ; 20 import java.util.ResourceBundle ; 21 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 EXPAND = "<img class='expand' SRC='/skin/blank.gif'/>"; 38 final public static String COLLAPSE = "<img class='collapse' SRC='/skin/blank.gif'/>"; 39 40 public void encodeChildren( FacesContext context, UIComponent component ) throws IOException { 41 UIPortletCategories uiCategories = (UIPortletCategories) component; 42 ResourceBundle res = getApplicationResourceBundle(context.getExternalContext()) ; 43 ResponseWriter w = context.getResponseWriter() ; 44 List 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 { 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 categories = uiCategories.getPortletCaterories().values() ; 79 Iterator appsIterator = categories.iterator() ; 80 w.write("<table>") ; 81 while(appsIterator.hasNext()) { 82 PortletCategoryData portletCategoryData = (PortletCategoryData) appsIterator.next() ; 83 String portletCategoryName = portletCategoryData.getPortletCategoryName() ; 84 categoryParam.setValue(portletCategoryName); 85 String 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 portletDatasItr = portletCategoryData.getPortlets().iterator(); 95 while(portletDatasItr.hasNext()) { 96 Portlet rtd = (Portlet)portletDatasItr.next() ; 97 String 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 res) throws IOException { 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 |