1 package org
.argeo
.cms
.swt
.acr
;
3 import org
.argeo
.api
.acr
.Content
;
4 import org
.argeo
.api
.acr
.NamespaceUtils
;
5 import org
.argeo
.api
.acr
.spi
.ProvidedContent
;
6 import org
.argeo
.api
.cms
.ux
.Cms2DSize
;
7 import org
.argeo
.api
.cms
.ux
.CmsImageManager
;
8 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
9 import org
.argeo
.cms
.ux
.acr
.ContentPart
;
10 import org
.argeo
.eclipse
.ui
.specific
.CmsFileUpload
;
11 import org
.eclipse
.swt
.SWT
;
12 import org
.eclipse
.swt
.events
.SelectionAdapter
;
13 import org
.eclipse
.swt
.events
.SelectionEvent
;
14 import org
.eclipse
.swt
.widgets
.Composite
;
15 import org
.eclipse
.swt
.widgets
.Control
;
16 import org
.eclipse
.swt
.widgets
.Label
;
18 /** An image within the Argeo Text framework */
19 public class Img
extends LinkedControl
implements SwtSectionPart
, ContentPart
{
20 private static final long serialVersionUID
= 6233572783968188476L;
22 private final SwtSection section
;
24 private final CmsImageManager
<Control
, Content
> imageManager
;
26 private Cms2DSize preferredImageSize
;
28 public Img(Composite parent
, int swtStyle
, Content imgNode
, Cms2DSize preferredImageSize
) {
29 this(SwtSection
.findSection(parent
), parent
, swtStyle
, imgNode
, preferredImageSize
, null);
32 public Img(Composite parent
, int swtStyle
, Content imgNode
) {
33 this(SwtSection
.findSection(parent
), parent
, swtStyle
, imgNode
, null, null);
36 public Img(Composite parent
, int swtStyle
, Content imgNode
, CmsImageManager
<Control
, Content
> imageManager
) {
37 this(SwtSection
.findSection(parent
), parent
, swtStyle
, imgNode
, null, imageManager
);
40 Img(SwtSection section
, Composite parent
, int swtStyle
, Content imgNode
, Cms2DSize preferredImageSize
,
41 CmsImageManager
<Control
, Content
> imageManager
) {
42 super(parent
, swtStyle
);
43 this.preferredImageSize
= preferredImageSize
;
44 this.section
= section
;
45 this.imageManager
= imageManager
!= null ? imageManager
: CmsSwtUtils
.getCmsView(section
).getImageManager();
50 protected Control
createControl(Composite box
, String style
) {
52 return createImageChooser(box
, style
);
54 return createLabel(box
, style
);
58 protected synchronized Boolean
load(Control lbl
) {
59 Content imgNode
= getContent();
60 boolean loaded
= imageManager
.load(imgNode
, lbl
, preferredImageSize
, toUri());
64 protected Label
createLabel(Composite box
, String style
) {
65 Label lbl
= new Label(box
, getStyle());
66 // lbl.setLayoutData(CmsUiUtils.fillWidth());
67 CmsSwtUtils
.markup(lbl
);
68 CmsSwtUtils
.style(lbl
, style
);
69 if (mouseListener
!= null)
70 lbl
.addMouseListener(mouseListener
);
75 protected Content
getUploadFolder() {
76 return getContent().getParent();
79 protected String
getUploadName() {
80 Content node
= getContent();
81 // TODO centralise pattern?
82 return NamespaceUtils
.toPrefixedName(node
.getName()) + '[' + node
.getSiblingIndex() + ']';
85 protected CmsImageManager
<Control
, Content
> getImageManager() {
89 protected Control
createImageChooser(Composite box
, String style
) {
90 // JcrFileUploadReceiver receiver = new JcrFileUploadReceiver(this, getUploadFolder(), getUploadName(),
92 // if (currentUploadHandler != null)
93 // currentUploadHandler.dispose();
94 // currentUploadHandler = prepareUpload(receiver);
95 // final ServerPushSession pushSession = new ServerPushSession();
96 final CmsFileUpload fileUpload
= new CmsFileUpload(box
, SWT
.NONE
);
97 CmsSwtUtils
.style(fileUpload
, style
);
98 fileUpload
.addSelectionListener(new SelectionAdapter() {
99 private static final long serialVersionUID
= -9158471843941668562L;
102 public void widgetSelected(SelectionEvent e
) {
103 // pushSession.start();
104 // fileUpload.submit(currentUploadHandler.getUploadUrl());
110 // protected FileUploadHandler prepareUpload(FileUploadReceiver receiver) {
111 // final FileUploadHandler uploadHandler = new FileUploadHandler(receiver);
112 // if (fileUploadListener != null)
113 // uploadHandler.addUploadListener(fileUploadListener);
114 // return uploadHandler;
118 public SwtSection
getSection() {
122 // public void setFileUploadListener(FileUploadListener fileUploadListener) {
123 // this.fileUploadListener = fileUploadListener;
124 // if (currentUploadHandler != null)
125 // currentUploadHandler.addUploadListener(fileUploadListener);
129 public Content
getContent() {
130 return (Content
) getData();
134 public String
getPartId() {
135 return ((ProvidedContent
) getContent()).getSessionLocalId();
139 public String
toString() {
140 return "Img #" + getPartId();
143 public void setPreferredSize(Cms2DSize size
) {
144 this.preferredImageSize
= size
;
147 public Cms2DSize
getPreferredImageSize() {
148 return preferredImageSize
;
151 public void setPreferredImageSize(Cms2DSize preferredImageSize
) {
152 this.preferredImageSize
= preferredImageSize
;