1 package org.argeo.people.web.pages;
2
3 import java.util.Map;
4
5 import javax.jcr.Node;
6 import javax.jcr.RepositoryException;
7 import javax.jcr.Session;
8 import javax.jcr.nodetype.NodeType;
9
10 import org.argeo.cms.ui.CmsUiProvider;
11 import org.argeo.cms.ui.LifeCycleUiProvider;
12 import org.argeo.connect.resources.ResourcesService;
13 import org.argeo.people.PeopleException;
14 import org.argeo.people.PeopleService;
15 import org.eclipse.swt.widgets.Composite;
16 import org.eclipse.swt.widgets.Control;
17
18
19
20
21 public class PeopleDynamicPages implements LifeCycleUiProvider {
22
23
24 private Map<String, CmsUiProvider> dynamicPages;
25 private PeopleService peopleService;
26 private ResourcesService resourcesService;
27
28 private Map<String, String> iconPathes;
29
30 private CmsUiProvider queryPage;
31
32
33 @Override
34 public Control createUi(Composite parent, Node context) throws RepositoryException {
35
36 for (String key : dynamicPages.keySet()) {
37 if (context.isNodeType(key))
38 return dynamicPages.get(key).createUi(parent, context);
39 }
40
41 if (context.isNodeType(NodeType.NT_QUERY))
42 return queryPage.createUi(parent, context);
43
44 if (context.getPath().equals("/"))
45 return null;
46
47
48
49
50
51
52
53 throw new PeopleException("No dynamic pages defined for " + context);
54 }
55
56 @Override
57 public void init(Session adminSession) throws RepositoryException {
58 queryPage = new PeopleQueryPage(peopleService, resourcesService, iconPathes);
59 }
60
61 @Override
62 public void destroy() {
63 }
64
65
66 public void setDynamicPages(Map<String, CmsUiProvider> dynamicPages) {
67 this.dynamicPages = dynamicPages;
68 }
69
70 public void setPeopleService(PeopleService peopleService) {
71 this.peopleService = peopleService;
72 }
73
74 public void setResourcesService(ResourcesService resourcesService) {
75 this.resourcesService = resourcesService;
76 }
77
78 public void setIconPathes(Map<String, String> iconPathes) {
79 this.iconPathes = iconPathes;
80 }
81 }