]>
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
.CmsTheme
;
9 import org
.argeo
.cms
.ui
.CmsView
;
10 import org
.argeo
.cms
.ui
.util
.CmsUiUtils
;
11 import org
.argeo
.cms
.ui
.widgets
.TabbedArea
;
12 import org
.eclipse
.swt
.SWT
;
13 import org
.eclipse
.swt
.custom
.SashForm
;
14 import org
.eclipse
.swt
.layout
.FormLayout
;
15 import org
.eclipse
.swt
.layout
.GridLayout
;
16 import org
.eclipse
.swt
.widgets
.Composite
;
18 /** The {@link CmsView} for the work ergonomics of Argeo Suite. */
19 public class ArgeoSuiteUi
extends Composite
{
20 private static final long serialVersionUID
= 6207018859086689108L;
22 public final static String DASHBOARD_LAYER
= "dashboard";
23 private Composite header
;
24 private Composite belowHeader
;
25 private Composite leadPane
;
26 private Composite dynamicArea
;
28 private CmsTheme theme
;
30 private Session session
;
32 private Map
<String
, WorkLayer
> layers
= new HashMap
<>();
33 private String currentLayer
= DASHBOARD_LAYER
;
35 public ArgeoSuiteUi(Composite parent
, int style
) {
37 theme
= CmsTheme
.getCmsTheme(parent
);
38 this.setLayout(CmsUiUtils
.noSpaceGridLayout());
40 header
= new Composite(this, SWT
.NONE
);
41 CmsUiUtils
.style(header
, SuiteStyle
.header
);
42 header
.setLayoutData(CmsUiUtils
.fillWidth());
44 belowHeader
= new Composite(this, SWT
.NONE
);
45 belowHeader
.setLayoutData(CmsUiUtils
.fillAll());
48 public void refreshBelowHeader(boolean initApp
) {
49 CmsUiUtils
.clear(belowHeader
);
50 int style
= getStyle();
52 belowHeader
.setLayout(CmsUiUtils
.noSpaceGridLayout(2));
54 if (SWT
.RIGHT_TO_LEFT
== (style
& SWT
.RIGHT_TO_LEFT
)) {// arabic, hebrew, etc.
55 dynamicArea
= new Composite(belowHeader
, SWT
.NONE
);
56 leadPane
= new Composite(belowHeader
, SWT
.NONE
);
58 leadPane
= new Composite(belowHeader
, SWT
.NONE
);
59 dynamicArea
= new Composite(belowHeader
, SWT
.NONE
);
61 leadPane
.setLayoutData(CmsUiUtils
.fillHeight());
62 CmsUiUtils
.style(leadPane
, SuiteStyle
.leadPane
);
63 dynamicArea
.setLayoutData(CmsUiUtils
.fillAll());
65 dynamicArea
.setLayout(new FormLayout());
68 belowHeader
.setLayout(CmsUiUtils
.noSpaceGridLayout());
76 Composite
getCurrentLayer() {
77 if (currentLayer
== null)
78 throw new IllegalStateException("No current layer");
79 return layers
.get(currentLayer
).getArea();
82 Composite
getLayer(String id
) {
83 if (!layers
.containsKey(id
))
84 throw new IllegalArgumentException("No layer " + id
+ " is available.");
85 return layers
.get(id
).getArea();
88 Composite
switchToLayer(String layer
) {
89 Composite current
= getCurrentLayer();
90 if (currentLayer
.equals(layer
))
92 Composite toShow
= getLayer(layer
);
93 getDisplay().syncExec(() -> toShow
.moveAbove(current
));
98 void addLayer(String layer
) {
99 WorkLayer workLayer
= new WorkLayer(dynamicArea
, getStyle());
100 layers
.put(layer
, workLayer
);
107 Composite
getHeader() {
111 Composite
getLeadPane() {
115 Composite
getBelowHeader() {
119 Composite
getEntryArea() {
120 return layers
.get(currentLayer
).getEntryArea();
123 TabbedArea
getTabbedArea() {
124 return layers
.get(currentLayer
).getTabbedArea();
127 Session
getSession() {
131 void setSession(Session session
) {
132 this.session
= session
;
136 private SashForm area
;
137 private Composite entryArea
;
138 private Composite editorArea
;
139 private TabbedArea tabbedArea
;
141 WorkLayer(Composite parent
, int style
) {
142 area
= new SashForm(parent
, SWT
.HORIZONTAL
);
143 area
.setLayoutData(CmsUiUtils
.coversAll());
145 if (SWT
.RIGHT_TO_LEFT
== (style
& SWT
.RIGHT_TO_LEFT
)) {// arabic, hebrew, etc.
146 editorArea
= new Composite(area
, SWT
.BORDER
);
147 entryArea
= new Composite(area
, SWT
.BORDER
);
149 entryArea
= new Composite(area
, SWT
.NONE
);
150 editorArea
= new Composite(area
, SWT
.NONE
);
152 int[] weights
= new int[] { 2000, 8000 };
153 area
.setWeights(weights
);
154 // editorArea.setLayout(CmsUiUtils.noSpaceGridLayout());
155 editorArea
.setLayout(new GridLayout());
157 tabbedArea
= new TabbedArea(editorArea
, SWT
.NONE
);
158 tabbedArea
.setBodyStyle(SuiteStyle
.mainTabBody
.toStyleClass());
159 tabbedArea
.setTabStyle(SuiteStyle
.mainTab
.toStyleClass());
160 tabbedArea
.setTabSelectedStyle(SuiteStyle
.mainTabSelected
.toStyleClass());
161 tabbedArea
.setCloseIcon(SuiteIcon
.close
.getSmallIcon(theme
));
162 tabbedArea
.setLayoutData(CmsUiUtils
.fillAll());
164 // TODO make it dynamic
165 // Composite buttons = new Composite(editorTabFolder, SWT.NONE);
166 // buttons.setLayout(CmsUiUtils.noSpaceGridLayout());
167 // ToolBar toolBar = new ToolBar(buttons, SWT.NONE);
168 // toolBar.setLayoutData(new GridData(SWT.END, SWT.TOP, false, false));
169 // ToolItem deleteItem = new ToolItem(toolBar, SWT.PUSH);
170 // deleteItem.setImage(SuiteIcon.delete.getSmallIcon(theme));
171 // deleteItem.setEnabled(false);
172 // editorTabFolder.setTopRight(buttons);
174 // CTabItem defaultTab = new CTabItem(editorTabFolder, SWT.NONE);
175 // // defaultTab.setText("Home");
176 // defaultTab.setImage(dashboard.getSmallIcon(theme));
177 // defaultBody = new Composite(editorTabFolder, SWT.NONE);
178 // defaultTab.setControl(defaultBody);
179 // editorTabFolder.setSelection(defaultTab);
183 Composite
getArea() {
187 Composite
getEntryArea() {
191 TabbedArea
getTabbedArea() {