Move SWT components to their subdirectory
[gpl/argeo-suite.git] / org.argeo.app.swt / src / org / argeo / app / swt / docbook / DbkImageManager.java
diff --git a/org.argeo.app.swt/src/org/argeo/app/swt/docbook/DbkImageManager.java b/org.argeo.app.swt/src/org/argeo/app/swt/docbook/DbkImageManager.java
deleted file mode 100644 (file)
index 5fe67e1..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-package org.argeo.app.swt.docbook;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-
-import org.argeo.api.acr.Content;
-import org.argeo.api.acr.DName;
-import org.argeo.api.acr.spi.ProvidedContent;
-import org.argeo.api.cms.ux.Cms2DSize;
-import org.argeo.api.cms.ux.CmsImageManager;
-import org.argeo.app.api.EntityNames;
-import org.argeo.app.api.EntityType;
-import org.argeo.app.docbook.DbkAttr;
-import org.argeo.app.docbook.DbkType;
-import org.argeo.cms.acr.SvgAttrs;
-import org.argeo.cms.swt.acr.AcrSwtImageManager;
-import org.eclipse.swt.graphics.ImageData;
-
-/** Add DocBook images support to {@link CmsImageManager}. */
-public class DbkImageManager extends AcrSwtImageManager {
-       private Content baseFolder = null;
-
-       public DbkImageManager(Content baseFolder) {
-               this.baseFolder = baseFolder;
-       }
-
-       Content getImageDataNode(Content mediaObjectNode) {
-               return mediaObjectNode.child(DbkType.imageobject).child(DbkType.imagedata);
-       }
-
-//     @Override
-//     public Binary getImageBinary(Node node) {
-//             Node fileNode = null;
-//             if (DbkUtils.isDbk(node, DbkType.mediaobject)) {
-//                     Node imageDataNode = getImageDataNode(node);
-//                     fileNode = getFileNode(imageDataNode);
-//             }
-//             try {
-//                     if (node.isNodeType(NT_FILE)) {
-//                             fileNode = node;
-//                     }
-//                     if (fileNode != null) {
-//                             return node.getNode(JCR_CONTENT).getProperty(JCR_DATA).getBinary();
-//                     } else {
-//                             return null;
-//                     }
-//             } catch (RepositoryException e) {
-//                     throw new JcrException(e);
-//             }
-//     }
-
-       public Cms2DSize getImageSize(Content mediaObjectNode) {
-               Content imageDataNode = getImageDataNode(mediaObjectNode);
-               Content fileNode = getFileNode(imageDataNode);
-               if (fileNode == null)
-                       return new Cms2DSize(0, 0);
-               Cms2DSize intrinsicSize;
-               if (fileNode.containsKey(SvgAttrs.width) && fileNode.containsKey(SvgAttrs.height)) {
-                       int width = fileNode.get(SvgAttrs.width, Integer.class).orElseThrow();
-                       int height = fileNode.get(SvgAttrs.height, Integer.class).orElseThrow();
-                       intrinsicSize = new Cms2DSize(width, height);
-               } else {
-                       try (InputStream in = fileNode.open(InputStream.class)) {
-                               ImageData id = new ImageData(in);
-                               intrinsicSize = updateSize(fileNode, id);
-                       } catch (IOException e) {
-                               throw new RuntimeException("Cannot load file " + fileNode, e);
-                       }
-               }
-               // TODO interpret image data infos
-               return intrinsicSize;
-       }
-
-       protected Cms2DSize updateSize(Content fileNode, ImageData id) {
-               fileNode.addContentClasses(EntityType.box.qName());
-               fileNode.put(SvgAttrs.width, id.width);
-               fileNode.put(SvgAttrs.height, id.height);
-               return new Cms2DSize(id.width, id.height);
-       }
-
-//     @Override
-//     protected void processNewImageFile(Content mediaObjectNode, Content fileNode, ImageData id) throws IOException {
-//             Node imageDataNode = getImageDataNode(mediaObjectNode);
-//             updateSize(fileNode, id);
-//             String filePath = fileNode.getPath();
-//             String relPath = filePath.substring(baseFolder.getPath().length() + 1);
-//             imageDataNode.setProperty(DbkAttr.fileref.name(), relPath);
-//     }
-
-       @Override
-       public String getImageUrl(Content mediaObjectNode) {
-               Content imageDataNode = getImageDataNode(mediaObjectNode);
-               // TODO factorise
-               String fileref = imageDataNode.get(DbkAttr.fileref, String.class).orElse(null);
-               if (fileref == null)
-                       return null;
-               URI fileUri;
-               try {
-                       // FIXME it messes up with the '/'
-                       fileUri = new URI(URLEncoder.encode(fileref, StandardCharsets.UTF_8.toString()));
-               } catch (URISyntaxException | UnsupportedEncodingException e) {
-                       throw new IllegalArgumentException("File ref in " + imageDataNode + " is badly formatted", e);
-               }
-               if (fileUri.getScheme() != null)
-                       return fileUri.toString();
-               // local
-               Content fileNode = getFileNode(imageDataNode);
-               String url = getDataPathForUrl(fileNode);
-               return url;
-       }
-
-       protected Content getFileNode(Content imageDataNode) {
-               // FIXME make URL use case more robust
-               String fileref = imageDataNode.get(DbkAttr.fileref, String.class).orElse(null);
-               if (fileref == null)
-                       return null;
-               return ((ProvidedContent) baseFolder).getContent(fileref);
-       }
-
-       protected Content getMediaFolder() {
-               // TODO check edition status
-               Content mediaFolder = baseFolder.anyOrAddChild(EntityNames.MEDIA, DName.collection.qName());
-               return mediaFolder;
-       }
-}