]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/SimpleCmsHeader.java
24c924217e6d8724a4609075394315879b67e85a
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / SimpleCmsHeader.java
1 package org.argeo.cms;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.jcr.Node;
7 import javax.jcr.RepositoryException;
8
9 import org.eclipse.rap.rwt.RWT;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.layout.GridData;
12 import org.eclipse.swt.layout.GridLayout;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Control;
15
16 /** A header in three parts */
17 public class SimpleCmsHeader implements CmsUiProvider {
18 private List<CmsUiProvider> lead = new ArrayList<CmsUiProvider>();
19 private List<CmsUiProvider> center = new ArrayList<CmsUiProvider>();
20 private List<CmsUiProvider> end = new ArrayList<CmsUiProvider>();
21
22 private Boolean subPartsSameWidth = false;
23
24 @Override
25 public Control createUi(Composite parent, Node context)
26 throws RepositoryException {
27 Composite header = new Composite(parent, SWT.NONE);
28 header.setData(RWT.CUSTOM_VARIANT, CmsStyles.CMS_HEADER);
29 header.setBackgroundMode(SWT.INHERIT_DEFAULT);
30 header.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(3, false)));
31
32 configurePart(context, header, lead);
33 configurePart(context, header, center);
34 configurePart(context, header, end);
35 return header;
36 }
37
38 protected void configurePart(Node context, Composite parent,
39 List<CmsUiProvider> partProviders) throws RepositoryException {
40 final int style;
41 final String custom;
42 if (lead == partProviders) {
43 style = SWT.LEAD;
44 custom = CmsStyles.CMS_HEADER_LEAD;
45 } else if (center == partProviders) {
46 style = SWT.CENTER;
47 custom = CmsStyles.CMS_HEADER_CENTER;
48 } else if (end == partProviders) {
49 style = SWT.END;
50 custom = CmsStyles.CMS_HEADER_END;
51 } else {
52 throw new CmsException("Unsupported part providers "
53 + partProviders);
54 }
55
56 Composite part = new Composite(parent, SWT.NONE);
57 part.setData(RWT.CUSTOM_VARIANT, custom);
58 GridData gridData = new GridData(style, SWT.FILL, true, true);
59 part.setLayoutData(gridData);
60 part.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(partProviders
61 .size(), subPartsSameWidth)));
62 for (CmsUiProvider uiProvider : partProviders) {
63 Control subPart = uiProvider.createUi(part, context);
64 subPart.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
65 true));
66 }
67 }
68
69 public void setLead(List<CmsUiProvider> lead) {
70 this.lead = lead;
71 }
72
73 public void setCenter(List<CmsUiProvider> center) {
74 this.center = center;
75 }
76
77 public void setEnd(List<CmsUiProvider> end) {
78 this.end = end;
79 }
80
81 public void setSubPartsSameWidth(Boolean subPartsSameWidth) {
82 this.subPartsSameWidth = subPartsSameWidth;
83 }
84
85 }