1 package org
.argeo
.cms
.widgets
;
4 import javax
.jcr
.RepositoryException
;
6 import org
.argeo
.cms
.CmsException
;
7 import org
.argeo
.cms
.ui
.CmsImageManager
;
8 import org
.argeo
.cms
.ui
.internal
.JcrFileUploadReceiver
;
9 import org
.argeo
.cms
.util
.CmsUtils
;
10 import org
.argeo
.cms
.viewers
.NodePart
;
11 import org
.argeo
.cms
.viewers
.Section
;
12 import org
.argeo
.cms
.viewers
.SectionPart
;
13 import org
.eclipse
.rap
.fileupload
.FileUploadHandler
;
14 import org
.eclipse
.rap
.fileupload
.FileUploadListener
;
15 import org
.eclipse
.rap
.fileupload
.FileUploadReceiver
;
16 import org
.eclipse
.rap
.rwt
.service
.ServerPushSession
;
17 import org
.eclipse
.rap
.rwt
.widgets
.FileUpload
;
18 import org
.eclipse
.swt
.SWT
;
19 import org
.eclipse
.swt
.events
.SelectionAdapter
;
20 import org
.eclipse
.swt
.events
.SelectionEvent
;
21 import org
.eclipse
.swt
.graphics
.Point
;
22 import org
.eclipse
.swt
.widgets
.Composite
;
23 import org
.eclipse
.swt
.widgets
.Control
;
25 /** An image within the Argeo Text framework */
26 public class Img
extends EditableImage
implements SectionPart
, NodePart
{
27 private static final long serialVersionUID
= 6233572783968188476L;
29 private final Section section
;
31 private final CmsImageManager imageManager
;
32 private FileUploadHandler currentUploadHandler
= null;
33 private FileUploadListener fileUploadListener
;
35 public Img(Composite parent
, int swtStyle
, Node imgNode
,
36 Point preferredImageSize
) throws RepositoryException
{
37 this(Section
.findSection(parent
), parent
, swtStyle
, imgNode
,
39 setStyle(TextStyles
.TEXT_IMAGE
);
42 public Img(Composite parent
, int swtStyle
, Node imgNode
)
43 throws RepositoryException
{
44 this(Section
.findSection(parent
), parent
, swtStyle
, imgNode
, null);
45 setStyle(TextStyles
.TEXT_IMAGE
);
48 Img(Section section
, Composite parent
, int swtStyle
, Node imgNode
,
49 Point preferredImageSize
) throws RepositoryException
{
50 super(parent
, swtStyle
, imgNode
, false, preferredImageSize
);
51 this.section
= section
;
52 imageManager
= CmsUtils
.getCmsView().getImageManager();
53 CmsUtils
.style(this, TextStyles
.TEXT_IMG
);
57 protected Control
createControl(Composite box
, String style
) {
60 return createImageChooser(box
, style
);
61 } catch (RepositoryException e
) {
62 throw new CmsException("Cannot create image chooser", e
);
65 return createLabel(box
, style
);
70 public synchronized void stopEditing() {
72 fileUploadListener
= null;
76 protected synchronized Boolean
load(Control lbl
) {
78 Node imgNode
= getNode();
79 boolean loaded
= imageManager
.load(imgNode
, lbl
,
80 getPreferredImageSize());
81 // getParent().layout();
83 } catch (RepositoryException e
) {
84 throw new CmsException("Cannot load " + getNodeId()
85 + " from image manager", e
);
89 protected Control
createImageChooser(Composite box
, String style
)
90 throws RepositoryException
{
91 // FileDialog fileDialog = new FileDialog(getShell());
93 // String fileName = fileDialog.getFileName();
94 CmsImageManager imageManager
= CmsUtils
.getCmsView().getImageManager();
95 Node node
= getNode();
96 JcrFileUploadReceiver receiver
= new JcrFileUploadReceiver(
97 node
.getParent(), node
.getName() + '[' + node
.getIndex() + ']',
99 if (currentUploadHandler
!= null)
100 currentUploadHandler
.dispose();
101 currentUploadHandler
= prepareUpload(receiver
);
102 final ServerPushSession pushSession
= new ServerPushSession();
103 final FileUpload fileUpload
= new FileUpload(box
, SWT
.NONE
);
104 CmsUtils
.style(fileUpload
, style
);
105 fileUpload
.addSelectionListener(new SelectionAdapter() {
106 private static final long serialVersionUID
= -9158471843941668562L;
109 public void widgetSelected(SelectionEvent e
) {
111 fileUpload
.submit(currentUploadHandler
.getUploadUrl());
117 protected FileUploadHandler
prepareUpload(FileUploadReceiver receiver
) {
118 final FileUploadHandler uploadHandler
= new FileUploadHandler(receiver
);
119 if (fileUploadListener
!= null)
120 uploadHandler
.addUploadListener(fileUploadListener
);
121 return uploadHandler
;
125 public Section
getSection() {
129 public void setFileUploadListener(FileUploadListener fileUploadListener
) {
130 this.fileUploadListener
= fileUploadListener
;
131 if (currentUploadHandler
!= null)
132 currentUploadHandler
.addUploadListener(fileUploadListener
);
136 public Node
getItem() throws RepositoryException
{
141 public String
getPartId() {
146 public String
toString() {
147 return "Img #" + getPartId();