Rename packages in order to make future stable documentation clearer.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / CmsUiProvider.java
index 7e0e4faf3ab304de5fc504684f26c9d3b8dd44c2..8a12c100ec7368ccff6d4acaec3c4b0f78304f55 100644 (file)
@@ -3,19 +3,28 @@ package org.argeo.cms.ui;
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 
+import org.argeo.api.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<Composite, Node, Control> {
        /**
         * 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);
+               }
+       }
+
 }