1 package org
.argeo
.cms
.swt
.widgets
;
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
;
14 /** A stylable and editable image. */
16 public abstract class EditableImage
extends StyledControl
{
17 private static final long serialVersionUID
= -5689145523114022890L;
18 private final static CmsLog log
= CmsLog
.getLog(EditableImage
.class);
20 private Cms2DSize preferredImageSize
;
21 private Boolean loaded
= false;
23 public EditableImage(Composite parent
, int swtStyle
) {
24 super(parent
, swtStyle
);
27 public EditableImage(Composite parent
, int swtStyle
, Cms2DSize preferredImageSize
) {
28 super(parent
, swtStyle
);
29 this.preferredImageSize
= preferredImageSize
;
33 protected void setContainerLayoutData(Composite composite
) {
34 // composite.setLayoutData(fillWidth());
38 protected void setControlLayoutData(Control control
) {
39 // control.setLayoutData(fillWidth());
42 /** To be overriden. */
43 protected String
createImgTag() {
44 return noImg(preferredImageSize
!= null ? preferredImageSize
: new Cms2DSize(getSize().x
, getSize().y
));
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
);
58 /** To be overriden. */
59 protected synchronized Boolean
load(Control control
) {
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
);
72 imgTag
= noImg(preferredImageSize
);
75 if (control
!= null) {
76 ((Label
) control
).setText(imgTag
);
78 preferredImageSize
!= null ?
new Point(preferredImageSize
.width(), preferredImageSize
.height())
87 public void setPreferredSize(Cms2DSize size
) {
88 this.preferredImageSize
= size
;
90 load((Label
) getControl());
94 protected Text
createText(Composite box
, String style
) {
95 Text text
= new Text(box
, getStyle());
96 CmsSwtUtils
.style(text
, style
);
100 public Cms2DSize
getPreferredImageSize() {
101 return preferredImageSize
;
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
);
112 public static String
noImg() {
113 return noImg(AbstractImageManager
.NO_IMAGE_SIZE
);