1 /*
2 * Title: FrameSetDecoratorMapper
3 * Description:
4 *
5 * This software is published under the terms of the OpenSymphony Software
6 * License version 1.1, of which a copy has been included with this
7 * distribution in the LICENSE.txt file.
8 */
9
10 package com.opensymphony.module.sitemesh.mapper;
11
12 import com.opensymphony.module.sitemesh.Config;
13 import com.opensymphony.module.sitemesh.Decorator;
14 import com.opensymphony.module.sitemesh.DecoratorMapper;
15 import com.opensymphony.module.sitemesh.HTMLPage;
16 import com.opensymphony.module.sitemesh.Page;
17
18 import javax.servlet.http.HttpServletRequest;
19 import java.util.Properties;
20
21 /**
22 * The FrameSetDecoratorMapper will use the specified decorator when the Page
23 * is an instance of {@link com.opensymphony.module.sitemesh.HTMLPage} and
24 * <code>isFrameSet()</code> returns true.
25 *
26 * <p>The name of this decorator should be supplied in the <code>decorator</code>
27 * property - if no decorator property is supplied, no decorator is applied to
28 * frame based pages.
29 *
30 * @author <a href="mailto:joe@truemesh.com">Joe Walnes</a>
31 * @version $Revision: 1.1 $
32 *
33 * @see com.opensymphony.module.sitemesh.DecoratorMapper
34 */
35 public final class FrameSetDecoratorMapper extends AbstractDecoratorMapper {
36 private String decorator = null;
37
38 public void init(Config config, Properties properties, DecoratorMapper parent) throws InstantiationException {
39 super.init(config, properties, parent);
40 decorator = properties.getProperty("decorator");
41 }
42
43 public Decorator getDecorator(HttpServletRequest request, Page page) {
44 if (page instanceof HTMLPage && ((HTMLPage)page).isFrameSet()) {
45 return getNamedDecorator(request, decorator);
46 }
47 else {
48 return super.getDecorator(request, page);
49 }
50 }
51 }