]> git.argeo.org Git - lgpl/argeo-commons.git/blob - AcrSwtImageManager.java
0984f57fb2786a5366f833ac9f551c3ba9e31348
[lgpl/argeo-commons.git] / 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.CmsConstants;
9 import org.argeo.api.cms.ux.Cms2DSize;
10 import org.argeo.cms.acr.SvgAttrs;
11 import org.argeo.cms.swt.AbstractSwtImageManager;
12 import org.argeo.cms.swt.CmsSwtUtils;
13 import org.argeo.cms.ux.CmsUxUtils;
14 import org.eclipse.swt.graphics.ImageData;
15
16 /** Implementation of {@link AbstractSwtImageManager} based on ACR. */
17 public class AcrSwtImageManager extends AbstractSwtImageManager<Content> {
18
19 @Override
20 public String getImageUrl(Content node) {
21 return getDataPathForUrl(node);
22 }
23
24 @Override
25 public String uploadImage(Content context, Content uploadFolder, String fileName, InputStream in,
26 String contentType) {
27 throw new UnsupportedOperationException();
28 }
29
30 @Override
31 protected ImageData getSwtImageData(Content node) {
32 try (InputStream in = node.open(InputStream.class)) {
33 ImageData imageData = new ImageData(in);
34 return imageData;
35 } catch (IOException e) {
36 throw new RuntimeException(e);
37 }
38 }
39
40 @Override
41 protected String noImg(Cms2DSize size) {
42 String dataPath = "";
43 return CmsUxUtils.img(dataPath, size);
44 }
45
46 protected String getDataPathForUrl(Content content) {
47 return CmsSwtUtils.cleanPathForUrl(getDataPath(content));
48 }
49
50 /** A path in the node repository */
51 protected String getDataPath(Content node) {
52 // TODO make it more configurable?
53 StringBuilder buf = new StringBuilder(CmsConstants.PATH_API_ACR);
54 buf.append(node.getPath());
55 return buf.toString();
56 }
57
58 @Override
59 public Cms2DSize getImageSize(Content node) {
60 // TODO cache it?
61 Optional<Integer> width = node.get(SvgAttrs.width, Integer.class);
62 Optional<Integer> height = node.get(SvgAttrs.height, Integer.class);
63 if (!width.isEmpty() && !height.isEmpty())
64 return new Cms2DSize(width.get(), height.get());
65 return super.getImageSize(node);
66 }
67
68 }