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<Content> {
@Override
}
@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
buf.append(node.getPath());
return buf.toString();
}
+
+ @Override
+ public Cms2DSize getImageSize(Content node) {
+ // TODO cache it?
+ Optional<Integer> width = node.get(SvgAttrs.width, Integer.class);
+ Optional<Integer> height = node.get(SvgAttrs.height, Integer.class);
+ if (!width.isEmpty() && !height.isEmpty())
+ return new Cms2DSize(width.get(), height.get());
+ return super.getImageSize(node);
+ }
+
}