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