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;
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;
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
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);
@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;