]> git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/Img.java
Add account-related RFC 2307bis LDAP objects and attributes
[lgpl/argeo-commons.git] / swt / org.argeo.cms.swt / src / org / argeo / cms / swt / 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.swt.widgets.EditableImage;
10 import org.argeo.cms.ux.acr.ContentPart;
11 import org.argeo.eclipse.ui.specific.CmsFileUpload;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.events.SelectionAdapter;
14 import org.eclipse.swt.events.SelectionEvent;
15 import org.eclipse.swt.widgets.Composite;
16 import org.eclipse.swt.widgets.Control;
17
18 /** An image within the Argeo Text framework */
19 public class Img extends EditableImage 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 // private FileUploadHandler currentUploadHandler = null;
26 // private FileUploadListener fileUploadListener;
27
28 public Img(Composite parent, int swtStyle, Content imgNode, Cms2DSize preferredImageSize) {
29 this(SwtSection.findSection(parent), parent, swtStyle, imgNode, preferredImageSize, null);
30 // setStyle(TextStyles.TEXT_IMAGE);
31 }
32
33 public Img(Composite parent, int swtStyle, Content imgNode) {
34 this(SwtSection.findSection(parent), parent, swtStyle, imgNode, null, null);
35 // setStyle(TextStyles.TEXT_IMAGE);
36 }
37
38 public Img(Composite parent, int swtStyle, Content imgNode, CmsImageManager<Control, Content> imageManager) {
39 this(SwtSection.findSection(parent), parent, swtStyle, imgNode, null, imageManager);
40 // setStyle(TextStyles.TEXT_IMAGE);
41 }
42
43 Img(SwtSection section, Composite parent, int swtStyle, Content imgNode, Cms2DSize preferredImageSize,
44 CmsImageManager<Control, Content> imageManager) {
45 super(parent, swtStyle, preferredImageSize);
46 this.section = section;
47 this.imageManager = imageManager != null ? imageManager
48 : (CmsImageManager<Control, Content>) CmsSwtUtils.getCmsView(section).getImageManager();
49 // CmsSwtUtils.style(this, TextStyles.TEXT_IMG);
50 setData(imgNode);
51 }
52
53 @Override
54 protected Control createControl(Composite box, String style) {
55 if (isEditing()) {
56 return createImageChooser(box, style);
57 } else {
58 return createLabel(box, style);
59 }
60 }
61
62 @Override
63 public synchronized void stopEditing() {
64 super.stopEditing();
65 // fileUploadListener = null;
66 }
67
68 @Override
69 protected synchronized Boolean load(Control lbl) {
70 Content imgNode = getContent();
71 boolean loaded = imageManager.load(imgNode, lbl, getPreferredImageSize());
72 // getParent().layout();
73 return loaded;
74 }
75
76 protected Content getUploadFolder() {
77 return getContent().getParent();
78 }
79
80 protected String getUploadName() {
81 Content node = getContent();
82 // TODO centralise pattern?
83 return NamespaceUtils.toPrefixedName(node.getName()) + '[' + node.getSiblingIndex() + ']';
84 }
85
86 protected CmsImageManager<Control, Content> getImageManager() {
87 return imageManager;
88 }
89
90 protected Control createImageChooser(Composite box, String style) {
91 // JcrFileUploadReceiver receiver = new JcrFileUploadReceiver(this, getUploadFolder(), getUploadName(),
92 // imageManager);
93 // if (currentUploadHandler != null)
94 // currentUploadHandler.dispose();
95 // currentUploadHandler = prepareUpload(receiver);
96 // final ServerPushSession pushSession = new ServerPushSession();
97 final CmsFileUpload fileUpload = new CmsFileUpload(box, SWT.NONE);
98 CmsSwtUtils.style(fileUpload, style);
99 fileUpload.addSelectionListener(new SelectionAdapter() {
100 private static final long serialVersionUID = -9158471843941668562L;
101
102 @Override
103 public void widgetSelected(SelectionEvent e) {
104 // pushSession.start();
105 // fileUpload.submit(currentUploadHandler.getUploadUrl());
106 }
107 });
108 return fileUpload;
109 }
110
111 // protected FileUploadHandler prepareUpload(FileUploadReceiver receiver) {
112 // final FileUploadHandler uploadHandler = new FileUploadHandler(receiver);
113 // if (fileUploadListener != null)
114 // uploadHandler.addUploadListener(fileUploadListener);
115 // return uploadHandler;
116 // }
117
118 @Override
119 public SwtSection getSection() {
120 return section;
121 }
122
123 // public void setFileUploadListener(FileUploadListener fileUploadListener) {
124 // this.fileUploadListener = fileUploadListener;
125 // if (currentUploadHandler != null)
126 // currentUploadHandler.addUploadListener(fileUploadListener);
127 // }
128
129 @Override
130 public Content getContent() {
131 return (Content) getData();
132 }
133
134 @Override
135 public String getPartId() {
136 return ((ProvidedContent) getContent()).getSessionLocalId();
137 }
138
139 @Override
140 public String toString() {
141 return "Img #" + getPartId();
142 }
143
144 }