]> git.argeo.org Git - gpl/argeo-suite.git/blob - publishing/org.argeo.publishing.ui/src/org/argeo/cms/text/TextEditorHeader.java
Improve terms framework.
[gpl/argeo-suite.git] / publishing / org.argeo.publishing.ui / src / org / argeo / cms / text / TextEditorHeader.java
1 package org.argeo.cms.text;
2
3 import java.util.Observable;
4 import java.util.Observer;
5
6 import org.argeo.cms.ui.CmsEditable;
7 import org.argeo.cms.ui.util.CmsUiUtils;
8 import org.argeo.cms.ui.widgets.TextStyles;
9 import org.eclipse.swt.SWT;
10 import org.eclipse.swt.events.SelectionEvent;
11 import org.eclipse.swt.events.SelectionListener;
12 import org.eclipse.swt.widgets.Button;
13 import org.eclipse.swt.widgets.Composite;
14
15 /** Adds editing capabilities to a page editing text */
16 public class TextEditorHeader implements SelectionListener, Observer {
17 private static final long serialVersionUID = 4186756396045701253L;
18
19 private final CmsEditable cmsEditable;
20 private Button publish;
21
22 private Composite parent;
23 private Composite display;
24 private Object layoutData;
25
26 public TextEditorHeader(CmsEditable cmsEditable, Composite parent, int style) {
27 this.cmsEditable = cmsEditable;
28 this.parent = parent;
29 if (this.cmsEditable instanceof Observable)
30 ((Observable) this.cmsEditable).addObserver(this);
31 refresh();
32 }
33
34 protected void refresh() {
35 if (display != null && !display.isDisposed())
36 display.dispose();
37 display = null;
38 publish = null;
39 if (cmsEditable.isEditing()) {
40 display = new Composite(parent, SWT.NONE);
41 // display.setBackgroundMode(SWT.INHERIT_NONE);
42 display.setLayoutData(layoutData);
43 display.setLayout(CmsUiUtils.noSpaceGridLayout());
44 CmsUiUtils.style(display, TextStyles.TEXT_EDITOR_HEADER);
45 publish = new Button(display, SWT.FLAT | SWT.PUSH);
46 publish.setText(getPublishButtonLabel());
47 CmsUiUtils.style(publish, TextStyles.TEXT_EDITOR_HEADER);
48 publish.addSelectionListener(this);
49 display.moveAbove(null);
50 }
51 parent.layout();
52 }
53
54 private String getPublishButtonLabel() {
55 if (cmsEditable.isEditing())
56 return "Publish";
57 else
58 return "Edit";
59 }
60
61 @Override
62 public void widgetSelected(SelectionEvent e) {
63 if (e.getSource() == publish) {
64 if (cmsEditable.isEditing()) {
65 cmsEditable.stopEditing();
66 } else {
67 cmsEditable.startEditing();
68 }
69 // publish.setText(getPublishButtonLabel());
70 }
71 }
72
73 @Override
74 public void widgetDefaultSelected(SelectionEvent e) {
75 }
76
77 @Override
78 public void update(Observable o, Object arg) {
79 if (o == cmsEditable) {
80 // publish.setText(getPublishButtonLabel());
81 refresh();
82 }
83 }
84
85 public void setLayoutData(Object layoutData) {
86 this.layoutData = layoutData;
87 if (display != null && !display.isDisposed())
88 display.setLayoutData(layoutData);
89 }
90
91 }