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