]> 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 055fcf56f2a4f11b5cc012f4b86808ffb9174846..3a4a60c9ff5ec6d2841f55f1d769ec4debd920be 100644 (file)
@@ -3,13 +3,15 @@ package org.argeo.cms.ui.widgets;
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 
-import org.argeo.cms.CmsException;
-import org.argeo.cms.ui.CmsImageManager;
+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;
 import org.eclipse.rap.fileupload.FileUploadReceiver;
@@ -18,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;
 
@@ -28,29 +29,33 @@ 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 {
-               this(Section.findSection(parent), parent, swtStyle, imgNode,
-                               preferredImageSize);
+       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);
        }
 
-       public Img(Composite parent, int swtStyle, Node imgNode)
+       public Img(Composite parent, int swtStyle, Node imgNode) throws RepositoryException {
+               this(Section.findSection(parent), parent, swtStyle, imgNode, null, null);
+               setStyle(TextStyles.TEXT_IMAGE);
+       }
+
+       public Img(Composite parent, int swtStyle, Node imgNode, CmsImageManager<Control, Node> imageManager)
                        throws RepositoryException {
-               this(Section.findSection(parent), parent, swtStyle, imgNode, null);
+               this(Section.findSection(parent), parent, swtStyle, imgNode, null, imageManager);
                setStyle(TextStyles.TEXT_IMAGE);
        }
 
-       Img(Section section, Composite parent, int swtStyle, Node imgNode,
-                       Point preferredImageSize) 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;
-               imageManager = CmsUiUtils.getCmsView().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
@@ -59,7 +64,7 @@ public class Img extends EditableImage implements SectionPart, NodePart {
                        try {
                                return createImageChooser(box, style);
                        } catch (RepositoryException e) {
-                               throw new CmsException("Cannot create image chooser", e);
+                               throw new JcrException("Cannot create image chooser", e);
                        }
                } else {
                        return createLabel(box, style);
@@ -74,34 +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 CmsException("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 {
-               // FileDialog fileDialog = new FileDialog(getShell());
-               // fileDialog.open();
-               // String fileName = fileDialog.getFileName();
-               CmsImageManager imageManager = CmsUiUtils.getCmsView().getImageManager();
+       protected Node getUploadFolder() {
+               return Jcr.getParent(getNode());
+       }
+
+       protected String getUploadName() {
                Node node = getNode();
-               JcrFileUploadReceiver receiver = new JcrFileUploadReceiver(
-                               node.getParent(), node.getName() + '[' + node.getIndex() + ']',
+               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;