X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=jcr%2Forg.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2FCmsUiProvider.java;h=08b100efa00f0ccd9d211f1d36fa953f88edb7ad;hb=279880f110272df643cee670aa976ae5ab9ec396;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..08b100efa 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,13 +3,16 @@ 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. * @@ -18,12 +21,21 @@ public interface CmsUiProvider extends MvcProvider { */ 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); + throw new JcrException("Cannot create UI for context " + context, e); + } + } + + @Override + default Control createUiPart(Composite parent, Content context) { + if (context instanceof JcrContent) { + Node node = ((JcrContent) context).getJcrNode(); + return createUiPart(parent, node); + } else { + throw new IllegalArgumentException("Content " + context + " is not compatible with JCR"); } }