1 package org
.argeo
.suite
.ui
;
4 import javax
.jcr
.RepositoryException
;
6 import org
.argeo
.cms
.ui
.CmsTheme
;
7 import org
.argeo
.cms
.ui
.CmsUiProvider
;
8 import org
.argeo
.cms
.ui
.util
.CmsUiUtils
;
9 import org
.argeo
.cms
.ui
.widgets
.TabbedArea
;
10 import org
.eclipse
.swt
.SWT
;
11 import org
.eclipse
.swt
.custom
.SashForm
;
12 import org
.eclipse
.swt
.layout
.GridLayout
;
13 import org
.eclipse
.swt
.widgets
.Composite
;
14 import org
.eclipse
.swt
.widgets
.Control
;
16 /** An app layer based on an entry area and an editor area. */
17 public class DefaultEditionLayer
implements SuiteLayer
{
18 private CmsUiProvider entryArea
;
19 private CmsUiProvider workArea
;
22 public Control
createUi(Composite parent
, Node context
) throws RepositoryException
{
23 if (entryArea
!= null) {
24 SashFormEditionArea sashFormEditionArea
= new SashFormEditionArea(parent
, parent
.getStyle());
25 entryArea
.createUi(sashFormEditionArea
.getEntryArea(), context
);
26 if (this.workArea
!= null) {
27 this.workArea
.createUi(sashFormEditionArea
.getEditorArea(), context
);
29 return sashFormEditionArea
;
31 if (this.workArea
!= null) {
32 Composite area
= new Composite(parent
, SWT
.NONE
);
33 this.workArea
.createUi(area
, context
);
36 CmsTheme theme
= CmsTheme
.getCmsTheme(parent
);
37 TabbedArea tabbedArea
= createTabbedArea(parent
, theme
);
43 public void view(CmsUiProvider uiProvider
, Composite workArea
, Node context
) {
44 TabbedArea tabbedArea
;
45 if (workArea
instanceof SashFormEditionArea
) {
46 tabbedArea
= ((SashFormEditionArea
) workArea
).getTabbedArea();
47 } else if (workArea
instanceof TabbedArea
) {
48 tabbedArea
= (TabbedArea
) workArea
;
50 throw new IllegalArgumentException("Unsupported work area " + workArea
.getClass().getName());
51 tabbedArea
.view(uiProvider
, context
);
55 public void open(CmsUiProvider uiProvider
, Composite workArea
, Node context
) {
56 TabbedArea tabbedArea
= ((SashFormEditionArea
) workArea
).getTabbedArea();
57 tabbedArea
.open(uiProvider
, context
);
60 public void setEntryArea(CmsUiProvider entryArea
) {
61 this.entryArea
= entryArea
;
64 public void setWorkArea(CmsUiProvider workArea
) {
65 this.workArea
= workArea
;
68 TabbedArea
createTabbedArea(Composite parent
, CmsTheme theme
) {
69 TabbedArea tabbedArea
= new TabbedArea(parent
, SWT
.NONE
);
70 tabbedArea
.setBodyStyle(SuiteStyle
.mainTabBody
.toStyleClass());
71 tabbedArea
.setTabStyle(SuiteStyle
.mainTab
.toStyleClass());
72 tabbedArea
.setTabSelectedStyle(SuiteStyle
.mainTabSelected
.toStyleClass());
73 tabbedArea
.setCloseIcon(SuiteIcon
.close
.getSmallIcon(theme
));
74 tabbedArea
.setLayoutData(CmsUiUtils
.fillAll());
78 /** A work area based on an entry area and and a tabbed area. */
79 class SashFormEditionArea
extends SashForm
{
80 private static final long serialVersionUID
= 2219125778722702618L;
81 private CmsTheme theme
;
82 private Composite entryArea
;
83 private Composite editorArea
;
84 private TabbedArea tabbedArea
;
86 SashFormEditionArea(Composite parent
, int style
) {
87 super(parent
, SWT
.HORIZONTAL
);
88 theme
= CmsTheme
.getCmsTheme(parent
);
90 if (SWT
.RIGHT_TO_LEFT
== (style
& SWT
.RIGHT_TO_LEFT
)) {// arabic, hebrew, etc.
91 editorArea
= new Composite(this, SWT
.BORDER
);
92 entryArea
= new Composite(this, SWT
.BORDER
);
94 entryArea
= new Composite(this, SWT
.NONE
);
95 editorArea
= new Composite(this, SWT
.NONE
);
97 int[] weights
= new int[] { 3000, 7000 };
99 editorArea
.setLayout(new GridLayout());
101 if (DefaultEditionLayer
.this.workArea
== null) {
102 tabbedArea
= createTabbedArea(editorArea
, theme
);
106 Composite
getEntryArea() {
110 TabbedArea
getTabbedArea() {
114 Composite
getEditorArea() {