]> git.argeo.org Git - lgpl/argeo-commons.git/blob - acr/AcrSwtImageManager.java
Prepare next development cycle
[lgpl/argeo-commons.git] / acr / AcrSwtImageManager.java
1 package org.argeo.cms.swt.acr;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.Optional;
6
7 import org.argeo.api.acr.Content;
8 import org.argeo.api.cms.ux.Cms2DSize;
9 import org.argeo.cms.acr.ContentUtils;
10 import org.argeo.cms.acr.SvgAttrs;
11 import org.argeo.cms.swt.AbstractSwtImageManager;
12 import org.argeo.cms.ux.CmsUxUtils;
13 import org.eclipse.swt.graphics.ImageData;
14
15 /** Implementation of {@link AbstractSwtImageManager} based on ACR. */
16 public class AcrSwtImageManager extends AbstractSwtImageManager<Content> {
17
18 @Override
19 public String getImageUrl(Content node) {
20 return getDataPathForUrl(node);
21 }
22
23 @Override
24 public String uploadImage(Content context, Content uploadFolder, String fileName, InputStream in,
25 String contentType) {
26 throw new UnsupportedOperationException();
27 }
28
29 @Override
30 protected ImageData getSwtImageData(Content node) {
31 try (InputStream in = node.open(InputStream.class)) {
32 ImageData imageData = new ImageData(in);
33 return imageData;
34 } catch (IOException e) {
35 throw new RuntimeException(e);
36 }
37 }
38
39 @Override
40 protected String noImg(Cms2DSize size) {
41 String dataPath = "";
42 return CmsUxUtils.img(dataPath, size);
43 }
44
45 protected String getDataPathForUrl(Content content) {
46 return ContentUtils.getDataPathForUrl(content);
47 }
48
49 @Override
50 public Cms2DSize getImageSize(Content node) {
51 // TODO cache it?
52 Optional<Integer> width = node.get(SvgAttrs.width, Integer.class);
53 Optional<Integer> height = node.get(SvgAttrs.height, Integer.class);
54 if (!width.isEmpty() && !height.isEmpty())
55 return new Cms2DSize(width.get(), height.get());
56 return super.getImageSize(node);
57 }
58
59 }