]> git.argeo.org Git - gpl/argeo-suite.git/blob - org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java
Remove legacy Argeo Suite based on Eclipse 4.
[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.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;
17
18 /** The {@link CmsView} for the work ergonomics of Argeo Suite. */
19 public class ArgeoSuiteUi extends Composite {
20 private static final long serialVersionUID = 6207018859086689108L;
21
22 public final static String DASHBOARD_LAYER = "dashboard";
23 private Composite header;
24 private Composite belowHeader;
25 private Composite leadPane;
26 private Composite dynamicArea;
27
28 private CmsTheme theme;
29
30 private Session session;
31
32 private Map<String, WorkLayer> layers = new HashMap<>();
33 private String currentLayer = DASHBOARD_LAYER;
34
35 public ArgeoSuiteUi(Composite parent, int style) {
36 super(parent, style);
37 theme = CmsTheme.getCmsTheme(parent);
38 this.setLayout(CmsUiUtils.noSpaceGridLayout());
39
40 header = new Composite(this, SWT.NONE);
41 CmsUiUtils.style(header, SuiteStyle.header);
42 header.setLayoutData(CmsUiUtils.fillWidth());
43
44 belowHeader = new Composite(this, SWT.NONE);
45 belowHeader.setLayoutData(CmsUiUtils.fillAll());
46 }
47
48 public void refreshBelowHeader(boolean initApp) {
49 CmsUiUtils.clear(belowHeader);
50 int style = getStyle();
51 if (initApp) {
52 belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(2));
53
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);
57 } else {
58 leadPane = new Composite(belowHeader, SWT.NONE);
59 dynamicArea = new Composite(belowHeader, SWT.NONE);
60 }
61 leadPane.setLayoutData(CmsUiUtils.fillHeight());
62 CmsUiUtils.style(leadPane, SuiteStyle.leadPane);
63 dynamicArea.setLayoutData(CmsUiUtils.fillAll());
64
65 dynamicArea.setLayout(new FormLayout());
66
67 } else {
68 belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout());
69 }
70 }
71
72 /*
73 * LAYERS
74 */
75
76 Composite getCurrentLayer() {
77 if (currentLayer == null)
78 throw new IllegalStateException("No current layer");
79 return layers.get(currentLayer).getArea();
80 }
81
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();
86 }
87
88 Composite switchToLayer(String layer) {
89 Composite current = getCurrentLayer();
90 if (currentLayer.equals(layer))
91 return current;
92 Composite toShow = getLayer(layer);
93 getDisplay().syncExec(() -> toShow.moveAbove(current));
94 currentLayer = layer;
95 return toShow;
96 }
97
98 void addLayer(String layer) {
99 WorkLayer workLayer = new WorkLayer(dynamicArea, getStyle());
100 layers.put(layer, workLayer);
101 }
102
103 /*
104 * GETTERS / SETTERS
105 */
106
107 Composite getHeader() {
108 return header;
109 }
110
111 Composite getLeadPane() {
112 return leadPane;
113 }
114
115 Composite getBelowHeader() {
116 return belowHeader;
117 }
118
119 Composite getEntryArea() {
120 return layers.get(currentLayer).getEntryArea();
121 }
122
123 TabbedArea getTabbedArea() {
124 return layers.get(currentLayer).getTabbedArea();
125 }
126
127 Session getSession() {
128 return session;
129 }
130
131 void setSession(Session session) {
132 this.session = session;
133 }
134
135 class WorkLayer {
136 private SashForm area;
137 private Composite entryArea;
138 private Composite editorArea;
139 private TabbedArea tabbedArea;
140
141 WorkLayer(Composite parent, int style) {
142 area = new SashForm(parent, SWT.HORIZONTAL);
143 area.setLayoutData(CmsUiUtils.coversAll());
144
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);
148 } else {
149 entryArea = new Composite(area, SWT.NONE);
150 editorArea = new Composite(area, SWT.NONE);
151 }
152 int[] weights = new int[] { 2000, 8000 };
153 area.setWeights(weights);
154 // editorArea.setLayout(CmsUiUtils.noSpaceGridLayout());
155 editorArea.setLayout(new GridLayout());
156
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());
163
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);
173 //
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);
180
181 }
182
183 Composite getArea() {
184 return area;
185 }
186
187 Composite getEntryArea() {
188 return entryArea;
189 }
190
191 TabbedArea getTabbedArea() {
192 return tabbedArea;
193 }
194 }
195
196 }