]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java
Ignore target directories.
[gpl/argeo-suite.git] / org.argeo.suite.ui / src / org / argeo / suite / ui / ArgeoSuiteUi.java
1 package org.argeo.suite.ui;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import javax.jcr.Session;
7
8 import org.argeo.cms.ui.CmsView;
9 import org.argeo.cms.ui.util.CmsUiUtils;
10 import org.argeo.cms.ui.widgets.TabbedArea;
11 import org.eclipse.swt.SWT;
12 import org.eclipse.swt.layout.FormLayout;
13 import org.eclipse.swt.widgets.Composite;
14
15 /** The {@link CmsView} for the work ergonomics of Argeo Suite. */
16 public class ArgeoSuiteUi extends Composite {
17 private static final long serialVersionUID = 6207018859086689108L;
18
19 public final static String DASHBOARD_LAYER = "dashboard";
20 private Composite header;
21 private Composite belowHeader;
22 private Composite leadPane;
23 private Composite dynamicArea;
24
25 private Session session;
26
27 private Map<String, WorkLayer> layers = new HashMap<>();
28 private String currentLayer = DASHBOARD_LAYER;
29
30 public ArgeoSuiteUi(Composite parent, int style) {
31 super(parent, style);
32 this.setLayout(CmsUiUtils.noSpaceGridLayout());
33
34 header = new Composite(this, SWT.NONE);
35 CmsUiUtils.style(header, SuiteStyle.header);
36 header.setLayoutData(CmsUiUtils.fillWidth());
37
38 belowHeader = new Composite(this, SWT.NONE);
39 belowHeader.setLayoutData(CmsUiUtils.fillAll());
40 }
41
42 public void refreshBelowHeader(boolean initApp) {
43 CmsUiUtils.clear(belowHeader);
44 int style = getStyle();
45 if (initApp) {
46 belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(2));
47
48 if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc.
49 dynamicArea = new Composite(belowHeader, SWT.NONE);
50 leadPane = new Composite(belowHeader, SWT.NONE);
51 } else {
52 leadPane = new Composite(belowHeader, SWT.NONE);
53 dynamicArea = new Composite(belowHeader, SWT.NONE);
54 }
55 leadPane.setLayoutData(CmsUiUtils.fillHeight());
56 CmsUiUtils.style(leadPane, SuiteStyle.leadPane);
57 dynamicArea.setLayoutData(CmsUiUtils.fillAll());
58
59 dynamicArea.setLayout(new FormLayout());
60
61 } else {
62 belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout());
63 }
64 }
65
66 /*
67 * LAYERS
68 */
69
70 Composite getCurrentLayer() {
71 if (currentLayer == null)
72 throw new IllegalStateException("No current layer");
73 return layers.get(currentLayer).getArea();
74 }
75
76 Composite getLayer(String id) {
77 if (!layers.containsKey(id))
78 throw new IllegalArgumentException("No layer " + id + " is available.");
79 return layers.get(id).getArea();
80 }
81
82 Composite switchToLayer(String layer) {
83 Composite current = getCurrentLayer();
84 if (currentLayer.equals(layer))
85 return current;
86 Composite toShow = getLayer(layer);
87 getDisplay().syncExec(() -> toShow.moveAbove(current));
88 currentLayer = layer;
89 return toShow;
90 }
91
92 void addLayer(String layer) {
93 WorkLayer workLayer = new WorkLayer(dynamicArea, getStyle());
94 layers.put(layer, workLayer);
95 }
96
97 /*
98 * GETTERS / SETTERS
99 */
100
101 Composite getHeader() {
102 return header;
103 }
104
105 Composite getLeadPane() {
106 return leadPane;
107 }
108
109 Composite getBelowHeader() {
110 return belowHeader;
111 }
112
113 Composite getEntryArea() {
114 return layers.get(currentLayer).getEntryArea();
115 }
116
117 TabbedArea getTabbedArea() {
118 return layers.get(currentLayer).getTabbedArea();
119 }
120
121 Session getSession() {
122 return session;
123 }
124
125 void setSession(Session session) {
126 this.session = session;
127 }
128
129
130
131 }