root / src / gr / grnet / pithos / web / client / FileShareDialog.java @ bc982727
History | View | Annotate | Download (22.8 kB)
1 | 64d3b76b | Christos KK Loverdos | /*
|
---|---|---|---|
2 | 64d3b76b | Christos KK Loverdos | * Copyright 2011-2013 GRNET S.A. All rights reserved.
|
3 | 64d3b76b | Christos KK Loverdos | *
|
4 | 64d3b76b | Christos KK Loverdos | * Redistribution and use in source and binary forms, with or
|
5 | 64d3b76b | Christos KK Loverdos | * without modification, are permitted provided that the following
|
6 | 64d3b76b | Christos KK Loverdos | * conditions are met:
|
7 | 64d3b76b | Christos KK Loverdos | *
|
8 | 64d3b76b | Christos KK Loverdos | * 1. Redistributions of source code must retain the above
|
9 | 64d3b76b | Christos KK Loverdos | * copyright notice, this list of conditions and the following
|
10 | 64d3b76b | Christos KK Loverdos | * disclaimer.
|
11 | 64d3b76b | Christos KK Loverdos | *
|
12 | 64d3b76b | Christos KK Loverdos | * 2. Redistributions in binary form must reproduce the above
|
13 | 64d3b76b | Christos KK Loverdos | * copyright notice, this list of conditions and the following
|
14 | 64d3b76b | Christos KK Loverdos | * disclaimer in the documentation and/or other materials
|
15 | 64d3b76b | Christos KK Loverdos | * provided with the distribution.
|
16 | 64d3b76b | Christos KK Loverdos | *
|
17 | 64d3b76b | Christos KK Loverdos | * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
18 | 64d3b76b | Christos KK Loverdos | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 | 64d3b76b | Christos KK Loverdos | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
20 | 64d3b76b | Christos KK Loverdos | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
21 | 64d3b76b | Christos KK Loverdos | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22 | 64d3b76b | Christos KK Loverdos | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23 | 64d3b76b | Christos KK Loverdos | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
24 | 64d3b76b | Christos KK Loverdos | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
25 | 64d3b76b | Christos KK Loverdos | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
26 | 64d3b76b | Christos KK Loverdos | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
27 | 64d3b76b | Christos KK Loverdos | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
28 | 64d3b76b | Christos KK Loverdos | * POSSIBILITY OF SUCH DAMAGE.
|
29 | 64d3b76b | Christos KK Loverdos | *
|
30 | 64d3b76b | Christos KK Loverdos | * The views and conclusions contained in the software and
|
31 | 64d3b76b | Christos KK Loverdos | * documentation are those of the authors and should not be
|
32 | 64d3b76b | Christos KK Loverdos | * interpreted as representing official policies, either expressed
|
33 | 64d3b76b | Christos KK Loverdos | * or implied, of GRNET S.A.
|
34 | 64d3b76b | Christos KK Loverdos | */
|
35 | 64d3b76b | Christos KK Loverdos | package gr.grnet.pithos.web.client; |
36 | 64d3b76b | Christos KK Loverdos | |
37 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.http.client.URL; |
38 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.user.client.ui.*; |
39 | 64d3b76b | Christos KK Loverdos | import gr.grnet.pithos.web.client.foldertree.File; |
40 | 64d3b76b | Christos KK Loverdos | import gr.grnet.pithos.web.client.rest.HeadRequest; |
41 | 64d3b76b | Christos KK Loverdos | import gr.grnet.pithos.web.client.rest.PostRequest; |
42 | 64d3b76b | Christos KK Loverdos | |
43 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.core.client.GWT; |
44 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.core.client.Scheduler; |
45 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.dom.client.NativeEvent; |
46 | c963be61 | Christos KK Loverdos | import com.google.gwt.event.dom.client.ClickEvent; |
47 | c963be61 | Christos KK Loverdos | import com.google.gwt.event.dom.client.ClickHandler; |
48 | c963be61 | Christos KK Loverdos | import com.google.gwt.event.dom.client.KeyCodes; |
49 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.http.client.Response; |
50 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.http.client.UrlBuilder; |
51 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.resources.client.ImageResource; |
52 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.user.client.Command; |
53 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.user.client.Window; |
54 | 64d3b76b | Christos KK Loverdos | import com.google.gwt.user.client.Event.NativePreviewEvent; |
55 | 64d3b76b | Christos KK Loverdos | |
56 | 64d3b76b | Christos KK Loverdos | import java.util.Map; |
57 | 64d3b76b | Christos KK Loverdos | |
58 | 64d3b76b | Christos KK Loverdos | /**
|
59 | 64d3b76b | Christos KK Loverdos | * UI for the "Share" command.
|
60 | 64d3b76b | Christos KK Loverdos | */
|
61 | 64d3b76b | Christos KK Loverdos | public class FileShareDialog extends AbstractPropertiesDialog { |
62 | 77424c81 | Christos KK Loverdos | private static final class PermissionsUncheckWarning extends AbstractPropertiesDialog { |
63 | 77424c81 | Christos KK Loverdos | private PermissionsUncheckWarning(Pithos app) {
|
64 | b12da07a | Christos KK Loverdos | super(app);
|
65 | b12da07a | Christos KK Loverdos | final Anchor close = new Anchor("close"); |
66 | b12da07a | Christos KK Loverdos | close.addStyleName("close");
|
67 | b12da07a | Christos KK Loverdos | close.addClickHandler(new ClickHandler() {
|
68 | b12da07a | Christos KK Loverdos | @Override
|
69 | b12da07a | Christos KK Loverdos | public void onClick(ClickEvent event) { |
70 | b12da07a | Christos KK Loverdos | hide(); |
71 | b12da07a | Christos KK Loverdos | } |
72 | b12da07a | Christos KK Loverdos | }); |
73 | b12da07a | Christos KK Loverdos | final String dialogText = "Info"; |
74 | b12da07a | Christos KK Loverdos | setText(dialogText); |
75 | b12da07a | Christos KK Loverdos | setStyleName("pithos-DialogBox");
|
76 | b12da07a | Christos KK Loverdos | |
77 | b12da07a | Christos KK Loverdos | final VerticalPanel panel = new VerticalPanel(); |
78 | b12da07a | Christos KK Loverdos | panel.add(close); |
79 | b12da07a | Christos KK Loverdos | |
80 | b12da07a | Christos KK Loverdos | VerticalPanel inner = new VerticalPanel();
|
81 | b12da07a | Christos KK Loverdos | inner.addStyleName("inner");
|
82 | b12da07a | Christos KK Loverdos | |
83 | b12da07a | Christos KK Loverdos | inner.add( |
84 | b12da07a | Christos KK Loverdos | new InlineHTML(
|
85 | b12da07a | Christos KK Loverdos | "It seems you are already sharing this file with some users." +
|
86 | b12da07a | Christos KK Loverdos | "<br>" +
|
87 | b12da07a | Christos KK Loverdos | "Please remove all users from the sharing list, to be able to uncheck this option."
|
88 | b12da07a | Christos KK Loverdos | ) |
89 | b12da07a | Christos KK Loverdos | ); |
90 | b12da07a | Christos KK Loverdos | |
91 | b12da07a | Christos KK Loverdos | final Button ok = new Button("OK", new ClickHandler() { |
92 | b12da07a | Christos KK Loverdos | @Override
|
93 | b12da07a | Christos KK Loverdos | public void onClick(ClickEvent event) { |
94 | b12da07a | Christos KK Loverdos | hide(); |
95 | b12da07a | Christos KK Loverdos | } |
96 | b12da07a | Christos KK Loverdos | }); |
97 | b12da07a | Christos KK Loverdos | |
98 | b12da07a | Christos KK Loverdos | ok.addStyleName("button");
|
99 | b12da07a | Christos KK Loverdos | inner.add(ok); |
100 | b12da07a | Christos KK Loverdos | |
101 | b12da07a | Christos KK Loverdos | panel.add(inner); |
102 | b12da07a | Christos KK Loverdos | panel.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER); |
103 | b12da07a | Christos KK Loverdos | |
104 | b12da07a | Christos KK Loverdos | setWidget(panel); |
105 | b12da07a | Christos KK Loverdos | } |
106 | b12da07a | Christos KK Loverdos | |
107 | b12da07a | Christos KK Loverdos | @Override
|
108 | b12da07a | Christos KK Loverdos | protected boolean accept() { |
109 | b12da07a | Christos KK Loverdos | return true; |
110 | b12da07a | Christos KK Loverdos | } |
111 | b12da07a | Christos KK Loverdos | } |
112 | b12da07a | Christos KK Loverdos | |
113 | 64d3b76b | Christos KK Loverdos | // For public sharing
|
114 | 64d3b76b | Christos KK Loverdos | private final HorizontalPanel publicPathPanel = new HorizontalPanel(); |
115 | c963be61 | Christos KK Loverdos | private final TextBox publicPathText = new TextBox(); |
116 | 64d3b76b | Christos KK Loverdos | |
117 | 64d3b76b | Christos KK Loverdos | // For private sharing
|
118 | 64d3b76b | Christos KK Loverdos | private final HorizontalPanel privatePathPanel = new HorizontalPanel(); |
119 | c963be61 | Christos KK Loverdos | private final TextBox privatePathText = new TextBox(); |
120 | 64d3b76b | Christos KK Loverdos | private PermissionsList permList;
|
121 | bc982727 | Christos KK Loverdos | |
122 | 64d3b76b | Christos KK Loverdos | public interface PrivateSharingImages extends MessagePanel.Images { |
123 | 64d3b76b | Christos KK Loverdos | |
124 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/edit_user.png") |
125 | 64d3b76b | Christos KK Loverdos | ImageResource permUser(); |
126 | 64d3b76b | Christos KK Loverdos | |
127 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/groups22.png") |
128 | 64d3b76b | Christos KK Loverdos | ImageResource permGroup(); |
129 | 64d3b76b | Christos KK Loverdos | |
130 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/delete.gif") |
131 | 64d3b76b | Christos KK Loverdos | ImageResource delete(); |
132 | 64d3b76b | Christos KK Loverdos | } |
133 | 64d3b76b | Christos KK Loverdos | |
134 | 64d3b76b | Christos KK Loverdos | private final File file; |
135 | 64d3b76b | Christos KK Loverdos | |
136 | 64d3b76b | Christos KK Loverdos | private final PrivateSharingImages privateSharingImages = GWT.create(PrivateSharingImages.class); |
137 | 64d3b76b | Christos KK Loverdos | |
138 | 64d3b76b | Christos KK Loverdos | /**
|
139 | 64d3b76b | Christos KK Loverdos | * The widget's constructor.
|
140 | 64d3b76b | Christos KK Loverdos | */
|
141 | ed2b76a4 | Christos KK Loverdos | public FileShareDialog(Pithos app, File file) { |
142 | ed2b76a4 | Christos KK Loverdos | super(app);
|
143 | ed2b76a4 | Christos KK Loverdos | this.file = file;
|
144 | 64d3b76b | Christos KK Loverdos | |
145 | 64d3b76b | Christos KK Loverdos | Anchor close = new Anchor("close"); |
146 | 64d3b76b | Christos KK Loverdos | close.addStyleName("close");
|
147 | 64d3b76b | Christos KK Loverdos | close.addClickHandler(new ClickHandler() {
|
148 | 64d3b76b | Christos KK Loverdos | |
149 | 64d3b76b | Christos KK Loverdos | @Override
|
150 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
151 | 64d3b76b | Christos KK Loverdos | hide(); |
152 | 64d3b76b | Christos KK Loverdos | } |
153 | 64d3b76b | Christos KK Loverdos | }); |
154 | 64d3b76b | Christos KK Loverdos | // Set the dialog's caption.
|
155 | d1609e26 | Christos KK Loverdos | setText(Const.TXT_SHARE_FILE); |
156 | 64d3b76b | Christos KK Loverdos | setGlassEnabled(true);
|
157 | 64d3b76b | Christos KK Loverdos | setStyleName("pithos-DialogBox");
|
158 | 64d3b76b | Christos KK Loverdos | |
159 | 64d3b76b | Christos KK Loverdos | // Outer contains inner and buttons.
|
160 | 64d3b76b | Christos KK Loverdos | final VerticalPanel outer = new VerticalPanel(); |
161 | 64d3b76b | Christos KK Loverdos | outer.add(close); |
162 | 64d3b76b | Christos KK Loverdos | final FocusPanel focusPanel = new FocusPanel(outer); |
163 | 64d3b76b | Christos KK Loverdos | // Inner contains generalPanel and permPanel.
|
164 | 64d3b76b | Christos KK Loverdos | inner = new VerticalPanel();
|
165 | 64d3b76b | Christos KK Loverdos | inner.addStyleName("inner");
|
166 | 64d3b76b | Christos KK Loverdos | |
167 | 64d3b76b | Christos KK Loverdos | inner.add(createMainPanel()); |
168 | 64d3b76b | Christos KK Loverdos | |
169 | 64d3b76b | Christos KK Loverdos | outer.add(inner); |
170 | 64d3b76b | Christos KK Loverdos | |
171 | 64d3b76b | Christos KK Loverdos | final Button ok = new Button("OK", new ClickHandler() { |
172 | 64d3b76b | Christos KK Loverdos | @Override
|
173 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
174 | 64d3b76b | Christos KK Loverdos | closeDialog(); |
175 | 64d3b76b | Christos KK Loverdos | } |
176 | 64d3b76b | Christos KK Loverdos | }); |
177 | 64d3b76b | Christos KK Loverdos | ok.addStyleName("button");
|
178 | 64d3b76b | Christos KK Loverdos | |
179 | 64d3b76b | Christos KK Loverdos | outer.add(ok); |
180 | 64d3b76b | Christos KK Loverdos | outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER); |
181 | 64d3b76b | Christos KK Loverdos | |
182 | 64d3b76b | Christos KK Loverdos | focusPanel.setFocus(true);
|
183 | 64d3b76b | Christos KK Loverdos | setWidget(outer); |
184 | 64d3b76b | Christos KK Loverdos | } |
185 | 64d3b76b | Christos KK Loverdos | |
186 | 64d3b76b | Christos KK Loverdos | private boolean IamOwner() { |
187 | 64d3b76b | Christos KK Loverdos | return file.getOwnerID().equals(app.getUserID());
|
188 | 64d3b76b | Christos KK Loverdos | } |
189 | 64d3b76b | Christos KK Loverdos | |
190 | 64d3b76b | Christos KK Loverdos | private void populatePublicSharingPanel(VerticalPanel publicSharingPanel) { |
191 | 64d3b76b | Christos KK Loverdos | if(IamOwner()) {
|
192 | 64d3b76b | Christos KK Loverdos | final HorizontalPanel publicCheckPanel = new HorizontalPanel(); |
193 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.setSpacing(8);
|
194 | 64d3b76b | Christos KK Loverdos | |
195 | 64d3b76b | Christos KK Loverdos | // Check box header
|
196 | 64d3b76b | Christos KK Loverdos | final CheckBox publicCheckBox = new CheckBox(); |
197 | 64d3b76b | Christos KK Loverdos | Label publicCheckTitle = new InlineHTML("<b>Public on the Internet</b>"); |
198 | 64d3b76b | Christos KK Loverdos | Label publicCheckInfo = new Label("Anyone who has the public link can access. No sign-in required.", true); |
199 | 64d3b76b | Christos KK Loverdos | |
200 | 64d3b76b | Christos KK Loverdos | publicCheckBox.setValue(isFilePubliclyShared()); |
201 | 64d3b76b | Christos KK Loverdos | publicCheckBox.addClickHandler(new ClickHandler() {
|
202 | 64d3b76b | Christos KK Loverdos | @Override
|
203 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
204 | 64d3b76b | Christos KK Loverdos | final Boolean published; |
205 | 64d3b76b | Christos KK Loverdos | if(publicCheckBox.getValue() != file.isPublished() && IamOwner()) {
|
206 | 64d3b76b | Christos KK Loverdos | published = publicCheckBox.getValue(); |
207 | 64d3b76b | Christos KK Loverdos | } |
208 | 64d3b76b | Christos KK Loverdos | else {
|
209 | 64d3b76b | Christos KK Loverdos | published = Boolean.FALSE;
|
210 | 64d3b76b | Christos KK Loverdos | } |
211 | 64d3b76b | Christos KK Loverdos | |
212 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPublicSharing(published); |
213 | 64d3b76b | Christos KK Loverdos | } |
214 | 64d3b76b | Christos KK Loverdos | }); |
215 | 64d3b76b | Christos KK Loverdos | |
216 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.add(publicCheckBox); |
217 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.add(publicCheckTitle); |
218 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.add(publicCheckInfo); |
219 | 64d3b76b | Christos KK Loverdos | |
220 | 64d3b76b | Christos KK Loverdos | // Public Link
|
221 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setVisible(false);
|
222 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setWidth(Const.PERCENT_100); |
223 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); |
224 | b551f85b | Christos KK Loverdos | publicPathPanel.add(new Label(Const.TXT_PUBLIC_LINK)); |
225 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setSpacing(8);
|
226 | 64d3b76b | Christos KK Loverdos | publicPathPanel.addStyleName("pithos-TabPanelBottom");
|
227 | 64d3b76b | Christos KK Loverdos | |
228 | 64d3b76b | Christos KK Loverdos | publicPathText.setWidth(Const.PERCENT_100); |
229 | 64d3b76b | Christos KK Loverdos | publicPathText.addClickHandler(new ClickHandler() {
|
230 | 64d3b76b | Christos KK Loverdos | @Override
|
231 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
232 | 64d3b76b | Christos KK Loverdos | Pithos.enableIESelection(); |
233 | 64d3b76b | Christos KK Loverdos | ((TextBox) event.getSource()).selectAll(); |
234 | 64d3b76b | Christos KK Loverdos | Pithos.preventIESelection(); |
235 | 64d3b76b | Christos KK Loverdos | } |
236 | 64d3b76b | Christos KK Loverdos | }); |
237 | bc982727 | Christos KK Loverdos | publicPathText.setText(file.getPublicUri()); |
238 | 64d3b76b | Christos KK Loverdos | publicPathText.setTitle("Use this link for sharing the file via e-mail, IM, etc. (crtl-C/cmd-C to copy to system clipboard)");
|
239 | 64d3b76b | Christos KK Loverdos | publicPathText.setReadOnly(true);
|
240 | 64d3b76b | Christos KK Loverdos | publicPathPanel.add(publicPathText); |
241 | 64d3b76b | Christos KK Loverdos | |
242 | 64d3b76b | Christos KK Loverdos | publicSharingPanel.add(publicCheckPanel); |
243 | 64d3b76b | Christos KK Loverdos | publicSharingPanel.add(publicPathPanel); |
244 | 64d3b76b | Christos KK Loverdos | |
245 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(new Command() {
|
246 | 64d3b76b | Christos KK Loverdos | @Override
|
247 | 64d3b76b | Christos KK Loverdos | public void execute() { |
248 | 64d3b76b | Christos KK Loverdos | showLinkForPublicSharing(); |
249 | 64d3b76b | Christos KK Loverdos | } |
250 | 64d3b76b | Christos KK Loverdos | }); |
251 | 64d3b76b | Christos KK Loverdos | } |
252 | 64d3b76b | Christos KK Loverdos | } |
253 | 64d3b76b | Christos KK Loverdos | |
254 | 64d3b76b | Christos KK Loverdos | private void populatePrivateSharingPanel(VerticalPanel privateSharingPanel) { |
255 | 64d3b76b | Christos KK Loverdos | final HorizontalPanel privateCheckPanel = new HorizontalPanel(); |
256 | 64d3b76b | Christos KK Loverdos | final VerticalPanel privatePermPanel = new VerticalPanel(); |
257 | 64d3b76b | Christos KK Loverdos | final HorizontalPanel permButtons = new HorizontalPanel(); |
258 | 64d3b76b | Christos KK Loverdos | |
259 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.setSpacing(8);
|
260 | 64d3b76b | Christos KK Loverdos | privatePermPanel.setVisible(isFilePrivatelyShared()); |
261 | 64d3b76b | Christos KK Loverdos | permButtons.setSpacing(8);
|
262 | 64d3b76b | Christos KK Loverdos | |
263 | 64d3b76b | Christos KK Loverdos | // Check box header
|
264 | 64d3b76b | Christos KK Loverdos | final CheckBox privateCheckBox = new CheckBox(); |
265 | 64d3b76b | Christos KK Loverdos | final Label privateCheckTitle = new InlineHTML("<b>Private sharing</b>"); |
266 | 64d3b76b | Christos KK Loverdos | final Label privateCheckInfo = new Label("Only people explicitly granted permission can access. Sign-in required.", true); |
267 | 64d3b76b | Christos KK Loverdos | |
268 | 64d3b76b | Christos KK Loverdos | privateCheckBox.setValue(isFilePrivatelyShared()); |
269 | 64d3b76b | Christos KK Loverdos | privateCheckBox.addClickHandler(new ClickHandler() {
|
270 | 64d3b76b | Christos KK Loverdos | @Override
|
271 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
272 | b12da07a | Christos KK Loverdos | // This is the value *after* the click is applied :)
|
273 | b12da07a | Christos KK Loverdos | boolean userCheckedIt = privateCheckBox.getValue();
|
274 | b12da07a | Christos KK Loverdos | boolean userUncheckedIt = !userCheckedIt;
|
275 | b12da07a | Christos KK Loverdos | |
276 | 64d3b76b | Christos KK Loverdos | if(isFilePrivatelyShared()) {
|
277 | 64d3b76b | Christos KK Loverdos | // ignore the click, set it always to "checked"
|
278 | 64d3b76b | Christos KK Loverdos | privateCheckBox.setValue(true);
|
279 | 64d3b76b | Christos KK Loverdos | // show permissions
|
280 | 64d3b76b | Christos KK Loverdos | privatePermPanel.setVisible(true);
|
281 | b12da07a | Christos KK Loverdos | |
282 | b12da07a | Christos KK Loverdos | // Refs #3593
|
283 | b12da07a | Christos KK Loverdos | if(userUncheckedIt) {
|
284 | 77424c81 | Christos KK Loverdos | new PermissionsUncheckWarning(app).center();
|
285 | b12da07a | Christos KK Loverdos | } |
286 | 64d3b76b | Christos KK Loverdos | } |
287 | 64d3b76b | Christos KK Loverdos | else {
|
288 | b12da07a | Christos KK Loverdos | privatePermPanel.setVisible(userCheckedIt); |
289 | 64d3b76b | Christos KK Loverdos | } |
290 | 64d3b76b | Christos KK Loverdos | } |
291 | 64d3b76b | Christos KK Loverdos | }); |
292 | 64d3b76b | Christos KK Loverdos | |
293 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.add(privateCheckBox); |
294 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.add(privateCheckTitle); |
295 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.add(privateCheckInfo); |
296 | 64d3b76b | Christos KK Loverdos | |
297 | 64d3b76b | Christos KK Loverdos | // Permission list
|
298 | 64d3b76b | Christos KK Loverdos | permList = new PermissionsList(app, privateSharingImages, file.getPermissions(), file.getOwnerID(), false, new Command() { |
299 | 64d3b76b | Christos KK Loverdos | @Override
|
300 | 64d3b76b | Christos KK Loverdos | public void execute() { |
301 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPrivateSharing(); |
302 | 64d3b76b | Christos KK Loverdos | } |
303 | 64d3b76b | Christos KK Loverdos | }); |
304 | 64d3b76b | Christos KK Loverdos | |
305 | 64d3b76b | Christos KK Loverdos | // Permission Add buttons
|
306 | 64d3b76b | Christos KK Loverdos | Button addUser = new Button("Add User", new ClickHandler() { |
307 | 64d3b76b | Christos KK Loverdos | @Override
|
308 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
309 | 64d3b76b | Christos KK Loverdos | PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, true); |
310 | 64d3b76b | Christos KK Loverdos | dlg.center(); |
311 | 64d3b76b | Christos KK Loverdos | permList.updatePermissionTable(); |
312 | 64d3b76b | Christos KK Loverdos | } |
313 | 64d3b76b | Christos KK Loverdos | }); |
314 | 64d3b76b | Christos KK Loverdos | addUser.addStyleName("button");
|
315 | 64d3b76b | Christos KK Loverdos | permButtons.add(addUser); |
316 | 64d3b76b | Christos KK Loverdos | |
317 | da9e51db | Christos KK Loverdos | final boolean haveGroups = app.getAccount().getGroups().size() > 0; |
318 | 49a8183f | Christos KK Loverdos | |
319 | 49a8183f | Christos KK Loverdos | if(haveGroups) {
|
320 | 49a8183f | Christos KK Loverdos | Button addGroup = new Button("Add Group", new ClickHandler() { |
321 | 49a8183f | Christos KK Loverdos | @Override
|
322 | 49a8183f | Christos KK Loverdos | public void onClick(ClickEvent event) { |
323 | 49a8183f | Christos KK Loverdos | PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, false); |
324 | 49a8183f | Christos KK Loverdos | dlg.center(); |
325 | 49a8183f | Christos KK Loverdos | permList.updatePermissionTable(); |
326 | 49a8183f | Christos KK Loverdos | } |
327 | 49a8183f | Christos KK Loverdos | }); |
328 | 49a8183f | Christos KK Loverdos | addGroup.addStyleName("button");
|
329 | 49a8183f | Christos KK Loverdos | |
330 | 49a8183f | Christos KK Loverdos | permButtons.add(addGroup); |
331 | 49a8183f | Christos KK Loverdos | permButtons.setCellHorizontalAlignment(addGroup, HasHorizontalAlignment.ALIGN_CENTER); |
332 | da9e51db | Christos KK Loverdos | } |
333 | 64d3b76b | Christos KK Loverdos | |
334 | 49a8183f | Christos KK Loverdos | final Button addEverybody = new Button("Add everybody", new ClickHandler() { |
335 | 34cd9aff | Christos KK Loverdos | @Override
|
336 | 34cd9aff | Christos KK Loverdos | public void onClick(ClickEvent event) { |
337 | 34cd9aff | Christos KK Loverdos | Pithos.LOG("Adding to Everybody");
|
338 | 34cd9aff | Christos KK Loverdos | Pithos.LOG("");
|
339 | 34cd9aff | Christos KK Loverdos | permList.addPermission("*", true, false); |
340 | 34cd9aff | Christos KK Loverdos | permList.updatePermissionTable(); |
341 | 34cd9aff | Christos KK Loverdos | } |
342 | 34cd9aff | Christos KK Loverdos | }); |
343 | 34cd9aff | Christos KK Loverdos | addEverybody.addStyleName("button");
|
344 | 34cd9aff | Christos KK Loverdos | permButtons.add(addEverybody); |
345 | 34cd9aff | Christos KK Loverdos | |
346 | 64d3b76b | Christos KK Loverdos | privatePermPanel.add(permList); |
347 | 64d3b76b | Christos KK Loverdos | privatePermPanel.add(permButtons); |
348 | 64d3b76b | Christos KK Loverdos | |
349 | 64d3b76b | Christos KK Loverdos | // Private Link
|
350 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setVisible(false);
|
351 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setWidth(Const.PERCENT_100); |
352 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); |
353 | b551f85b | Christos KK Loverdos | privatePathPanel.add(new Label(Const.TXT_PRIVATE_LINK)); |
354 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setSpacing(8);
|
355 | 64d3b76b | Christos KK Loverdos | privatePathPanel.addStyleName("pithos-TabPanelBottom");
|
356 | 64d3b76b | Christos KK Loverdos | |
357 | 64d3b76b | Christos KK Loverdos | privatePathText.setWidth(Const.PERCENT_100); |
358 | 64d3b76b | Christos KK Loverdos | privatePathText.addClickHandler(new ClickHandler() {
|
359 | 64d3b76b | Christos KK Loverdos | @Override
|
360 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
361 | 64d3b76b | Christos KK Loverdos | Pithos.enableIESelection(); |
362 | 64d3b76b | Christos KK Loverdos | ((TextBox) event.getSource()).selectAll(); |
363 | 64d3b76b | Christos KK Loverdos | Pithos.preventIESelection(); |
364 | 64d3b76b | Christos KK Loverdos | } |
365 | 64d3b76b | Christos KK Loverdos | }); |
366 | 64d3b76b | Christos KK Loverdos | privatePathText.setText(Window.Location.getHost() + file.getPublicUri());
|
367 | 64d3b76b | Christos KK Loverdos | privatePathText.setTitle("Use this link for sharing the file via e-mail, IM, etc. (crtl-C/cmd-C to copy to system clipboard)");
|
368 | 64d3b76b | Christos KK Loverdos | privatePathText.setWidth(Const.PERCENT_100); |
369 | 64d3b76b | Christos KK Loverdos | privatePathText.setReadOnly(true);
|
370 | 64d3b76b | Christos KK Loverdos | privatePathPanel.add(privatePathText); |
371 | 64d3b76b | Christos KK Loverdos | |
372 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(new Command() {
|
373 | 64d3b76b | Christos KK Loverdos | @Override
|
374 | 64d3b76b | Christos KK Loverdos | public void execute() { |
375 | 64d3b76b | Christos KK Loverdos | showLinkForPrivateSharing(); |
376 | 64d3b76b | Christos KK Loverdos | } |
377 | 64d3b76b | Christos KK Loverdos | }); |
378 | 64d3b76b | Christos KK Loverdos | |
379 | 64d3b76b | Christos KK Loverdos | privateSharingPanel.add(privateCheckPanel); |
380 | 64d3b76b | Christos KK Loverdos | privateSharingPanel.add(privatePermPanel); |
381 | 64d3b76b | Christos KK Loverdos | privateSharingPanel.add(privatePathPanel); |
382 | 64d3b76b | Christos KK Loverdos | } |
383 | 64d3b76b | Christos KK Loverdos | |
384 | 64d3b76b | Christos KK Loverdos | private Panel createMainPanel() { |
385 | 64d3b76b | Christos KK Loverdos | VerticalPanel panelAll = new VerticalPanel();
|
386 | 64d3b76b | Christos KK Loverdos | VerticalPanel panelPublic = new VerticalPanel();
|
387 | 64d3b76b | Christos KK Loverdos | VerticalPanel panelPrivate = new VerticalPanel();
|
388 | 64d3b76b | Christos KK Loverdos | |
389 | 64d3b76b | Christos KK Loverdos | populatePrivateSharingPanel(panelPrivate); |
390 | 64d3b76b | Christos KK Loverdos | populatePublicSharingPanel(panelPublic); |
391 | 64d3b76b | Christos KK Loverdos | |
392 | cfdb1476 | Christos KK Loverdos | panelAll.add(panelPrivate); |
393 | cfdb1476 | Christos KK Loverdos | panelAll.add(new InlineHTML("<hr/>")); |
394 | cfdb1476 | Christos KK Loverdos | panelAll.add(panelPublic); |
395 | 64d3b76b | Christos KK Loverdos | |
396 | 64d3b76b | Christos KK Loverdos | return panelAll;
|
397 | 64d3b76b | Christos KK Loverdos | } |
398 | 64d3b76b | Christos KK Loverdos | |
399 | 64d3b76b | Christos KK Loverdos | private boolean isFilePubliclyShared() { |
400 | 64d3b76b | Christos KK Loverdos | return file.isPublished();
|
401 | 64d3b76b | Christos KK Loverdos | } |
402 | 64d3b76b | Christos KK Loverdos | |
403 | 64d3b76b | Christos KK Loverdos | private boolean isFilePrivatelyShared() { |
404 | 64d3b76b | Christos KK Loverdos | return file.isShared();
|
405 | 64d3b76b | Christos KK Loverdos | } |
406 | 64d3b76b | Christos KK Loverdos | |
407 | 64d3b76b | Christos KK Loverdos | private void showLinkForPublicSharing() { |
408 | 64d3b76b | Christos KK Loverdos | if (isFilePubliclyShared()) {
|
409 | 64d3b76b | Christos KK Loverdos | UrlBuilder b = Window.Location.createUrlBuilder();
|
410 | 64d3b76b | Christos KK Loverdos | b.setPath(file.getPublicUri()); |
411 | 64d3b76b | Christos KK Loverdos | publicPathText.setText(b.buildString()); |
412 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setVisible(true);
|
413 | 64d3b76b | Christos KK Loverdos | } |
414 | 64d3b76b | Christos KK Loverdos | else {
|
415 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setVisible(false);
|
416 | 64d3b76b | Christos KK Loverdos | } |
417 | 64d3b76b | Christos KK Loverdos | } |
418 | 64d3b76b | Christos KK Loverdos | |
419 | 64d3b76b | Christos KK Loverdos | private void showLinkForPrivateSharing() { |
420 | 64d3b76b | Christos KK Loverdos | if (isFilePrivatelyShared()) {
|
421 | 64d3b76b | Christos KK Loverdos | UrlBuilder b = Window.Location.createUrlBuilder();
|
422 | 28e270f9 | Christos KK Loverdos | b.setPath(Pithos.getStorageAPIURL() + file.getOwnerID() + file.getUri()); |
423 | 64d3b76b | Christos KK Loverdos | String href = Window.Location.getHref(); |
424 | 64d3b76b | Christos KK Loverdos | boolean hasParameters = href.contains(Const.QUESTION_MARK);
|
425 | 64d3b76b | Christos KK Loverdos | privatePathText.setText(href + (hasParameters ? Const.AMPERSAND : Const.QUESTION_MARK) + Const.GOTO_EQ + b.buildString()); |
426 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setVisible(true);
|
427 | 64d3b76b | Christos KK Loverdos | } |
428 | 64d3b76b | Christos KK Loverdos | else {
|
429 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setVisible(false);
|
430 | 64d3b76b | Christos KK Loverdos | } |
431 | 64d3b76b | Christos KK Loverdos | } |
432 | 64d3b76b | Christos KK Loverdos | |
433 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPublicSharing(String api, String owner, final String path, final Boolean published) { |
434 | 64d3b76b | Christos KK Loverdos | if (published != null) { |
435 | 64d3b76b | Christos KK Loverdos | PostRequest updateFile = new PostRequest(api, owner, path) {
|
436 | 64d3b76b | Christos KK Loverdos | @Override
|
437 | 64d3b76b | Christos KK Loverdos | public void onSuccess(Resource result) { |
438 | 28e270f9 | Christos KK Loverdos | HeadRequest<File> headFile = new HeadRequest<File>(File.class, Pithos.getStorageAPIURL(), file.getOwnerID(), path, file) { |
439 | 64d3b76b | Christos KK Loverdos | |
440 | 64d3b76b | Christos KK Loverdos | @Override
|
441 | 64d3b76b | Christos KK Loverdos | public void onSuccess(File _result) { |
442 | 64d3b76b | Christos KK Loverdos | showLinkForPublicSharing(); |
443 | 64d3b76b | Christos KK Loverdos | if (!app.isMySharedSelected()) {
|
444 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
445 | 64d3b76b | Christos KK Loverdos | |
446 | 64d3b76b | Christos KK Loverdos | @Override
|
447 | 64d3b76b | Christos KK Loverdos | public void execute() { |
448 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
449 | 64d3b76b | Christos KK Loverdos | } |
450 | 64d3b76b | Christos KK Loverdos | }, true);
|
451 | 64d3b76b | Christos KK Loverdos | } |
452 | 64d3b76b | Christos KK Loverdos | else {
|
453 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
454 | 64d3b76b | Christos KK Loverdos | } |
455 | 64d3b76b | Christos KK Loverdos | } |
456 | 64d3b76b | Christos KK Loverdos | |
457 | 64d3b76b | Christos KK Loverdos | @Override
|
458 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
459 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
460 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
461 | 64d3b76b | Christos KK Loverdos | } |
462 | 64d3b76b | Christos KK Loverdos | |
463 | 64d3b76b | Christos KK Loverdos | @Override
|
464 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
465 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
466 | 64d3b76b | Christos KK Loverdos | } |
467 | 64d3b76b | Christos KK Loverdos | }; |
468 | 64d3b76b | Christos KK Loverdos | headFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
469 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headFile); |
470 | 64d3b76b | Christos KK Loverdos | } |
471 | 64d3b76b | Christos KK Loverdos | |
472 | 64d3b76b | Christos KK Loverdos | @Override
|
473 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
474 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
475 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
476 | 64d3b76b | Christos KK Loverdos | } |
477 | 64d3b76b | Christos KK Loverdos | |
478 | 64d3b76b | Christos KK Loverdos | @Override
|
479 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
480 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
481 | 64d3b76b | Christos KK Loverdos | } |
482 | 64d3b76b | Christos KK Loverdos | }; |
483 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
484 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_OBJECT_PUBLIC, published.toString()); |
485 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(updateFile); |
486 | 64d3b76b | Christos KK Loverdos | } |
487 | 64d3b76b | Christos KK Loverdos | else if (!app.isMySharedSelected()) |
488 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
489 | 64d3b76b | Christos KK Loverdos | @Override
|
490 | 64d3b76b | Christos KK Loverdos | public void execute() { |
491 | 64d3b76b | Christos KK Loverdos | if (file.isSharedOrPublished()) {
|
492 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
493 | 64d3b76b | Christos KK Loverdos | } |
494 | 64d3b76b | Christos KK Loverdos | } |
495 | 64d3b76b | Christos KK Loverdos | }, true);
|
496 | 64d3b76b | Christos KK Loverdos | else
|
497 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
498 | 64d3b76b | Christos KK Loverdos | } |
499 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPublicSharing(Boolean published) { |
500 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPublicSharing( |
501 | 28e270f9 | Christos KK Loverdos | Pithos.getStorageAPIURL(), |
502 | 64d3b76b | Christos KK Loverdos | app.getUserID(), |
503 | 64d3b76b | Christos KK Loverdos | file.getUri() + Const.QUESTION_MARK_UPDATE_EQ, |
504 | 64d3b76b | Christos KK Loverdos | published |
505 | 64d3b76b | Christos KK Loverdos | ); |
506 | 64d3b76b | Christos KK Loverdos | } |
507 | 64d3b76b | Christos KK Loverdos | |
508 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPrivateSharing(String api, String owner, final String path, final Map<String, Boolean[]> newPermissions) { |
509 | 64d3b76b | Christos KK Loverdos | if (newPermissions != null) { |
510 | 64d3b76b | Christos KK Loverdos | PostRequest updateFile = new PostRequest(api, owner, path) {
|
511 | 64d3b76b | Christos KK Loverdos | @Override
|
512 | 64d3b76b | Christos KK Loverdos | public void onSuccess(Resource result) { |
513 | 28e270f9 | Christos KK Loverdos | HeadRequest<File> headFile = new HeadRequest<File>(File.class, Pithos.getStorageAPIURL(), file.getOwnerID(), path, file) { |
514 | 64d3b76b | Christos KK Loverdos | |
515 | 64d3b76b | Christos KK Loverdos | @Override
|
516 | 64d3b76b | Christos KK Loverdos | public void onSuccess(File _result) { |
517 | 64d3b76b | Christos KK Loverdos | showLinkForPrivateSharing(); |
518 | 64d3b76b | Christos KK Loverdos | if (!app.isMySharedSelected())
|
519 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
520 | 64d3b76b | Christos KK Loverdos | |
521 | 64d3b76b | Christos KK Loverdos | @Override
|
522 | 64d3b76b | Christos KK Loverdos | public void execute() { |
523 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
524 | 64d3b76b | Christos KK Loverdos | } |
525 | 64d3b76b | Christos KK Loverdos | }, true);
|
526 | 64d3b76b | Christos KK Loverdos | else
|
527 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
528 | 64d3b76b | Christos KK Loverdos | } |
529 | 64d3b76b | Christos KK Loverdos | |
530 | 64d3b76b | Christos KK Loverdos | @Override
|
531 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
532 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
533 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
534 | 64d3b76b | Christos KK Loverdos | } |
535 | 64d3b76b | Christos KK Loverdos | |
536 | 64d3b76b | Christos KK Loverdos | @Override
|
537 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
538 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
539 | 64d3b76b | Christos KK Loverdos | } |
540 | 64d3b76b | Christos KK Loverdos | }; |
541 | 64d3b76b | Christos KK Loverdos | headFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
542 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headFile); |
543 | 64d3b76b | Christos KK Loverdos | } |
544 | 64d3b76b | Christos KK Loverdos | |
545 | 64d3b76b | Christos KK Loverdos | @Override
|
546 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
547 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
548 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
549 | 64d3b76b | Christos KK Loverdos | } |
550 | 64d3b76b | Christos KK Loverdos | |
551 | 64d3b76b | Christos KK Loverdos | @Override
|
552 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
553 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
554 | 64d3b76b | Christos KK Loverdos | } |
555 | 64d3b76b | Christos KK Loverdos | }; |
556 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
557 | 64d3b76b | Christos KK Loverdos | |
558 | 64d3b76b | Christos KK Loverdos | String readPermHeader = Const.READ_EQ;
|
559 | 64d3b76b | Christos KK Loverdos | String writePermHeader = Const.WRITE_EQ;
|
560 | 64d3b76b | Christos KK Loverdos | for (String u : newPermissions.keySet()) { |
561 | 64d3b76b | Christos KK Loverdos | Boolean[] p = newPermissions.get(u); |
562 | 64d3b76b | Christos KK Loverdos | if (p[0] != null && p[0]) { |
563 | 64d3b76b | Christos KK Loverdos | readPermHeader += u + Const.COMMA; |
564 | 64d3b76b | Christos KK Loverdos | } |
565 | 64d3b76b | Christos KK Loverdos | if (p[1] != null && p[1]) { |
566 | 64d3b76b | Christos KK Loverdos | writePermHeader += u + Const.COMMA; |
567 | 64d3b76b | Christos KK Loverdos | } |
568 | 64d3b76b | Christos KK Loverdos | } |
569 | 64d3b76b | Christos KK Loverdos | if (readPermHeader.endsWith(Const.EQ)) {
|
570 | 64d3b76b | Christos KK Loverdos | readPermHeader = "";
|
571 | 64d3b76b | Christos KK Loverdos | } |
572 | 64d3b76b | Christos KK Loverdos | else if (readPermHeader.endsWith(Const.COMMA)) { |
573 | 64d3b76b | Christos KK Loverdos | readPermHeader = readPermHeader.substring(0, readPermHeader.length() - 1); |
574 | 64d3b76b | Christos KK Loverdos | } |
575 | 64d3b76b | Christos KK Loverdos | if (writePermHeader.endsWith(Const.EQ)) {
|
576 | 64d3b76b | Christos KK Loverdos | writePermHeader = "";
|
577 | 64d3b76b | Christos KK Loverdos | } |
578 | 64d3b76b | Christos KK Loverdos | else if (writePermHeader.endsWith(Const.COMMA)) { |
579 | 64d3b76b | Christos KK Loverdos | writePermHeader = writePermHeader.substring(0, writePermHeader.length() - 1); |
580 | 64d3b76b | Christos KK Loverdos | } |
581 | 64d3b76b | Christos KK Loverdos | String permHeader = readPermHeader +
|
582 | 64d3b76b | Christos KK Loverdos | ((readPermHeader.length() > 0 && writePermHeader.length() > 0) ? Const.SEMI : "") + writePermHeader; |
583 | 64d3b76b | Christos KK Loverdos | if (permHeader.length() == 0) { |
584 | 64d3b76b | Christos KK Loverdos | permHeader=Const.TILDE; |
585 | 64d3b76b | Christos KK Loverdos | } |
586 | 64d3b76b | Christos KK Loverdos | else {
|
587 | 64d3b76b | Christos KK Loverdos | permHeader = URL.encodePathSegment(permHeader);
|
588 | 64d3b76b | Christos KK Loverdos | } |
589 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_OBJECT_SHARING, permHeader); |
590 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(updateFile); |
591 | 64d3b76b | Christos KK Loverdos | } |
592 | 64d3b76b | Christos KK Loverdos | else if (!app.isMySharedSelected()) { |
593 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
594 | 64d3b76b | Christos KK Loverdos | @Override
|
595 | 64d3b76b | Christos KK Loverdos | public void execute() { |
596 | 64d3b76b | Christos KK Loverdos | if (file.isSharedOrPublished())
|
597 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
598 | 64d3b76b | Christos KK Loverdos | } |
599 | 64d3b76b | Christos KK Loverdos | }, true);
|
600 | 64d3b76b | Christos KK Loverdos | } |
601 | 64d3b76b | Christos KK Loverdos | else {
|
602 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
603 | 64d3b76b | Christos KK Loverdos | } |
604 | 64d3b76b | Christos KK Loverdos | } |
605 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPrivateSharing() { |
606 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPrivateSharing( |
607 | 28e270f9 | Christos KK Loverdos | Pithos.getStorageAPIURL(), |
608 | 64d3b76b | Christos KK Loverdos | app.getUserID(), |
609 | 64d3b76b | Christos KK Loverdos | file.getUri() + Const.QUESTION_MARK_UPDATE_EQ, |
610 | 64d3b76b | Christos KK Loverdos | permList.getPermissions() |
611 | 64d3b76b | Christos KK Loverdos | ); |
612 | 64d3b76b | Christos KK Loverdos | } |
613 | b12da07a | Christos KK Loverdos | |
614 | 64d3b76b | Christos KK Loverdos | @Override
|
615 | 64d3b76b | Christos KK Loverdos | protected void onPreviewNativeEvent(NativePreviewEvent preview) { |
616 | 64d3b76b | Christos KK Loverdos | super.onPreviewNativeEvent(preview);
|
617 | 64d3b76b | Christos KK Loverdos | |
618 | 64d3b76b | Christos KK Loverdos | NativeEvent evt = preview.getNativeEvent(); |
619 | 64d3b76b | Christos KK Loverdos | if (evt.getType().equals(Const.EVENT_TYPE_KEYDOWN) &&
|
620 | 64d3b76b | Christos KK Loverdos | evt.getKeyCode() == KeyCodes.KEY_ENTER) { |
621 | 64d3b76b | Christos KK Loverdos | |
622 | 64d3b76b | Christos KK Loverdos | closeDialog(); |
623 | 64d3b76b | Christos KK Loverdos | } |
624 | 64d3b76b | Christos KK Loverdos | } |
625 | 64d3b76b | Christos KK Loverdos | |
626 | 64d3b76b | Christos KK Loverdos | @Override
|
627 | 64d3b76b | Christos KK Loverdos | protected boolean accept() { |
628 | 64d3b76b | Christos KK Loverdos | return true; |
629 | 64d3b76b | Christos KK Loverdos | } |
630 | 64d3b76b | Christos KK Loverdos | } |