KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > portal > core > theme > render > impl > DivDecorationRenderer


1 /*****************************************
2  * *
3  * JBoss Portal: The OpenSource Portal *
4  * *
5  * Distributable under LGPL license. *
6  * See terms of license at gnu.org. *
7  * *
8  *****************************************/

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 JavaDoc;
27 import java.util.Iterator JavaDoc;
28
29 /**
30  * Implementation of a decoration renderer, based on div tags.
31  *
32  * @author <a HREF="mailto:mholzner@novell.com>Martin Holzner</a>
33  * @version $LastChangedRevision$, $LastChangedDate$
34  * @see DecorationRenderer
35  */

36 public class DivDecorationRenderer
37    implements DecorationRenderer
38 {
39    private static Logger log = Logger.getLogger(DivDecorationRenderer.class);
40
41    /**
42     * @see org.jboss.portal.server.theme.render.Renderer#renderStart
43     */

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    /**
51     * @see org.jboss.portal.server.theme.render.Renderer#renderEnd
52     */

53    public void renderEnd(RenderContext ctx)
54    {
55       ctx.getMarkupFragment().append("</tr></table>");
56       ctx.getMarkupFragment().append("</div>");
57    }
58
59    /**
60     * @see DecorationRenderer#render
61     */

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 JavaDoc supportedModes = window.getSupportedModes(renderContext.getContentType().toString());
70       Collection JavaDoc supportedWindowStates = window.getSupportedWindowStates();
71
72       renderStart(renderContext);
73       renderContext.getMarkupFragment().append("<td class='portlet-titleBarBorderLeft'>&nbsp;</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'>&nbsp;</td>");
80       renderEnd(renderContext);
81    }
82
83    private void createStates(RenderContext renderContext, WindowState currentWindowState,
84                              Collection JavaDoc supportedWindowStates, Window window)
85    {
86       PortletURL portletURL = PortletUtils.createUpdateWindowStateURL(renderContext.getPortalResponse(), window,
87          renderContext.getContentType().toString());
88
89       StringBuffer JavaDoc markup = renderContext.getMarkupFragment();
90
91       for (Iterator JavaDoc 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 JavaDoc supportedModes,
115                            Window window)
116    {
117       PortletURL portletURL = PortletUtils.createUpdateWindowStateURL(renderContext.getPortalResponse(), window,
118          renderContext.getContentType().toString());
119
120       StringBuffer JavaDoc markup = renderContext.getMarkupFragment();
121
122       for (Iterator JavaDoc 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 JavaDoc title)
145    {
146       StringBuffer JavaDoc 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