1 9 10 package org.jboss.portal.core.theme.render.impl; 11 12 import org.apache.log4j.Logger; 13 import org.jboss.portal.portlet.PortletUtils; 14 import org.jboss.portal.server.Window; 15 import org.jboss.portal.server.WindowContext; 16 import org.jboss.portal.server.output.FragmentResult; 17 import org.jboss.portal.server.plugins.mode.Mode; 18 import org.jboss.portal.server.plugins.windowstate.WindowState; 19 import org.jboss.portal.server.theme.render.DecorationRenderer; 20 import org.jboss.portal.server.theme.render.RenderContext; 21 import org.jboss.portal.server.theme.render.RenderException; 22 23 import javax.portlet.PortletModeException; 24 import javax.portlet.PortletURL; 25 import javax.portlet.WindowStateException; 26 import java.util.Collection ; 27 import java.util.Iterator ; 28 29 36 public class DivDecorationRenderer 37 implements DecorationRenderer 38 { 39 private static Logger log = Logger.getLogger(DivDecorationRenderer.class); 40 41 44 public void renderStart(RenderContext ctx) 45 { 46 ctx.getMarkupFragment().append("<div class='portlet-decoration'>"); 47 ctx.getMarkupFragment().append("<table class='portlet-titleBarContainer'><tr>"); 48 } 49 50 53 public void renderEnd(RenderContext ctx) 54 { 55 ctx.getMarkupFragment().append("</tr></table>"); 56 ctx.getMarkupFragment().append("</div>"); 57 } 58 59 62 public void render(RenderContext renderContext, WindowContext windowContext, FragmentResult result) 63 throws RenderException 64 { 65 Mode currentMode = windowContext.getMode(); 66 WindowState currentWindowState = windowContext.getWindowState(); 67 Window window = (Window)renderContext.getPortalRequest().getServer().getObject(windowContext.getID()); 68 69 Collection supportedModes = window.getSupportedModes(renderContext.getContentType().toString()); 70 Collection supportedWindowStates = window.getSupportedWindowStates(); 71 72 renderStart(renderContext); 73 renderContext.getMarkupFragment().append("<td class='portlet-titleBarBorderLeft'> </td>"); 74 createTitle(renderContext, result.getTitle()); 75 renderContext.getMarkupFragment().append("<td class='portlet-titleBarContentRight'>"); 76 creteModes(renderContext, currentMode, supportedModes, window); 77 createStates(renderContext, currentWindowState, supportedWindowStates, window); 78 renderContext.getMarkupFragment().append("</td>"); 79 renderContext.getMarkupFragment().append("<td class='portlet-titleBarBorderRight'> </td>"); 80 renderEnd(renderContext); 81 } 82 83 private void createStates(RenderContext renderContext, WindowState currentWindowState, 84 Collection supportedWindowStates, Window window) 85 { 86 PortletURL portletURL = PortletUtils.createUpdateWindowStateURL(renderContext.getPortalResponse(), window, 87 renderContext.getContentType().toString()); 88 89 StringBuffer markup = renderContext.getMarkupFragment(); 90 91 for (Iterator i = supportedWindowStates.iterator(); i.hasNext();) 92 { 93 WindowState windowState = (WindowState)i.next(); 94 if (!windowState.equals(currentWindowState)) 95 { 96 try 97 { 98 portletURL.setWindowState(PortletUtils.decodeWindowState(windowState.toString())); 99 markup.append("<a class='").append(windowState.toString()).append("Mode'"); 100 markup.append(" HREF='").append(portletURL.toString()).append("' alt='") 101 .append(windowState.toString()).append("'>"); 102 markup.append("<span class='alt'>").append(windowState.toString()).append("</span>"); 103 markup.append("</a>"); 104 } 105 catch (WindowStateException ignored) 106 { 107 log.error(ignored); 108 } 109 } 110 } 111 112 } 113 114 private void creteModes(RenderContext renderContext, Mode currentMode, Collection supportedModes, 115 Window window) 116 { 117 PortletURL portletURL = PortletUtils.createUpdateWindowStateURL(renderContext.getPortalResponse(), window, 118 renderContext.getContentType().toString()); 119 120 StringBuffer markup = renderContext.getMarkupFragment(); 121 122 for (Iterator i = supportedModes.iterator(); i.hasNext();) 123 { 124 Mode mode = (Mode)i.next(); 125 if (!mode.equals(currentMode)) 126 { 127 try 128 { 129 portletURL.setPortletMode(PortletUtils.decodePortletMode(mode.toString())); 130 markup.append("<a class='").append(mode.toString()).append("Mode'"); 131 markup.append(" HREF='").append(portletURL.toString()).append("' alt='") 132 .append(mode.toString()).append("'>"); 133 markup.append("<span class='alt'>").append(mode.toString()).append("</span>"); 134 markup.append("</a>"); 135 } 136 catch (PortletModeException ignored) 137 { 138 log.error(ignored); 139 } 140 } 141 } 142 } 143 144 private void createTitle(RenderContext renderContext, String title) 145 { 146 StringBuffer markup = renderContext.getMarkupFragment(); 147 markup.append("<td class='portlet-titleBarContentLeft'>"); 148 markup.append("<span class='portlet-title'>").append(title).append("</span></td>"); 149 } 150 } 151 | Popular Tags |