]> git.argeo.org Git - gpl/argeo-jcr.git/blob - swt/org.argeo.cms.jcr.ui/src/org/argeo/cms/ui/CmsUiProvider.java
Merge tag 'v2.3.18' into testing
[gpl/argeo-jcr.git] / swt / org.argeo.cms.jcr.ui / src / org / argeo / cms / ui / CmsUiProvider.java
1 package org.argeo.cms.ui;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5
6 import org.argeo.api.acr.Content;
7 import org.argeo.cms.jcr.acr.JcrContent;
8 import org.argeo.cms.swt.acr.SwtUiProvider;
9 import org.argeo.jcr.JcrException;
10 import org.eclipse.swt.widgets.Composite;
11 import org.eclipse.swt.widgets.Control;
12
13 /** Stateless factory building an SWT user interface given a JCR context. */
14 public interface CmsUiProvider extends SwtUiProvider {
15 /**
16 * Initialises a user interface.
17 *
18 * @param parent the parent composite
19 * @param context a context node (holding the JCR underlying session), or null
20 */
21 default Control createUi(Composite parent, Node context) throws RepositoryException {
22 // does nothing by default
23 return null;
24 }
25
26 default Control createUiPart(Composite parent, Node context) {
27 try {
28 return createUi(parent, context);
29 } catch (RepositoryException e) {
30 throw new JcrException("Cannot create UI for context " + context, e);
31 }
32 }
33
34 @Override
35 default Control createUiPart(Composite parent, Content context) {
36 if (context == null)
37 return createUiPart(parent, (Node) null);
38 if (context instanceof JcrContent) {
39 Node node = context.adapt(Node.class);
40 return createUiPart(parent, node);
41 } else {
42 // CmsLog.getLog(CmsUiProvider.class)
43 // .warn("In " + getClass() + ", content " + context + " is not compatible with JCR.");
44 // return createUiPart(parent, (Node) null);
45
46 throw new IllegalArgumentException(
47 "In " + getClass() + ", content " + context + " is not compatible with JCR");
48 }
49 }
50
51 }