X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2FCmsUiProvider.java;fp=jcr%2Forg.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2FCmsUiProvider.java;h=ec76321fee31e2cbcd56a4c3355f1017a07099b3;hb=8282011b0e20e80704b209ad55fa9fb132e16280;hp=0000000000000000000000000000000000000000;hpb=633a8acd189cc22f06944d278879601189be1bc8;p=lgpl%2Fargeo-commons.git diff --git a/jcr/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java b/jcr/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java new file mode 100644 index 000000000..ec76321fe --- /dev/null +++ b/jcr/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java @@ -0,0 +1,30 @@ +package org.argeo.cms.ui; + +import javax.jcr.Node; +import javax.jcr.RepositoryException; + +import org.argeo.api.cms.MvcProvider; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** Stateless factory building an SWT user interface given a JCR context. */ +@FunctionalInterface +public interface CmsUiProvider extends MvcProvider { + /** + * Initialises a user interface. + * + * @param parent the parent composite + * @param context a context node (holding the JCR underlying session), or null + */ + Control createUi(Composite parent, Node context) throws RepositoryException; + + @Override + default Control createUiPart(Composite parent, Node context) { + try { + return createUi(parent, context); + } catch (RepositoryException e) { + throw new IllegalStateException("Cannot create UI for context " + context, e); + } + } + +}