]> git.argeo.org Git - lgpl/argeo-commons.git/blob - jcr/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/EditableImage.java
Adapt to new third parties
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.ui / src / org / argeo / cms / ui / widgets / EditableImage.java
1 package org.argeo.cms.ui.widgets;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5
6 import org.argeo.api.cms.Cms2DSize;
7 import org.argeo.api.cms.CmsLog;
8 import org.argeo.cms.swt.CmsSwtUtils;
9 import org.argeo.cms.ui.util.CmsUiUtils;
10 import org.eclipse.swt.graphics.Point;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Control;
13 import org.eclipse.swt.widgets.Label;
14 import org.eclipse.swt.widgets.Text;
15
16 /** A stylable and editable image. */
17 public abstract class EditableImage extends StyledControl {
18 private static final long serialVersionUID = -5689145523114022890L;
19 private final static CmsLog log = CmsLog.getLog(EditableImage.class);
20
21 private Cms2DSize preferredImageSize;
22 private Boolean loaded = false;
23
24 public EditableImage(Composite parent, int swtStyle) {
25 super(parent, swtStyle);
26 }
27
28 public EditableImage(Composite parent, int swtStyle, Cms2DSize preferredImageSize) {
29 super(parent, swtStyle);
30 this.preferredImageSize = preferredImageSize;
31 }
32
33 public EditableImage(Composite parent, int style, Node node, boolean cacheImmediately, Cms2DSize preferredImageSize)
34 throws RepositoryException {
35 super(parent, style, node, cacheImmediately);
36 this.preferredImageSize = preferredImageSize;
37 }
38
39 @Override
40 protected void setContainerLayoutData(Composite composite) {
41 // composite.setLayoutData(fillWidth());
42 }
43
44 @Override
45 protected void setControlLayoutData(Control control) {
46 // control.setLayoutData(fillWidth());
47 }
48
49 /** To be overriden. */
50 protected String createImgTag() throws RepositoryException {
51 return CmsUiUtils
52 .noImg(preferredImageSize != null ? preferredImageSize : new Cms2DSize(getSize().x, getSize().y));
53 }
54
55 protected Label createLabel(Composite box, String style) {
56 Label lbl = new Label(box, getStyle());
57 // lbl.setLayoutData(CmsUiUtils.fillWidth());
58 CmsSwtUtils.markup(lbl);
59 CmsSwtUtils.style(lbl, style);
60 if (mouseListener != null)
61 lbl.addMouseListener(mouseListener);
62 load(lbl);
63 return lbl;
64 }
65
66 /** To be overriden. */
67 protected synchronized Boolean load(Control control) {
68 String imgTag;
69 try {
70 imgTag = createImgTag();
71 } catch (Exception e) {
72 // throw new CmsException("Cannot retrieve image", e);
73 log.error("Cannot retrieve image", e);
74 imgTag = CmsUiUtils.noImg(preferredImageSize);
75 loaded = false;
76 }
77
78 if (imgTag == null) {
79 loaded = false;
80 imgTag = CmsUiUtils.noImg(preferredImageSize);
81 } else
82 loaded = true;
83 if (control != null) {
84 ((Label) control).setText(imgTag);
85 control.setSize(preferredImageSize != null
86 ? new Point(preferredImageSize.getWidth(), preferredImageSize.getHeight())
87 : getSize());
88 } else {
89 loaded = false;
90 }
91 getParent().layout();
92 return loaded;
93 }
94
95 public void setPreferredSize(Cms2DSize size) {
96 this.preferredImageSize = size;
97 if (!loaded) {
98 load((Label) getControl());
99 }
100 }
101
102 protected Text createText(Composite box, String style) {
103 Text text = new Text(box, getStyle());
104 CmsSwtUtils.style(text, style);
105 return text;
106 }
107
108 public Cms2DSize getPreferredImageSize() {
109 return preferredImageSize;
110 }
111
112 }