1 package org
.argeo
.cms
.ui
.widgets
;
4 import javax
.jcr
.RepositoryException
;
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
;
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);
21 private Cms2DSize preferredImageSize
;
22 private Boolean loaded
= false;
24 public EditableImage(Composite parent
, int swtStyle
) {
25 super(parent
, swtStyle
);
28 public EditableImage(Composite parent
, int swtStyle
, Cms2DSize preferredImageSize
) {
29 super(parent
, swtStyle
);
30 this.preferredImageSize
= preferredImageSize
;
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
;
40 protected void setContainerLayoutData(Composite composite
) {
41 // composite.setLayoutData(fillWidth());
45 protected void setControlLayoutData(Control control
) {
46 // control.setLayoutData(fillWidth());
49 /** To be overriden. */
50 protected String
createImgTag() throws RepositoryException
{
52 .noImg(preferredImageSize
!= null ? preferredImageSize
: new Cms2DSize(getSize().x
, getSize().y
));
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
);
66 /** To be overriden. */
67 protected synchronized Boolean
load(Control control
) {
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
);
80 imgTag
= CmsUiUtils
.noImg(preferredImageSize
);
83 if (control
!= null) {
84 ((Label
) control
).setText(imgTag
);
85 control
.setSize(preferredImageSize
!= null
86 ?
new Point(preferredImageSize
.getWidth(), preferredImageSize
.getHeight())
95 public void setPreferredSize(Cms2DSize size
) {
96 this.preferredImageSize
= size
;
98 load((Label
) getControl());
102 protected Text
createText(Composite box
, String style
) {
103 Text text
= new Text(box
, getStyle());
104 CmsSwtUtils
.style(text
, style
);
108 public Cms2DSize
getPreferredImageSize() {
109 return preferredImageSize
;