View Javadoc
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   * Calls the correct {@link CmsUiProvider} depending on the context NodeType
20   **/
21  public class PeopleDynamicPages implements LifeCycleUiProvider {
22  
23  	/* DEPENDENCY INJECTION */
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  	// Relevant pages
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  		// FIXME : implement a specific NodeType for Tags
48  		// if (context.getPath().lastIndexOf("people:resources/people:tags") !=
49  		// -1)
50  		// return dynamicPages.get(PeopleTypes.PEOPLE_TAG).createUi(parent,
51  		// context);
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  	/* DEPENDENCY INJECTION */
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  }