]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/Img.java
Major refactoring of Argeo CMS UI
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / widgets / Img.java
index 258aa9f49eb6006086675cb5f3b6c689fce6af95..3a4a60c9ff5ec6d2841f55f1d769ec4debd920be 100644 (file)
@@ -3,13 +3,14 @@ package org.argeo.cms.ui.widgets;
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 
-import org.argeo.cms.ui.CmsImageManager;
-import org.argeo.cms.ui.CmsView;
+import org.argeo.api.cms.Cms2DSize;
+import org.argeo.api.cms.CmsImageManager;
+import org.argeo.cms.swt.CmsSwtUtils;
 import org.argeo.cms.ui.internal.JcrFileUploadReceiver;
-import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.cms.ui.viewers.NodePart;
 import org.argeo.cms.ui.viewers.Section;
 import org.argeo.cms.ui.viewers.SectionPart;
+import org.argeo.jcr.Jcr;
 import org.argeo.jcr.JcrException;
 import org.eclipse.rap.fileupload.FileUploadHandler;
 import org.eclipse.rap.fileupload.FileUploadListener;
@@ -19,7 +20,6 @@ import org.eclipse.rap.rwt.widgets.FileUpload;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
@@ -29,11 +29,11 @@ public class Img extends EditableImage implements SectionPart, NodePart {
 
        private final Section section;
 
-       private final CmsImageManager imageManager;
+       private final CmsImageManager<Control, Node> imageManager;
        private FileUploadHandler currentUploadHandler = null;
        private FileUploadListener fileUploadListener;
 
-       public Img(Composite parent, int swtStyle, Node imgNode, Point preferredImageSize) throws RepositoryException {
+       public Img(Composite parent, int swtStyle, Node imgNode, Cms2DSize preferredImageSize) throws RepositoryException {
                this(Section.findSection(parent), parent, swtStyle, imgNode, preferredImageSize, null);
                setStyle(TextStyles.TEXT_IMAGE);
        }
@@ -43,17 +43,19 @@ public class Img extends EditableImage implements SectionPart, NodePart {
                setStyle(TextStyles.TEXT_IMAGE);
        }
 
-       public Img(Composite parent, int swtStyle, Node imgNode, CmsImageManager imageManager) throws RepositoryException {
+       public Img(Composite parent, int swtStyle, Node imgNode, CmsImageManager<Control, Node> imageManager)
+                       throws RepositoryException {
                this(Section.findSection(parent), parent, swtStyle, imgNode, null, imageManager);
                setStyle(TextStyles.TEXT_IMAGE);
        }
 
-       Img(Section section, Composite parent, int swtStyle, Node imgNode, Point preferredImageSize,
-                       CmsImageManager imageManager) throws RepositoryException {
+       Img(Section section, Composite parent, int swtStyle, Node imgNode, Cms2DSize preferredImageSize,
+                       CmsImageManager<Control, Node> imageManager) throws RepositoryException {
                super(parent, swtStyle, imgNode, false, preferredImageSize);
                this.section = section;
-               this.imageManager = imageManager != null ? imageManager : CmsView.getCmsView(section).getImageManager();
-               CmsUiUtils.style(this, TextStyles.TEXT_IMG);
+               this.imageManager = imageManager != null ? imageManager
+                               : (CmsImageManager<Control, Node>) CmsSwtUtils.getCmsView(section).getImageManager();
+               CmsSwtUtils.style(this, TextStyles.TEXT_IMG);
        }
 
        @Override
@@ -77,26 +79,34 @@ public class Img extends EditableImage implements SectionPart, NodePart {
 
        @Override
        protected synchronized Boolean load(Control lbl) {
-               try {
-                       Node imgNode = getNode();
-                       boolean loaded = imageManager.load(imgNode, lbl, getPreferredImageSize());
-                       // getParent().layout();
-                       return loaded;
-               } catch (RepositoryException e) {
-                       throw new JcrException("Cannot load " + getNodeId() + " from image manager", e);
-               }
+               Node imgNode = getNode();
+               boolean loaded = imageManager.load(imgNode, lbl, getPreferredImageSize());
+               // getParent().layout();
+               return loaded;
        }
 
-       protected Control createImageChooser(Composite box, String style) throws RepositoryException {
+       protected Node getUploadFolder() {
+               return Jcr.getParent(getNode());
+       }
+
+       protected String getUploadName() {
                Node node = getNode();
-               JcrFileUploadReceiver receiver = new JcrFileUploadReceiver(node.getParent(),
-                               node.getName() + '[' + node.getIndex() + ']', imageManager);
+               return Jcr.getName(node) + '[' + Jcr.getIndex(node) + ']';
+       }
+
+       protected CmsImageManager<Control, Node> getImageManager() {
+               return imageManager;
+       }
+
+       protected Control createImageChooser(Composite box, String style) throws RepositoryException {
+               JcrFileUploadReceiver receiver = new JcrFileUploadReceiver(this, getUploadFolder(), getUploadName(),
+                               imageManager);
                if (currentUploadHandler != null)
                        currentUploadHandler.dispose();
                currentUploadHandler = prepareUpload(receiver);
                final ServerPushSession pushSession = new ServerPushSession();
                final FileUpload fileUpload = new FileUpload(box, SWT.NONE);
-               CmsUiUtils.style(fileUpload, style);
+               CmsSwtUtils.style(fileUpload, style);
                fileUpload.addSelectionListener(new SelectionAdapter() {
                        private static final long serialVersionUID = -9158471843941668562L;