X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2FCmsUiProvider.java;h=5f2377be566f05a6ad618f1e30cea3c8e943b3e4;hb=e889ce14a1c71f5ead2ab681d59083c734183220;hp=ec76321fee31e2cbcd56a4c3355f1017a07099b3;hpb=8282011b0e20e80704b209ad55fa9fb132e16280;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 index ec76321fe..5f2377be5 100644 --- 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 @@ -3,27 +3,48 @@ package org.argeo.cms.ui; import javax.jcr.Node; import javax.jcr.RepositoryException; -import org.argeo.api.cms.MvcProvider; +import org.argeo.api.acr.Content; +import org.argeo.cms.jcr.acr.JcrContent; +import org.argeo.cms.swt.acr.SwtUiProvider; +import org.argeo.jcr.JcrException; 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 { +public interface CmsUiProvider extends SwtUiProvider { /** * 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; + default Control createUi(Composite parent, Node context) throws RepositoryException { + // does nothing by default + return null; + } - @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); + throw new JcrException("Cannot create UI for context " + context, e); + } + } + + @Override + default Control createUiPart(Composite parent, Content context) { + if (context == null) + return createUiPart(parent, (Node) null); + if (context instanceof JcrContent) { + Node node = ((JcrContent) context).getJcrNode(); + return createUiPart(parent, node); + } else { +// CmsLog.getLog(CmsUiProvider.class) +// .warn("In " + getClass() + ", content " + context + " is not compatible with JCR."); +// return createUiPart(parent, (Node) null); + + throw new IllegalArgumentException( + "In " + getClass() + ", content " + context + " is not compatible with JCR"); } }