View Javadoc
1   package org.argeo.cms.ui;
2   
3   import javax.jcr.Node;
4   import javax.jcr.RepositoryException;
5   
6   import org.argeo.api.MvcProvider;
7   import org.eclipse.swt.widgets.Composite;
8   import org.eclipse.swt.widgets.Control;
9   
10  /** Stateless factory building an SWT user interface given a JCR context. */
11  @FunctionalInterface
12  public interface CmsUiProvider extends MvcProvider<Composite, Node, Control> {
13  	/**
14  	 * Initialises a user interface.
15  	 * 
16  	 * @param parent  the parent composite
17  	 * @param context a context node (holding the JCR underlying session), or null
18  	 */
19  	Control createUi(Composite parent, Node context) throws RepositoryException;
20  
21  	@Override
22  	default Control createUiPart(Composite parent, Node context) {
23  		try {
24  			return createUi(parent, context);
25  		} catch (RepositoryException e) {
26  			throw new IllegalStateException("Cannot create UI for context " + context, e);
27  		}
28  	}
29  
30  }