]>
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
;
4 import java
.net
.URLEncoder
;
5 import java
.nio
.charset
.StandardCharsets
;
7 import org
.argeo
.api
.cms
.ux
.Cms2DSize
;
8 import org
.argeo
.cms
.ux
.AbstractImageManager
;
9 import org
.eclipse
.swt
.graphics
.ImageData
;
10 import org
.eclipse
.swt
.widgets
.Control
;
11 import org
.eclipse
.swt
.widgets
.Label
;
13 /** Manages only public images so far. */
14 public abstract class AbstractSwtImageManager
<M
> extends AbstractImageManager
<Control
, M
> {
15 protected abstract ImageData
getSwtImageData(M node
);
17 protected abstract String
noImg(Cms2DSize size
);
20 public Boolean
load(M node
, Control control
, Cms2DSize preferredSize
, URI link
) {
21 Cms2DSize imageSize
= getImageSize(node
);
24 if (preferredSize
== null || imageSize
.width() == 0 || imageSize
.height() == 0
25 || (preferredSize
.width() == 0 && preferredSize
.height() == 0)) {
26 if (imageSize
.width() != 0 && imageSize
.height() != 0) {
27 // actual image size if completely known
30 // no image if not completely known
31 size
= resizeTo(NO_IMAGE_SIZE
, preferredSize
!= null ? preferredSize
: imageSize
);
35 } else if (preferredSize
.width() != 0 && preferredSize
.height() != 0) {
36 // given size if completely provided
40 // image is completely known
41 assert imageSize
.width() != 0 && imageSize
.height() != 0;
42 // one and only one of the dimension as been specified
43 assert preferredSize
.width() == 0 || preferredSize
.height() == 0;
44 size
= resizeTo(imageSize
, preferredSize
);
47 boolean loaded
= false;
51 if (control
instanceof Label
) {
53 // IMAGE RETRIEVED HERE
54 imgTag
= getImageTag(node
, size
);
62 Label lbl
= (Label
) control
;
63 StringBuilder sb
= new StringBuilder();
65 sb
.append("<a href='").append(URLEncoder
.encode(link
.toString(), StandardCharsets
.UTF_8
)).append("'>");
72 // } else if (control instanceof FileUpload) {
73 // FileUpload lbl = (FileUpload) control;
74 // lbl.setImage(CmsUiUtils.noImage(size));
75 // lbl.setSize(new Point(size.getWidth(), size.getHeight()));
83 public Cms2DSize
getImageSize(M node
) {
85 ImageData imageData
= getSwtImageData(node
);
86 return new Cms2DSize(imageData
.width
, imageData
.height
);