1 package org
.argeo
.cms
.ui
.widgets
;
4 import javax
.jcr
.RepositoryException
;
6 import org
.apache
.commons
.logging
.Log
;
7 import org
.apache
.commons
.logging
.LogFactory
;
8 import org
.argeo
.api
.cms
.Cms2DSize
;
9 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
10 import org
.argeo
.cms
.ui
.util
.CmsUiUtils
;
11 import org
.eclipse
.swt
.graphics
.Point
;
12 import org
.eclipse
.swt
.widgets
.Composite
;
13 import org
.eclipse
.swt
.widgets
.Control
;
14 import org
.eclipse
.swt
.widgets
.Label
;
15 import org
.eclipse
.swt
.widgets
.Text
;
17 /** A stylable and editable image. */
18 public abstract class EditableImage
extends StyledControl
{
19 private static final long serialVersionUID
= -5689145523114022890L;
20 private final static Log log
= LogFactory
.getLog(EditableImage
.class);
22 private Cms2DSize preferredImageSize
;
23 private Boolean loaded
= false;
25 public EditableImage(Composite parent
, int swtStyle
) {
26 super(parent
, swtStyle
);
29 public EditableImage(Composite parent
, int swtStyle
, Cms2DSize preferredImageSize
) {
30 super(parent
, swtStyle
);
31 this.preferredImageSize
= preferredImageSize
;
34 public EditableImage(Composite parent
, int style
, Node node
, boolean cacheImmediately
, Cms2DSize preferredImageSize
)
35 throws RepositoryException
{
36 super(parent
, style
, node
, cacheImmediately
);
37 this.preferredImageSize
= preferredImageSize
;
41 protected void setContainerLayoutData(Composite composite
) {
42 // composite.setLayoutData(fillWidth());
46 protected void setControlLayoutData(Control control
) {
47 // control.setLayoutData(fillWidth());
50 /** To be overriden. */
51 protected String
createImgTag() throws RepositoryException
{
53 .noImg(preferredImageSize
!= null ? preferredImageSize
: new Cms2DSize(getSize().x
, getSize().y
));
56 protected Label
createLabel(Composite box
, String style
) {
57 Label lbl
= new Label(box
, getStyle());
58 // lbl.setLayoutData(CmsUiUtils.fillWidth());
59 CmsSwtUtils
.markup(lbl
);
60 CmsSwtUtils
.style(lbl
, style
);
61 if (mouseListener
!= null)
62 lbl
.addMouseListener(mouseListener
);
67 /** To be overriden. */
68 protected synchronized Boolean
load(Control control
) {
71 imgTag
= createImgTag();
72 } catch (Exception e
) {
73 // throw new CmsException("Cannot retrieve image", e);
74 log
.error("Cannot retrieve image", e
);
75 imgTag
= CmsUiUtils
.noImg(preferredImageSize
);
81 imgTag
= CmsUiUtils
.noImg(preferredImageSize
);
84 if (control
!= null) {
85 ((Label
) control
).setText(imgTag
);
86 control
.setSize(preferredImageSize
!= null
87 ?
new Point(preferredImageSize
.getWidth(), preferredImageSize
.getHeight())
96 public void setPreferredSize(Cms2DSize size
) {
97 this.preferredImageSize
= size
;
99 load((Label
) getControl());
103 protected Text
createText(Composite box
, String style
) {
104 Text text
= new Text(box
, getStyle());
105 CmsSwtUtils
.style(text
, style
);
109 public Cms2DSize
getPreferredImageSize() {
110 return preferredImageSize
;