]> git.argeo.org Git - lgpl/argeo-commons.git/blob - acr/Img.java
Prepare next development cycle
[lgpl/argeo-commons.git] / acr / Img.java
1 package org.argeo.cms.swt.acr;
2
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;
17
18 /** An image within the Argeo Text framework */
19 public class Img extends LinkedControl implements SwtSectionPart, ContentPart {
20 private static final long serialVersionUID = 6233572783968188476L;
21
22 private final SwtSection section;
23
24 private final CmsImageManager<Control, Content> imageManager;
25
26 private Cms2DSize preferredImageSize;
27
28 public Img(Composite parent, int swtStyle, Content imgNode, Cms2DSize preferredImageSize) {
29 this(SwtSection.findSection(parent), parent, swtStyle, imgNode, preferredImageSize, null);
30 }
31
32 public Img(Composite parent, int swtStyle, Content imgNode) {
33 this(SwtSection.findSection(parent), parent, swtStyle, imgNode, null, null);
34 }
35
36 public Img(Composite parent, int swtStyle, Content imgNode, CmsImageManager<Control, Content> imageManager) {
37 this(SwtSection.findSection(parent), parent, swtStyle, imgNode, null, imageManager);
38 }
39
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();
46 setData(imgNode);
47 }
48
49 @Override
50 protected Control createControl(Composite box, String style) {
51 if (isEditing()) {
52 return createImageChooser(box, style);
53 } else {
54 return createLabel(box, style);
55 }
56 }
57
58 protected synchronized Boolean load(Control lbl) {
59 Content imgNode = getContent();
60 boolean loaded = imageManager.load(imgNode, lbl, preferredImageSize, toUri());
61 return loaded;
62 }
63
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);
71 load(lbl);
72 return lbl;
73 }
74
75 protected Content getUploadFolder() {
76 return getContent().getParent();
77 }
78
79 protected String getUploadName() {
80 Content node = getContent();
81 // TODO centralise pattern?
82 return NamespaceUtils.toPrefixedName(node.getName()) + '[' + node.getSiblingIndex() + ']';
83 }
84
85 protected CmsImageManager<Control, Content> getImageManager() {
86 return imageManager;
87 }
88
89 protected Control createImageChooser(Composite box, String style) {
90 // JcrFileUploadReceiver receiver = new JcrFileUploadReceiver(this, getUploadFolder(), getUploadName(),
91 // imageManager);
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;
100
101 @Override
102 public void widgetSelected(SelectionEvent e) {
103 // pushSession.start();
104 // fileUpload.submit(currentUploadHandler.getUploadUrl());
105 }
106 });
107 return fileUpload;
108 }
109
110 // protected FileUploadHandler prepareUpload(FileUploadReceiver receiver) {
111 // final FileUploadHandler uploadHandler = new FileUploadHandler(receiver);
112 // if (fileUploadListener != null)
113 // uploadHandler.addUploadListener(fileUploadListener);
114 // return uploadHandler;
115 // }
116
117 @Override
118 public SwtSection getSection() {
119 return section;
120 }
121
122 // public void setFileUploadListener(FileUploadListener fileUploadListener) {
123 // this.fileUploadListener = fileUploadListener;
124 // if (currentUploadHandler != null)
125 // currentUploadHandler.addUploadListener(fileUploadListener);
126 // }
127
128 @Override
129 public Content getContent() {
130 return (Content) getData();
131 }
132
133 @Override
134 public String getPartId() {
135 return ((ProvidedContent) getContent()).getSessionLocalId();
136 }
137
138 @Override
139 public String toString() {
140 return "Img #" + getPartId();
141 }
142
143 public void setPreferredSize(Cms2DSize size) {
144 this.preferredImageSize = size;
145 }
146
147 public Cms2DSize getPreferredImageSize() {
148 return preferredImageSize;
149 }
150
151 public void setPreferredImageSize(Cms2DSize preferredImageSize) {
152 this.preferredImageSize = preferredImageSize;
153 }
154 }