]>
git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java
1 package org
.argeo
.suite
.ui
;
3 import java
.util
.HashMap
;
6 import javax
.jcr
.Session
;
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
;
15 /** The {@link CmsView} for the work ergonomics of Argeo Suite. */
16 public class ArgeoSuiteUi
extends Composite
{
17 private static final long serialVersionUID
= 6207018859086689108L;
19 public final static String DASHBOARD_LAYER
= "dashboard";
20 private Composite header
;
21 private Composite belowHeader
;
22 private Composite leadPane
;
23 private Composite dynamicArea
;
25 private Session session
;
27 private Map
<String
, WorkLayer
> layers
= new HashMap
<>();
28 private String currentLayer
= DASHBOARD_LAYER
;
30 public ArgeoSuiteUi(Composite parent
, int style
) {
32 this.setLayout(CmsUiUtils
.noSpaceGridLayout());
34 header
= new Composite(this, SWT
.NONE
);
35 CmsUiUtils
.style(header
, SuiteStyle
.header
);
36 header
.setLayoutData(CmsUiUtils
.fillWidth());
38 belowHeader
= new Composite(this, SWT
.NONE
);
39 belowHeader
.setLayoutData(CmsUiUtils
.fillAll());
42 public void refreshBelowHeader(boolean initApp
) {
43 CmsUiUtils
.clear(belowHeader
);
44 int style
= getStyle();
46 belowHeader
.setLayout(CmsUiUtils
.noSpaceGridLayout(2));
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
);
52 leadPane
= new Composite(belowHeader
, SWT
.NONE
);
53 dynamicArea
= new Composite(belowHeader
, SWT
.NONE
);
55 leadPane
.setLayoutData(CmsUiUtils
.fillHeight());
56 CmsUiUtils
.style(leadPane
, SuiteStyle
.leadPane
);
57 dynamicArea
.setLayoutData(CmsUiUtils
.fillAll());
59 dynamicArea
.setLayout(new FormLayout());
62 belowHeader
.setLayout(CmsUiUtils
.noSpaceGridLayout());
70 Composite
getCurrentLayer() {
71 if (currentLayer
== null)
72 throw new IllegalStateException("No current layer");
73 return layers
.get(currentLayer
).getArea();
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();
82 Composite
switchToLayer(String layer
) {
83 Composite current
= getCurrentLayer();
84 if (currentLayer
.equals(layer
))
86 Composite toShow
= getLayer(layer
);
87 getDisplay().syncExec(() -> toShow
.moveAbove(current
));
92 void addLayer(String layer
) {
93 WorkLayer workLayer
= new WorkLayer(dynamicArea
, getStyle());
94 layers
.put(layer
, workLayer
);
101 Composite
getHeader() {
105 Composite
getLeadPane() {
109 Composite
getBelowHeader() {
113 Composite
getEntryArea() {
114 return layers
.get(currentLayer
).getEntryArea();
117 TabbedArea
getTabbedArea() {
118 return layers
.get(currentLayer
).getTabbedArea();
121 Session
getSession() {
125 void setSession(Session session
) {
126 this.session
= session
;