]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/util/SimpleCmsHeader.java
Improve DocBook
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / util / 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.ui.CmsStyles;
11 import org.argeo.cms.ui.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) throws RepositoryException {
29 Composite header = new Composite(parent, SWT.NONE);
30 header.setData(RWT.CUSTOM_VARIANT, CmsStyles.CMS_HEADER);
31 header.setBackgroundMode(SWT.INHERIT_DEFAULT);
32 header.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(3, false)));
33
34 configurePart(context, header, lead);
35 configurePart(context, header, center);
36 configurePart(context, header, end);
37 return header;
38 }
39
40 protected void configurePart(Node context, Composite parent, List<CmsUiProvider> partProviders)
41 throws RepositoryException {
42 final int style;
43 final String custom;
44 if (lead == partProviders) {
45 style = SWT.LEAD;
46 custom = CmsStyles.CMS_HEADER_LEAD;
47 } else if (center == partProviders) {
48 style = SWT.CENTER;
49 custom = CmsStyles.CMS_HEADER_CENTER;
50 } else if (end == partProviders) {
51 style = SWT.END;
52 custom = CmsStyles.CMS_HEADER_END;
53 } else {
54 throw new CmsException("Unsupported part providers " + partProviders);
55 }
56
57 Composite part = new Composite(parent, SWT.NONE);
58 part.setData(RWT.CUSTOM_VARIANT, custom);
59 GridData gridData = new GridData(style, SWT.FILL, true, true);
60 part.setLayoutData(gridData);
61 part.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(partProviders.size(), subPartsSameWidth)));
62 for (CmsUiProvider uiProvider : partProviders) {
63 Control subPart = uiProvider.createUi(part, context);
64 subPart.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
65 }
66 }
67
68 public void setLead(List<CmsUiProvider> lead) {
69 this.lead = lead;
70 }
71
72 public void setCenter(List<CmsUiProvider> center) {
73 this.center = center;
74 }
75
76 public void setEnd(List<CmsUiProvider> end) {
77 this.end = end;
78 }
79
80 public void setSubPartsSameWidth(Boolean subPartsSameWidth) {
81 this.subPartsSameWidth = subPartsSameWidth;
82 }
83
84 public List<CmsUiProvider> getLead() {
85 return lead;
86 }
87
88 public List<CmsUiProvider> getCenter() {
89 return center;
90 }
91
92 public List<CmsUiProvider> getEnd() {
93 return end;
94 }
95
96 }