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. */
15 public abstract class EditableImage
extends StyledControl
{
16 private static final long serialVersionUID
= -5689145523114022890L;
17 private final static CmsLog log
= CmsLog
.getLog(EditableImage
.class);
19 private Cms2DSize preferredImageSize
;
20 private Boolean loaded
= false;
22 public EditableImage(Composite parent
, int swtStyle
) {
23 super(parent
, swtStyle
);
26 public EditableImage(Composite parent
, int swtStyle
, Cms2DSize preferredImageSize
) {
27 super(parent
, swtStyle
);
28 this.preferredImageSize
= preferredImageSize
;
32 protected void setContainerLayoutData(Composite composite
) {
33 // composite.setLayoutData(fillWidth());
37 protected void setControlLayoutData(Control control
) {
38 // control.setLayoutData(fillWidth());
41 /** To be overriden. */
42 protected String
createImgTag() {
43 return noImg(preferredImageSize
!= null ? preferredImageSize
: new Cms2DSize(getSize().x
, getSize().y
));
46 protected Label
createLabel(Composite box
, String style
) {
47 Label lbl
= new Label(box
, getStyle());
48 // lbl.setLayoutData(CmsUiUtils.fillWidth());
49 CmsSwtUtils
.markup(lbl
);
50 CmsSwtUtils
.style(lbl
, style
);
51 if (mouseListener
!= null)
52 lbl
.addMouseListener(mouseListener
);
57 /** To be overriden. */
58 protected synchronized Boolean
load(Control control
) {
61 imgTag
= createImgTag();
62 } catch (Exception e
) {
63 // throw new CmsException("Cannot retrieve image", e);
64 log
.error("Cannot retrieve image", e
);
65 imgTag
= noImg(preferredImageSize
);
71 imgTag
= noImg(preferredImageSize
);
74 if (control
!= null) {
75 ((Label
) control
).setText(imgTag
);
76 control
.setSize(preferredImageSize
!= null
77 ?
new Point(preferredImageSize
.getWidth(), preferredImageSize
.getHeight())
86 public void setPreferredSize(Cms2DSize size
) {
87 this.preferredImageSize
= size
;
89 load((Label
) getControl());
93 protected Text
createText(Composite box
, String style
) {
94 Text text
= new Text(box
, getStyle());
95 CmsSwtUtils
.style(text
, style
);
99 public Cms2DSize
getPreferredImageSize() {
100 return preferredImageSize
;
103 public static String
noImg(Cms2DSize size
) {
104 // ResourceManager rm = RWT.getResourceManager();
105 // String noImgPath=rm.getLocation(AbstractImageManager.NO_IMAGE);
106 // FIXME load it via package service
107 String noImgPath
= "";
108 return CmsUxUtils
.img(noImgPath
, size
);
111 public static String
noImg() {
112 return noImg(AbstractImageManager
.NO_IMAGE_SIZE
);