X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Facr%2FAcrSwtImageManager.java;h=0984f57fb2786a5366f833ac9f551c3ba9e31348;hb=0bccba2b9f1ac5d0be1a06dcb4fe56859f641b9a;hp=5e83454dec6607fe9edd3c5181b1494c8115f614;hpb=1bd165d6454edb8a600ece696fab2a293e9eaf27;p=lgpl%2Fargeo-commons.git diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java index 5e83454de..0984f57fb 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java @@ -1,37 +1,68 @@ package org.argeo.cms.swt.acr; +import java.io.IOException; import java.io.InputStream; +import java.util.Optional; import org.argeo.api.acr.Content; +import org.argeo.api.cms.CmsConstants; import org.argeo.api.cms.ux.Cms2DSize; +import org.argeo.cms.acr.SvgAttrs; import org.argeo.cms.swt.AbstractSwtImageManager; -import org.eclipse.swt.graphics.Image; +import org.argeo.cms.swt.CmsSwtUtils; +import org.argeo.cms.ux.CmsUxUtils; +import org.eclipse.swt.graphics.ImageData; +/** Implementation of {@link AbstractSwtImageManager} based on ACR. */ public class AcrSwtImageManager extends AbstractSwtImageManager { @Override public String getImageUrl(Content node) { - // TODO Auto-generated method stub - return null; + return getDataPathForUrl(node); } @Override public String uploadImage(Content context, Content uploadFolder, String fileName, InputStream in, String contentType) { - // TODO Auto-generated method stub - return null; + throw new UnsupportedOperationException(); } @Override - protected Image getSwtImage(Content node) { - // TODO Auto-generated method stub - return null; + protected ImageData getSwtImageData(Content node) { + try (InputStream in = node.open(InputStream.class)) { + ImageData imageData = new ImageData(in); + return imageData; + } catch (IOException e) { + throw new RuntimeException(e); + } } @Override protected String noImg(Cms2DSize size) { - // TODO Auto-generated method stub - return null; + String dataPath = ""; + return CmsUxUtils.img(dataPath, size); + } + + protected String getDataPathForUrl(Content content) { + return CmsSwtUtils.cleanPathForUrl(getDataPath(content)); + } + + /** A path in the node repository */ + protected String getDataPath(Content node) { + // TODO make it more configurable? + StringBuilder buf = new StringBuilder(CmsConstants.PATH_API_ACR); + buf.append(node.getPath()); + return buf.toString(); + } + + @Override + public Cms2DSize getImageSize(Content node) { + // TODO cache it? + Optional width = node.get(SvgAttrs.width, Integer.class); + Optional height = node.get(SvgAttrs.height, Integer.class); + if (!width.isEmpty() && !height.isEmpty()) + return new Cms2DSize(width.get(), height.get()); + return super.getImageSize(node); } }