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=e683d9630610a5d97e37eef59b2768e082357eed;hpb=ea7d6818525ff88cc6b9ed0957c912545bd8eb81;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 e683d9630..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,15 +1,19 @@ 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.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ux.CmsUxUtils; -import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +/** Implementation of {@link AbstractSwtImageManager} based on ACR. */ public class AcrSwtImageManager extends AbstractSwtImageManager { @Override @@ -24,8 +28,13 @@ public class AcrSwtImageManager extends AbstractSwtImageManager { } @Override - protected Image getSwtImage(Content node) { - throw new UnsupportedOperationException(); + 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 @@ -41,8 +50,19 @@ public class AcrSwtImageManager extends AbstractSwtImageManager { /** A path in the node repository */ protected String getDataPath(Content node) { // TODO make it more configurable? - StringBuilder buf = new StringBuilder(CmsConstants.PATH_DATA); + 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); + } + }