]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - jcr/org.argeo.cms.ui/src/org/argeo/cms/ui/CmsUiProvider.java
4473498c19459b5dedc8642f7a54c00050b30d52
1 package org
.argeo
.cms
.ui
;
4 import javax
.jcr
.RepositoryException
;
6 import org
.argeo
.api
.acr
.Content
;
7 import org
.argeo
.cms
.jcr
.acr
.JcrContent
;
8 import org
.argeo
.cms
.swt
.acr
.SwtUiProvider
;
9 import org
.argeo
.jcr
.JcrException
;
10 import org
.eclipse
.swt
.widgets
.Composite
;
11 import org
.eclipse
.swt
.widgets
.Control
;
13 /** Stateless factory building an SWT user interface given a JCR context. */
15 public interface CmsUiProvider
extends SwtUiProvider
{
17 * Initialises a user interface.
19 * @param parent the parent composite
20 * @param context a context node (holding the JCR underlying session), or null
22 Control
createUi(Composite parent
, Node context
) throws RepositoryException
;
24 default Control
createUiPart(Composite parent
, Node context
) {
26 return createUi(parent
, context
);
27 } catch (RepositoryException e
) {
28 throw new JcrException("Cannot create UI for context " + context
, e
);
33 default Control
createUiPart(Composite parent
, Content context
) {
35 return createUiPart(parent
, (Node
) null);
36 if (context
instanceof JcrContent
) {
37 Node node
= ((JcrContent
) context
).getJcrNode();
38 return createUiPart(parent
, node
);
40 throw new IllegalArgumentException("Content " + context
+ " is not compatible with JCR");