X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2FCmsUiProvider.java;h=6ef4b315ce83d62badc8fb9c310d009d2bc9b98b;hb=139300c6d5f64dc655a22ae2a067e37b11e1ae72;hp=7e0e4faf3ab304de5fc504684f26c9d3b8dd44c2;hpb=c5fa035468228d1f87ab5431a3fad17403eee1c3;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java index 7e0e4faf3..6ef4b315c 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java @@ -3,19 +3,28 @@ package org.argeo.cms.ui; import javax.jcr.Node; import javax.jcr.RepositoryException; +import org.argeo.node.MvcProvider; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; /** Stateless factory building an SWT user interface given a JCR context. */ -public interface CmsUiProvider { +@FunctionalInterface +public interface CmsUiProvider extends MvcProvider { /** * Initialises a user interface. * - * @param parent - * the parent composite - * @param a - * context node or null + * @param parent the parent composite + * @param context a context node (holding the JCR underlying session), or null */ - public Control createUi(Composite parent, Node context) - throws RepositoryException; + public Control createUi(Composite parent, Node context) throws RepositoryException; + + @Override + public default Control apply(Composite parent, Node context) { + try { + return createUi(parent, context); + } catch (RepositoryException e) { + throw new IllegalStateException("Cannot create UI for context " + context, e); + } + } + }