1 package org.appfuse.webapp.components;
2
3 import org.apache.tapestry5.BindingConstants;
4 import org.apache.tapestry5.Block;
5 import org.apache.tapestry5.ComponentResources;
6 import org.apache.tapestry5.annotations.Import;
7 import org.apache.tapestry5.annotations.Parameter;
8 import org.apache.tapestry5.annotations.Property;
9 import org.apache.tapestry5.ioc.Messages;
10 import org.apache.tapestry5.ioc.annotations.Inject;
11 import org.apache.tapestry5.ioc.services.SymbolSource;
12 import org.apache.tapestry5.services.AssetSource;
13 import org.apache.tapestry5.services.Context;
14 import org.apache.tapestry5.services.Environment;
15 import org.apache.tapestry5.services.PageRenderLinkSource;
16 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
17 import org.appfuse.webapp.AppFuseSymbolConstants;
18 import org.appfuse.webapp.services.SecurityContext;
19
20
21
22
23
24
25
26
27
28 @Import(stack = AppFuseSymbolConstants.BOOTSTRAP_STACK)
29 public class Layout {
30
31 @Property
32 @Parameter(required = true, defaultPrefix = BindingConstants.MESSAGE)
33 private String title;
34
35
36 @Property
37 @Parameter(defaultPrefix = BindingConstants.MESSAGE)
38 private String heading;
39
40 @Property
41 @Parameter(defaultPrefix = BindingConstants.LITERAL)
42 private String menu;
43
44 @Property
45 @Parameter(defaultPrefix = BindingConstants.LITERAL)
46 private String bodyId;
47
48
49 @Property
50 @Parameter(defaultPrefix = BindingConstants.LITERAL)
51 private String bodyClass;
52
53
54 @Parameter(defaultPrefix = BindingConstants.LITERAL)
55 private Block sidebar;
56
57 @Inject
58 private Environment environment;
59
60 @Inject
61 private Context context;
62
63 @Inject
64 private Messages messages;
65
66 @Inject
67 private SecurityContext securityContext;
68
69 @Inject
70 private ComponentResources resources;
71
72 @Inject
73 private PageRenderLinkSource linkSource;
74
75 @Inject
76 private JavaScriptSupport jsSupport;
77
78 @Inject
79 private AssetSource assetSource;
80
81 @Inject
82 private SymbolSource symbolSource;
83
84 @Inject
85 private Block adminMenuBlock;
86
87
88 public boolean isLoggedIn() {
89 return securityContext.isLoggedIn();
90 }
91
92 public Block getSidebar() {
93 if ("AdminMenu".equals(menu) && securityContext.isAdmin()) {
94 return adminMenuBlock;
95 }
96 return null;
97 }
98
99
100 public boolean isAdminMenu() {
101 return "AdminMenu".equals(menu);
102 }
103
104
105 public String getCurrentPage() {
106 return resources.getPageName().toLowerCase();
107 }
108
109
110
111
112
113 void afterRender() {
114 jsSupport.addScript("$j('.dropdown-menu li').click(function(){ $j(this).addClass('active');});");
115 }
116
117 }