X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fwidgets%2FImg.java;h=3a4a60c9ff5ec6d2841f55f1d769ec4debd920be;hb=b71546ddc74d6ca49d252806aafd491c75dfe1fb;hp=055fcf56f2a4f11b5cc012f4b86808ffb9174846;hpb=5b3108fe285bca50565b58b63fa4feddc96c0765;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/Img.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/Img.java index 055fcf56f..3a4a60c9f 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/Img.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/Img.java @@ -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 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 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 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) 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 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;