1 package org
.argeo
.cms
.util
;
5 import javax
.jcr
.Repository
;
6 import javax
.jcr
.RepositoryException
;
8 import org
.apache
.commons
.logging
.Log
;
9 import org
.apache
.commons
.logging
.LogFactory
;
10 import org
.argeo
.cms
.AbstractCmsEntryPoint
;
11 import org
.argeo
.cms
.CmsException
;
12 import org
.argeo
.cms
.CmsImageManager
;
13 import org
.argeo
.cms
.CmsStyles
;
14 import org
.argeo
.cms
.CmsUiProvider
;
15 import org
.argeo
.cms
.internal
.ImageManagerImpl
;
16 import org
.eclipse
.rap
.rwt
.RWT
;
17 import org
.eclipse
.swt
.SWT
;
18 import org
.eclipse
.swt
.layout
.FillLayout
;
19 import org
.eclipse
.swt
.layout
.GridData
;
20 import org
.eclipse
.swt
.widgets
.Composite
;
21 import org
.eclipse
.swt
.widgets
.Control
;
23 /** Simple header/body ergonomics. */
24 public class SimpleErgonomics
extends AbstractCmsEntryPoint
{
25 private final static Log log
= LogFactory
.getLog(SimpleErgonomics
.class);
27 private boolean uiInitialized
= false;
28 private Composite headerArea
;
29 private Composite bodyArea
;
30 private final CmsUiProvider uiProvider
;
32 private CmsUiProvider header
;
33 private Integer headerHeight
= 40;
35 private CmsImageManager imageManager
= new ImageManagerImpl();
37 public SimpleErgonomics(Repository repository
, String workspace
,
38 String defaultPath
, CmsUiProvider uiProvider
,
39 Map
<String
, String
> factoryProperties
) {
40 super(repository
, workspace
, defaultPath
, factoryProperties
);
41 this.uiProvider
= uiProvider
;
45 protected void createUi(Composite parent
) {
46 parent
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
47 parent
.setLayout(CmsUtils
.noSpaceGridLayout());
49 headerArea
= new Composite(parent
, SWT
.NONE
);
50 headerArea
.setLayout(new FillLayout());
51 GridData headerData
= new GridData(SWT
.FILL
, SWT
.FILL
, false, false);
52 headerData
.heightHint
= headerHeight
;
53 headerArea
.setLayoutData(headerData
);
55 bodyArea
= new Composite(parent
, SWT
.NONE
);
56 bodyArea
.setData(RWT
.CUSTOM_VARIANT
, CmsStyles
.CMS_BODY
);
57 bodyArea
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
58 bodyArea
.setLayout(CmsUtils
.noSpaceGridLayout());
65 protected void refresh() {
68 if (getState() == null)
72 if (log
.isTraceEnabled())
73 log
.trace("UI refreshed " + getNode());
76 protected void refreshHeader() {
77 for (Control child
: headerArea
.getChildren())
80 header
.createUi(headerArea
, getNode());
81 } catch (RepositoryException e
) {
82 throw new CmsException("Cannot refresh header", e
);
84 headerArea
.layout(true, true);
87 protected void refreshBody() {
89 Throwable exception
= getException();
90 if (exception
!= null) {
91 SystemNotifications systemNotifications
= new SystemNotifications(
93 systemNotifications
.notifyException(exception
);
100 for (Control child
: bodyArea
.getChildren())
102 bodyArea
.setLayout(CmsUtils
.noSpaceGridLayout());
105 uiProvider
.createUi(bodyArea
, getNode());
106 } catch (RepositoryException e
) {
107 throw new CmsException("Cannot refresh body", e
);
110 bodyArea
.layout(true, true);
114 public CmsImageManager
getImageManager() {
118 public void setHeader(CmsUiProvider header
) {
119 this.header
= header
;
122 public void setHeaderHeight(Integer headerHeight
) {
123 this.headerHeight
= headerHeight
;
126 public void setImageManager(CmsImageManager imageManager
) {
127 this.imageManager
= imageManager
;