]> git.argeo.org Git - lgpl/argeo-commons.git/blob - CmsUiProvider.java
6b1dde38a879cd22688265c2ef120e270b8fa8e0
[lgpl/argeo-commons.git] / 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.MvcProvider;
7 import org.eclipse.swt.widgets.Composite;
8 import org.eclipse.swt.widgets.Control;
9
10 /** Stateless factory building an SWT user interface given a JCR context. */
11 @FunctionalInterface
12 public interface CmsUiProvider extends MvcProvider<Composite, Node, Control> {
13 /**
14 * Initialises a user interface.
15 *
16 * @param parent the parent composite
17 * @param context a context node (holding the JCR underlying session), or null
18 */
19 Control createUi(Composite parent, Node context) throws RepositoryException;
20
21 @Override
22 default Control createUiPart(Composite parent, Node context) {
23 try {
24 return createUi(parent, context);
25 } catch (RepositoryException e) {
26 throw new IllegalStateException("Cannot create UI for context " + context, e);
27 }
28 }
29
30 }