]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/org.argeo.cms.swt/src/org/argeo/cms/swt/AbstractSwtImageManager.java
1 package org
.argeo
.cms
.swt
;
3 import org
.argeo
.api
.cms
.ux
.Cms2DSize
;
4 import org
.argeo
.cms
.ux
.AbstractImageManager
;
5 import org
.eclipse
.swt
.graphics
.Image
;
6 import org
.eclipse
.swt
.widgets
.Control
;
7 import org
.eclipse
.swt
.widgets
.Label
;
9 /** Manages only public images so far. */
10 public abstract class AbstractSwtImageManager
<M
> extends AbstractImageManager
<Control
, M
> {
11 protected abstract Image
getSwtImage(M node
);
13 protected abstract String
noImg(Cms2DSize size
);
15 public Boolean
load(M node
, Control control
, Cms2DSize preferredSize
) {
16 Cms2DSize imageSize
= getImageSize(node
);
19 if (preferredSize
== null || imageSize
.getWidth() == 0 || imageSize
.getHeight() == 0
20 || (preferredSize
.getWidth() == 0 && preferredSize
.getHeight() == 0)) {
21 if (imageSize
.getWidth() != 0 && imageSize
.getHeight() != 0) {
22 // actual image size if completely known
25 // no image if not completely known
26 size
= resizeTo(NO_IMAGE_SIZE
, preferredSize
!= null ? preferredSize
: imageSize
);
30 } else if (preferredSize
.getWidth() != 0 && preferredSize
.getHeight() != 0) {
31 // given size if completely provided
35 // image is completely known
36 assert imageSize
.getWidth() != 0 && imageSize
.getHeight() != 0;
37 // one and only one of the dimension as been specified
38 assert preferredSize
.getWidth() == 0 || preferredSize
.getHeight() == 0;
39 size
= resizeTo(imageSize
, preferredSize
);
42 boolean loaded
= false;
46 if (control
instanceof Label
) {
48 // IMAGE RETRIEVED HERE
49 imgTag
= getImageTag(node
, size
);
57 Label lbl
= (Label
) control
;
60 // } else if (control instanceof FileUpload) {
61 // FileUpload lbl = (FileUpload) control;
62 // lbl.setImage(CmsUiUtils.noImage(size));
63 // lbl.setSize(new Point(size.getWidth(), size.getHeight()));
71 public Cms2DSize
getImageSize(M node
) {
73 Image image
= getSwtImage(node
);
74 return new Cms2DSize(image
.getBounds().width
, image
.getBounds().height
);