root / src / gr / grnet / pithos / web / client / FileShareDialog.java @ d4ace10a
History | View | Annotate | Download (23.3 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 | b12da07a | Christos KK Loverdos | private static final class PremissionsUncheckWarning extends AbstractPropertiesDialog { |
63 | b12da07a | Christos KK Loverdos | private PremissionsUncheckWarning(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 | c963be61 | Christos KK Loverdos | private final VerticalPanel privatePermSuperPanel = new VerticalPanel(); |
121 | 64d3b76b | Christos KK Loverdos | private PermissionsList permList;
|
122 | 64d3b76b | Christos KK Loverdos | |
123 | 64d3b76b | Christos KK Loverdos | /**
|
124 | 64d3b76b | Christos KK Loverdos | * An image bundle for this widgets images.
|
125 | 64d3b76b | Christos KK Loverdos | */
|
126 | 64d3b76b | Christos KK Loverdos | public interface PublicSharingImages extends MessagePanel.Images { |
127 | 64d3b76b | Christos KK Loverdos | |
128 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/edit_user.png") |
129 | 64d3b76b | Christos KK Loverdos | ImageResource permUser(); |
130 | 64d3b76b | Christos KK Loverdos | |
131 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/groups22.png") |
132 | 64d3b76b | Christos KK Loverdos | ImageResource permGroup(); |
133 | 64d3b76b | Christos KK Loverdos | |
134 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/editdelete.png") |
135 | 64d3b76b | Christos KK Loverdos | ImageResource delete(); |
136 | 64d3b76b | Christos KK Loverdos | } |
137 | 64d3b76b | Christos KK Loverdos | |
138 | 64d3b76b | Christos KK Loverdos | public interface PrivateSharingImages extends MessagePanel.Images { |
139 | 64d3b76b | Christos KK Loverdos | |
140 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/edit_user.png") |
141 | 64d3b76b | Christos KK Loverdos | ImageResource permUser(); |
142 | 64d3b76b | Christos KK Loverdos | |
143 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/groups22.png") |
144 | 64d3b76b | Christos KK Loverdos | ImageResource permGroup(); |
145 | 64d3b76b | Christos KK Loverdos | |
146 | 64d3b76b | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/delete.gif") |
147 | 64d3b76b | Christos KK Loverdos | ImageResource delete(); |
148 | 64d3b76b | Christos KK Loverdos | } |
149 | 64d3b76b | Christos KK Loverdos | |
150 | 64d3b76b | Christos KK Loverdos | private final File file; |
151 | 64d3b76b | Christos KK Loverdos | |
152 | 64d3b76b | Christos KK Loverdos | private final PublicSharingImages publicSharingImages = GWT.create(PublicSharingImages.class); |
153 | 64d3b76b | Christos KK Loverdos | private final PrivateSharingImages privateSharingImages = GWT.create(PrivateSharingImages.class); |
154 | 64d3b76b | Christos KK Loverdos | |
155 | 64d3b76b | Christos KK Loverdos | /**
|
156 | 64d3b76b | Christos KK Loverdos | * The widget's constructor.
|
157 | 64d3b76b | Christos KK Loverdos | */
|
158 | ed2b76a4 | Christos KK Loverdos | public FileShareDialog(Pithos app, File file) { |
159 | ed2b76a4 | Christos KK Loverdos | super(app);
|
160 | ed2b76a4 | Christos KK Loverdos | this.file = file;
|
161 | 64d3b76b | Christos KK Loverdos | |
162 | 64d3b76b | Christos KK Loverdos | Anchor close = new Anchor("close"); |
163 | 64d3b76b | Christos KK Loverdos | close.addStyleName("close");
|
164 | 64d3b76b | Christos KK Loverdos | close.addClickHandler(new ClickHandler() {
|
165 | 64d3b76b | Christos KK Loverdos | |
166 | 64d3b76b | Christos KK Loverdos | @Override
|
167 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
168 | 64d3b76b | Christos KK Loverdos | hide(); |
169 | 64d3b76b | Christos KK Loverdos | } |
170 | 64d3b76b | Christos KK Loverdos | }); |
171 | 64d3b76b | Christos KK Loverdos | // Set the dialog's caption.
|
172 | d1609e26 | Christos KK Loverdos | setText(Const.TXT_SHARE_FILE); |
173 | 64d3b76b | Christos KK Loverdos | setGlassEnabled(true);
|
174 | 64d3b76b | Christos KK Loverdos | setStyleName("pithos-DialogBox");
|
175 | 64d3b76b | Christos KK Loverdos | |
176 | 64d3b76b | Christos KK Loverdos | // Outer contains inner and buttons.
|
177 | 64d3b76b | Christos KK Loverdos | final VerticalPanel outer = new VerticalPanel(); |
178 | 64d3b76b | Christos KK Loverdos | outer.add(close); |
179 | 64d3b76b | Christos KK Loverdos | final FocusPanel focusPanel = new FocusPanel(outer); |
180 | 64d3b76b | Christos KK Loverdos | // Inner contains generalPanel and permPanel.
|
181 | 64d3b76b | Christos KK Loverdos | inner = new VerticalPanel();
|
182 | 64d3b76b | Christos KK Loverdos | inner.addStyleName("inner");
|
183 | 64d3b76b | Christos KK Loverdos | |
184 | 64d3b76b | Christos KK Loverdos | inner.add(createMainPanel()); |
185 | 64d3b76b | Christos KK Loverdos | |
186 | 64d3b76b | Christos KK Loverdos | outer.add(inner); |
187 | 64d3b76b | Christos KK Loverdos | |
188 | 64d3b76b | Christos KK Loverdos | final Button ok = new Button("OK", new ClickHandler() { |
189 | 64d3b76b | Christos KK Loverdos | @Override
|
190 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
191 | 64d3b76b | Christos KK Loverdos | closeDialog(); |
192 | 64d3b76b | Christos KK Loverdos | } |
193 | 64d3b76b | Christos KK Loverdos | }); |
194 | 64d3b76b | Christos KK Loverdos | ok.addStyleName("button");
|
195 | 64d3b76b | Christos KK Loverdos | |
196 | 64d3b76b | Christos KK Loverdos | outer.add(ok); |
197 | 64d3b76b | Christos KK Loverdos | outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER); |
198 | 64d3b76b | Christos KK Loverdos | |
199 | 64d3b76b | Christos KK Loverdos | focusPanel.setFocus(true);
|
200 | 64d3b76b | Christos KK Loverdos | setWidget(outer); |
201 | 64d3b76b | Christos KK Loverdos | } |
202 | 64d3b76b | Christos KK Loverdos | |
203 | 64d3b76b | Christos KK Loverdos | private boolean IamOwner() { |
204 | 64d3b76b | Christos KK Loverdos | return file.getOwnerID().equals(app.getUserID());
|
205 | 64d3b76b | Christos KK Loverdos | } |
206 | 64d3b76b | Christos KK Loverdos | |
207 | 64d3b76b | Christos KK Loverdos | private void populatePublicSharingPanel(VerticalPanel publicSharingPanel) { |
208 | 64d3b76b | Christos KK Loverdos | if(IamOwner()) {
|
209 | 64d3b76b | Christos KK Loverdos | final HorizontalPanel publicCheckPanel = new HorizontalPanel(); |
210 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.setSpacing(8);
|
211 | 64d3b76b | Christos KK Loverdos | |
212 | 64d3b76b | Christos KK Loverdos | // Check box header
|
213 | 64d3b76b | Christos KK Loverdos | final CheckBox publicCheckBox = new CheckBox(); |
214 | 64d3b76b | Christos KK Loverdos | Label publicCheckTitle = new InlineHTML("<b>Public on the Internet</b>"); |
215 | 64d3b76b | Christos KK Loverdos | Label publicCheckInfo = new Label("Anyone who has the public link can access. No sign-in required.", true); |
216 | 64d3b76b | Christos KK Loverdos | |
217 | 64d3b76b | Christos KK Loverdos | publicCheckBox.setValue(isFilePubliclyShared()); |
218 | 64d3b76b | Christos KK Loverdos | publicCheckBox.addClickHandler(new ClickHandler() {
|
219 | 64d3b76b | Christos KK Loverdos | @Override
|
220 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
221 | 64d3b76b | Christos KK Loverdos | final Boolean published; |
222 | 64d3b76b | Christos KK Loverdos | if(publicCheckBox.getValue() != file.isPublished() && IamOwner()) {
|
223 | 64d3b76b | Christos KK Loverdos | published = publicCheckBox.getValue(); |
224 | 64d3b76b | Christos KK Loverdos | } |
225 | 64d3b76b | Christos KK Loverdos | else {
|
226 | 64d3b76b | Christos KK Loverdos | published = Boolean.FALSE;
|
227 | 64d3b76b | Christos KK Loverdos | } |
228 | 64d3b76b | Christos KK Loverdos | |
229 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPublicSharing(published); |
230 | 64d3b76b | Christos KK Loverdos | } |
231 | 64d3b76b | Christos KK Loverdos | }); |
232 | 64d3b76b | Christos KK Loverdos | |
233 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.add(publicCheckBox); |
234 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.add(publicCheckTitle); |
235 | 64d3b76b | Christos KK Loverdos | publicCheckPanel.add(publicCheckInfo); |
236 | 64d3b76b | Christos KK Loverdos | |
237 | 64d3b76b | Christos KK Loverdos | // Public Link
|
238 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setVisible(false);
|
239 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setWidth(Const.PERCENT_100); |
240 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); |
241 | b551f85b | Christos KK Loverdos | publicPathPanel.add(new Label(Const.TXT_PUBLIC_LINK)); |
242 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setSpacing(8);
|
243 | 64d3b76b | Christos KK Loverdos | publicPathPanel.addStyleName("pithos-TabPanelBottom");
|
244 | 64d3b76b | Christos KK Loverdos | |
245 | 64d3b76b | Christos KK Loverdos | publicPathText.setWidth(Const.PERCENT_100); |
246 | 64d3b76b | Christos KK Loverdos | publicPathText.addClickHandler(new ClickHandler() {
|
247 | 64d3b76b | Christos KK Loverdos | @Override
|
248 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
249 | 64d3b76b | Christos KK Loverdos | Pithos.enableIESelection(); |
250 | 64d3b76b | Christos KK Loverdos | ((TextBox) event.getSource()).selectAll(); |
251 | 64d3b76b | Christos KK Loverdos | Pithos.preventIESelection(); |
252 | 64d3b76b | Christos KK Loverdos | } |
253 | 64d3b76b | Christos KK Loverdos | }); |
254 | 64d3b76b | Christos KK Loverdos | publicPathText.setText(Window.Location.getHost() + file.getPublicUri());
|
255 | 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)");
|
256 | 64d3b76b | Christos KK Loverdos | publicPathText.setReadOnly(true);
|
257 | 64d3b76b | Christos KK Loverdos | publicPathPanel.add(publicPathText); |
258 | 64d3b76b | Christos KK Loverdos | |
259 | 64d3b76b | Christos KK Loverdos | publicSharingPanel.add(publicCheckPanel); |
260 | 64d3b76b | Christos KK Loverdos | publicSharingPanel.add(publicPathPanel); |
261 | 64d3b76b | Christos KK Loverdos | |
262 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(new Command() {
|
263 | 64d3b76b | Christos KK Loverdos | @Override
|
264 | 64d3b76b | Christos KK Loverdos | public void execute() { |
265 | 64d3b76b | Christos KK Loverdos | showLinkForPublicSharing(); |
266 | 64d3b76b | Christos KK Loverdos | } |
267 | 64d3b76b | Christos KK Loverdos | }); |
268 | 64d3b76b | Christos KK Loverdos | } |
269 | 64d3b76b | Christos KK Loverdos | } |
270 | 64d3b76b | Christos KK Loverdos | |
271 | 64d3b76b | Christos KK Loverdos | private void populatePrivateSharingPanel(VerticalPanel privateSharingPanel) { |
272 | 64d3b76b | Christos KK Loverdos | final HorizontalPanel privateCheckPanel = new HorizontalPanel(); |
273 | 64d3b76b | Christos KK Loverdos | final VerticalPanel privatePermPanel = new VerticalPanel(); |
274 | 64d3b76b | Christos KK Loverdos | final HorizontalPanel permButtons = new HorizontalPanel(); |
275 | 64d3b76b | Christos KK Loverdos | |
276 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.setSpacing(8);
|
277 | 64d3b76b | Christos KK Loverdos | privatePermPanel.setVisible(isFilePrivatelyShared()); |
278 | 64d3b76b | Christos KK Loverdos | permButtons.setSpacing(8);
|
279 | 64d3b76b | Christos KK Loverdos | |
280 | 64d3b76b | Christos KK Loverdos | // Check box header
|
281 | 64d3b76b | Christos KK Loverdos | final CheckBox privateCheckBox = new CheckBox(); |
282 | 64d3b76b | Christos KK Loverdos | final Label privateCheckTitle = new InlineHTML("<b>Private sharing</b>"); |
283 | 64d3b76b | Christos KK Loverdos | final Label privateCheckInfo = new Label("Only people explicitly granted permission can access. Sign-in required.", true); |
284 | 64d3b76b | Christos KK Loverdos | |
285 | 64d3b76b | Christos KK Loverdos | privateCheckBox.setValue(isFilePrivatelyShared()); |
286 | 64d3b76b | Christos KK Loverdos | privateCheckBox.addClickHandler(new ClickHandler() {
|
287 | 64d3b76b | Christos KK Loverdos | @Override
|
288 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
289 | b12da07a | Christos KK Loverdos | // This is the value *after* the click is applied :)
|
290 | b12da07a | Christos KK Loverdos | boolean userCheckedIt = privateCheckBox.getValue();
|
291 | b12da07a | Christos KK Loverdos | boolean userUncheckedIt = !userCheckedIt;
|
292 | b12da07a | Christos KK Loverdos | |
293 | 64d3b76b | Christos KK Loverdos | if(isFilePrivatelyShared()) {
|
294 | 64d3b76b | Christos KK Loverdos | // ignore the click, set it always to "checked"
|
295 | 64d3b76b | Christos KK Loverdos | privateCheckBox.setValue(true);
|
296 | 64d3b76b | Christos KK Loverdos | // show permissions
|
297 | 64d3b76b | Christos KK Loverdos | privatePermPanel.setVisible(true);
|
298 | b12da07a | Christos KK Loverdos | |
299 | b12da07a | Christos KK Loverdos | // Refs #3593
|
300 | b12da07a | Christos KK Loverdos | if(userUncheckedIt) {
|
301 | b12da07a | Christos KK Loverdos | new PremissionsUncheckWarning(app).center();
|
302 | b12da07a | Christos KK Loverdos | } |
303 | 64d3b76b | Christos KK Loverdos | } |
304 | 64d3b76b | Christos KK Loverdos | else {
|
305 | b12da07a | Christos KK Loverdos | privatePermPanel.setVisible(userCheckedIt); |
306 | 64d3b76b | Christos KK Loverdos | } |
307 | 64d3b76b | Christos KK Loverdos | } |
308 | 64d3b76b | Christos KK Loverdos | }); |
309 | 64d3b76b | Christos KK Loverdos | |
310 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.add(privateCheckBox); |
311 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.add(privateCheckTitle); |
312 | 64d3b76b | Christos KK Loverdos | privateCheckPanel.add(privateCheckInfo); |
313 | 64d3b76b | Christos KK Loverdos | |
314 | 64d3b76b | Christos KK Loverdos | // Permission list
|
315 | 64d3b76b | Christos KK Loverdos | permList = new PermissionsList(app, privateSharingImages, file.getPermissions(), file.getOwnerID(), false, new Command() { |
316 | 64d3b76b | Christos KK Loverdos | @Override
|
317 | 64d3b76b | Christos KK Loverdos | public void execute() { |
318 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPrivateSharing(); |
319 | 64d3b76b | Christos KK Loverdos | } |
320 | 64d3b76b | Christos KK Loverdos | }); |
321 | 64d3b76b | Christos KK Loverdos | |
322 | 64d3b76b | Christos KK Loverdos | // Permission Add buttons
|
323 | 64d3b76b | Christos KK Loverdos | Button addUser = new Button("Add User", new ClickHandler() { |
324 | 64d3b76b | Christos KK Loverdos | @Override
|
325 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
326 | 64d3b76b | Christos KK Loverdos | PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, true); |
327 | 64d3b76b | Christos KK Loverdos | dlg.center(); |
328 | 64d3b76b | Christos KK Loverdos | permList.updatePermissionTable(); |
329 | 64d3b76b | Christos KK Loverdos | } |
330 | 64d3b76b | Christos KK Loverdos | }); |
331 | 64d3b76b | Christos KK Loverdos | addUser.addStyleName("button");
|
332 | 64d3b76b | Christos KK Loverdos | permButtons.add(addUser); |
333 | 64d3b76b | Christos KK Loverdos | |
334 | da9e51db | Christos KK Loverdos | final boolean haveGroups = app.getAccount().getGroups().size() > 0; |
335 | 49a8183f | Christos KK Loverdos | |
336 | 49a8183f | Christos KK Loverdos | if(haveGroups) {
|
337 | 49a8183f | Christos KK Loverdos | Button addGroup = new Button("Add Group", new ClickHandler() { |
338 | 49a8183f | Christos KK Loverdos | @Override
|
339 | 49a8183f | Christos KK Loverdos | public void onClick(ClickEvent event) { |
340 | 49a8183f | Christos KK Loverdos | PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, false); |
341 | 49a8183f | Christos KK Loverdos | dlg.center(); |
342 | 49a8183f | Christos KK Loverdos | permList.updatePermissionTable(); |
343 | 49a8183f | Christos KK Loverdos | } |
344 | 49a8183f | Christos KK Loverdos | }); |
345 | 49a8183f | Christos KK Loverdos | addGroup.addStyleName("button");
|
346 | 49a8183f | Christos KK Loverdos | |
347 | 49a8183f | Christos KK Loverdos | permButtons.add(addGroup); |
348 | 49a8183f | Christos KK Loverdos | permButtons.setCellHorizontalAlignment(addGroup, HasHorizontalAlignment.ALIGN_CENTER); |
349 | da9e51db | Christos KK Loverdos | } |
350 | 64d3b76b | Christos KK Loverdos | |
351 | 49a8183f | Christos KK Loverdos | final Button addEverybody = new Button("Add everybody", new ClickHandler() { |
352 | 34cd9aff | Christos KK Loverdos | @Override
|
353 | 34cd9aff | Christos KK Loverdos | public void onClick(ClickEvent event) { |
354 | 34cd9aff | Christos KK Loverdos | Pithos.LOG("Adding to Everybody");
|
355 | 34cd9aff | Christos KK Loverdos | Pithos.LOG("");
|
356 | 34cd9aff | Christos KK Loverdos | permList.addPermission("*", true, false); |
357 | 34cd9aff | Christos KK Loverdos | permList.updatePermissionTable(); |
358 | 34cd9aff | Christos KK Loverdos | } |
359 | 34cd9aff | Christos KK Loverdos | }); |
360 | 34cd9aff | Christos KK Loverdos | addEverybody.addStyleName("button");
|
361 | 34cd9aff | Christos KK Loverdos | permButtons.add(addEverybody); |
362 | 34cd9aff | Christos KK Loverdos | |
363 | 64d3b76b | Christos KK Loverdos | privatePermPanel.add(permList); |
364 | 64d3b76b | Christos KK Loverdos | privatePermPanel.add(permButtons); |
365 | 64d3b76b | Christos KK Loverdos | |
366 | 64d3b76b | Christos KK Loverdos | // Private Link
|
367 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setVisible(false);
|
368 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setWidth(Const.PERCENT_100); |
369 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); |
370 | b551f85b | Christos KK Loverdos | privatePathPanel.add(new Label(Const.TXT_PRIVATE_LINK)); |
371 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setSpacing(8);
|
372 | 64d3b76b | Christos KK Loverdos | privatePathPanel.addStyleName("pithos-TabPanelBottom");
|
373 | 64d3b76b | Christos KK Loverdos | |
374 | 64d3b76b | Christos KK Loverdos | privatePathText.setWidth(Const.PERCENT_100); |
375 | 64d3b76b | Christos KK Loverdos | privatePathText.addClickHandler(new ClickHandler() {
|
376 | 64d3b76b | Christos KK Loverdos | @Override
|
377 | 64d3b76b | Christos KK Loverdos | public void onClick(ClickEvent event) { |
378 | 64d3b76b | Christos KK Loverdos | Pithos.enableIESelection(); |
379 | 64d3b76b | Christos KK Loverdos | ((TextBox) event.getSource()).selectAll(); |
380 | 64d3b76b | Christos KK Loverdos | Pithos.preventIESelection(); |
381 | 64d3b76b | Christos KK Loverdos | } |
382 | 64d3b76b | Christos KK Loverdos | }); |
383 | 64d3b76b | Christos KK Loverdos | privatePathText.setText(Window.Location.getHost() + file.getPublicUri());
|
384 | 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)");
|
385 | 64d3b76b | Christos KK Loverdos | privatePathText.setWidth(Const.PERCENT_100); |
386 | 64d3b76b | Christos KK Loverdos | privatePathText.setReadOnly(true);
|
387 | 64d3b76b | Christos KK Loverdos | privatePathPanel.add(privatePathText); |
388 | 64d3b76b | Christos KK Loverdos | |
389 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(new Command() {
|
390 | 64d3b76b | Christos KK Loverdos | @Override
|
391 | 64d3b76b | Christos KK Loverdos | public void execute() { |
392 | 64d3b76b | Christos KK Loverdos | showLinkForPrivateSharing(); |
393 | 64d3b76b | Christos KK Loverdos | } |
394 | 64d3b76b | Christos KK Loverdos | }); |
395 | 64d3b76b | Christos KK Loverdos | |
396 | 64d3b76b | Christos KK Loverdos | privateSharingPanel.add(privateCheckPanel); |
397 | 64d3b76b | Christos KK Loverdos | privateSharingPanel.add(privatePermPanel); |
398 | 64d3b76b | Christos KK Loverdos | privateSharingPanel.add(privatePathPanel); |
399 | 64d3b76b | Christos KK Loverdos | } |
400 | 64d3b76b | Christos KK Loverdos | |
401 | 64d3b76b | Christos KK Loverdos | private Panel createMainPanel() { |
402 | 64d3b76b | Christos KK Loverdos | VerticalPanel panelAll = new VerticalPanel();
|
403 | 64d3b76b | Christos KK Loverdos | VerticalPanel panelPublic = new VerticalPanel();
|
404 | 64d3b76b | Christos KK Loverdos | VerticalPanel panelPrivate = new VerticalPanel();
|
405 | 64d3b76b | Christos KK Loverdos | |
406 | 64d3b76b | Christos KK Loverdos | populatePrivateSharingPanel(panelPrivate); |
407 | 64d3b76b | Christos KK Loverdos | populatePublicSharingPanel(panelPublic); |
408 | 64d3b76b | Christos KK Loverdos | |
409 | cfdb1476 | Christos KK Loverdos | panelAll.add(panelPrivate); |
410 | cfdb1476 | Christos KK Loverdos | panelAll.add(new InlineHTML("<hr/>")); |
411 | cfdb1476 | Christos KK Loverdos | panelAll.add(panelPublic); |
412 | 64d3b76b | Christos KK Loverdos | |
413 | 64d3b76b | Christos KK Loverdos | return panelAll;
|
414 | 64d3b76b | Christos KK Loverdos | } |
415 | 64d3b76b | Christos KK Loverdos | |
416 | 64d3b76b | Christos KK Loverdos | private boolean isFilePubliclyShared() { |
417 | 64d3b76b | Christos KK Loverdos | return file.isPublished();
|
418 | 64d3b76b | Christos KK Loverdos | } |
419 | 64d3b76b | Christos KK Loverdos | |
420 | 64d3b76b | Christos KK Loverdos | private boolean isFilePrivatelyShared() { |
421 | 64d3b76b | Christos KK Loverdos | return file.isShared();
|
422 | 64d3b76b | Christos KK Loverdos | } |
423 | 64d3b76b | Christos KK Loverdos | |
424 | 64d3b76b | Christos KK Loverdos | private void showLinkForPublicSharing() { |
425 | 64d3b76b | Christos KK Loverdos | if (isFilePubliclyShared()) {
|
426 | 64d3b76b | Christos KK Loverdos | UrlBuilder b = Window.Location.createUrlBuilder();
|
427 | 64d3b76b | Christos KK Loverdos | b.setPath(file.getPublicUri()); |
428 | 64d3b76b | Christos KK Loverdos | publicPathText.setText(b.buildString()); |
429 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setVisible(true);
|
430 | 64d3b76b | Christos KK Loverdos | } |
431 | 64d3b76b | Christos KK Loverdos | else {
|
432 | 64d3b76b | Christos KK Loverdos | publicPathPanel.setVisible(false);
|
433 | 64d3b76b | Christos KK Loverdos | } |
434 | 64d3b76b | Christos KK Loverdos | } |
435 | 64d3b76b | Christos KK Loverdos | |
436 | 64d3b76b | Christos KK Loverdos | private void showLinkForPrivateSharing() { |
437 | 64d3b76b | Christos KK Loverdos | if (isFilePrivatelyShared()) {
|
438 | 64d3b76b | Christos KK Loverdos | UrlBuilder b = Window.Location.createUrlBuilder();
|
439 | 28e270f9 | Christos KK Loverdos | b.setPath(Pithos.getStorageAPIURL() + file.getOwnerID() + file.getUri()); |
440 | 64d3b76b | Christos KK Loverdos | String href = Window.Location.getHref(); |
441 | 64d3b76b | Christos KK Loverdos | boolean hasParameters = href.contains(Const.QUESTION_MARK);
|
442 | 64d3b76b | Christos KK Loverdos | privatePathText.setText(href + (hasParameters ? Const.AMPERSAND : Const.QUESTION_MARK) + Const.GOTO_EQ + b.buildString()); |
443 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setVisible(true);
|
444 | 64d3b76b | Christos KK Loverdos | } |
445 | 64d3b76b | Christos KK Loverdos | else {
|
446 | 64d3b76b | Christos KK Loverdos | privatePathPanel.setVisible(false);
|
447 | 64d3b76b | Christos KK Loverdos | } |
448 | 64d3b76b | Christos KK Loverdos | } |
449 | 64d3b76b | Christos KK Loverdos | |
450 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPublicSharing(String api, String owner, final String path, final Boolean published) { |
451 | 64d3b76b | Christos KK Loverdos | if (published != null) { |
452 | 64d3b76b | Christos KK Loverdos | PostRequest updateFile = new PostRequest(api, owner, path) {
|
453 | 64d3b76b | Christos KK Loverdos | @Override
|
454 | 64d3b76b | Christos KK Loverdos | public void onSuccess(Resource result) { |
455 | 28e270f9 | Christos KK Loverdos | HeadRequest<File> headFile = new HeadRequest<File>(File.class, Pithos.getStorageAPIURL(), file.getOwnerID(), path, file) { |
456 | 64d3b76b | Christos KK Loverdos | |
457 | 64d3b76b | Christos KK Loverdos | @Override
|
458 | 64d3b76b | Christos KK Loverdos | public void onSuccess(File _result) { |
459 | 64d3b76b | Christos KK Loverdos | showLinkForPublicSharing(); |
460 | 64d3b76b | Christos KK Loverdos | if (!app.isMySharedSelected()) {
|
461 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
462 | 64d3b76b | Christos KK Loverdos | |
463 | 64d3b76b | Christos KK Loverdos | @Override
|
464 | 64d3b76b | Christos KK Loverdos | public void execute() { |
465 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
466 | 64d3b76b | Christos KK Loverdos | } |
467 | 64d3b76b | Christos KK Loverdos | }, true);
|
468 | 64d3b76b | Christos KK Loverdos | } |
469 | 64d3b76b | Christos KK Loverdos | else {
|
470 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
471 | 64d3b76b | Christos KK Loverdos | } |
472 | 64d3b76b | Christos KK Loverdos | } |
473 | 64d3b76b | Christos KK Loverdos | |
474 | 64d3b76b | Christos KK Loverdos | @Override
|
475 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
476 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
477 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
478 | 64d3b76b | Christos KK Loverdos | } |
479 | 64d3b76b | Christos KK Loverdos | |
480 | 64d3b76b | Christos KK Loverdos | @Override
|
481 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
482 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
483 | 64d3b76b | Christos KK Loverdos | } |
484 | 64d3b76b | Christos KK Loverdos | }; |
485 | 64d3b76b | Christos KK Loverdos | headFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
486 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headFile); |
487 | 64d3b76b | Christos KK Loverdos | } |
488 | 64d3b76b | Christos KK Loverdos | |
489 | 64d3b76b | Christos KK Loverdos | @Override
|
490 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
491 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
492 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
493 | 64d3b76b | Christos KK Loverdos | } |
494 | 64d3b76b | Christos KK Loverdos | |
495 | 64d3b76b | Christos KK Loverdos | @Override
|
496 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
497 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
498 | 64d3b76b | Christos KK Loverdos | } |
499 | 64d3b76b | Christos KK Loverdos | }; |
500 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
501 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_OBJECT_PUBLIC, published.toString()); |
502 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(updateFile); |
503 | 64d3b76b | Christos KK Loverdos | } |
504 | 64d3b76b | Christos KK Loverdos | else if (!app.isMySharedSelected()) |
505 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
506 | 64d3b76b | Christos KK Loverdos | @Override
|
507 | 64d3b76b | Christos KK Loverdos | public void execute() { |
508 | 64d3b76b | Christos KK Loverdos | if (file.isSharedOrPublished()) {
|
509 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
510 | 64d3b76b | Christos KK Loverdos | } |
511 | 64d3b76b | Christos KK Loverdos | } |
512 | 64d3b76b | Christos KK Loverdos | }, true);
|
513 | 64d3b76b | Christos KK Loverdos | else
|
514 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
515 | 64d3b76b | Christos KK Loverdos | } |
516 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPublicSharing(Boolean published) { |
517 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPublicSharing( |
518 | 28e270f9 | Christos KK Loverdos | Pithos.getStorageAPIURL(), |
519 | 64d3b76b | Christos KK Loverdos | app.getUserID(), |
520 | 64d3b76b | Christos KK Loverdos | file.getUri() + Const.QUESTION_MARK_UPDATE_EQ, |
521 | 64d3b76b | Christos KK Loverdos | published |
522 | 64d3b76b | Christos KK Loverdos | ); |
523 | 64d3b76b | Christos KK Loverdos | } |
524 | 64d3b76b | Christos KK Loverdos | |
525 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPrivateSharing(String api, String owner, final String path, final Map<String, Boolean[]> newPermissions) { |
526 | 64d3b76b | Christos KK Loverdos | if (newPermissions != null) { |
527 | 64d3b76b | Christos KK Loverdos | PostRequest updateFile = new PostRequest(api, owner, path) {
|
528 | 64d3b76b | Christos KK Loverdos | @Override
|
529 | 64d3b76b | Christos KK Loverdos | public void onSuccess(Resource result) { |
530 | 28e270f9 | Christos KK Loverdos | HeadRequest<File> headFile = new HeadRequest<File>(File.class, Pithos.getStorageAPIURL(), file.getOwnerID(), path, file) { |
531 | 64d3b76b | Christos KK Loverdos | |
532 | 64d3b76b | Christos KK Loverdos | @Override
|
533 | 64d3b76b | Christos KK Loverdos | public void onSuccess(File _result) { |
534 | 64d3b76b | Christos KK Loverdos | showLinkForPrivateSharing(); |
535 | 64d3b76b | Christos KK Loverdos | if (!app.isMySharedSelected())
|
536 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
537 | 64d3b76b | Christos KK Loverdos | |
538 | 64d3b76b | Christos KK Loverdos | @Override
|
539 | 64d3b76b | Christos KK Loverdos | public void execute() { |
540 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
541 | 64d3b76b | Christos KK Loverdos | } |
542 | 64d3b76b | Christos KK Loverdos | }, true);
|
543 | 64d3b76b | Christos KK Loverdos | else
|
544 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
545 | 64d3b76b | Christos KK Loverdos | } |
546 | 64d3b76b | Christos KK Loverdos | |
547 | 64d3b76b | Christos KK Loverdos | @Override
|
548 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
549 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
550 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
551 | 64d3b76b | Christos KK Loverdos | } |
552 | 64d3b76b | Christos KK Loverdos | |
553 | 64d3b76b | Christos KK Loverdos | @Override
|
554 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
555 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
556 | 64d3b76b | Christos KK Loverdos | } |
557 | 64d3b76b | Christos KK Loverdos | }; |
558 | 64d3b76b | Christos KK Loverdos | headFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
559 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headFile); |
560 | 64d3b76b | Christos KK Loverdos | } |
561 | 64d3b76b | Christos KK Loverdos | |
562 | 64d3b76b | Christos KK Loverdos | @Override
|
563 | 64d3b76b | Christos KK Loverdos | public void onError(Throwable t) { |
564 | 64d3b76b | Christos KK Loverdos | app.setError(t); |
565 | 64d3b76b | Christos KK Loverdos | app.displayError("System error modifying file:" + t.getMessage());
|
566 | 64d3b76b | Christos KK Loverdos | } |
567 | 64d3b76b | Christos KK Loverdos | |
568 | 64d3b76b | Christos KK Loverdos | @Override
|
569 | 64d3b76b | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
570 | 64d3b76b | Christos KK Loverdos | app.sessionExpired(); |
571 | 64d3b76b | Christos KK Loverdos | } |
572 | 64d3b76b | Christos KK Loverdos | }; |
573 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken()); |
574 | 64d3b76b | Christos KK Loverdos | |
575 | 64d3b76b | Christos KK Loverdos | String readPermHeader = Const.READ_EQ;
|
576 | 64d3b76b | Christos KK Loverdos | String writePermHeader = Const.WRITE_EQ;
|
577 | 64d3b76b | Christos KK Loverdos | for (String u : newPermissions.keySet()) { |
578 | 64d3b76b | Christos KK Loverdos | Boolean[] p = newPermissions.get(u); |
579 | 64d3b76b | Christos KK Loverdos | if (p[0] != null && p[0]) { |
580 | 64d3b76b | Christos KK Loverdos | readPermHeader += u + Const.COMMA; |
581 | 64d3b76b | Christos KK Loverdos | } |
582 | 64d3b76b | Christos KK Loverdos | if (p[1] != null && p[1]) { |
583 | 64d3b76b | Christos KK Loverdos | writePermHeader += u + Const.COMMA; |
584 | 64d3b76b | Christos KK Loverdos | } |
585 | 64d3b76b | Christos KK Loverdos | } |
586 | 64d3b76b | Christos KK Loverdos | if (readPermHeader.endsWith(Const.EQ)) {
|
587 | 64d3b76b | Christos KK Loverdos | readPermHeader = "";
|
588 | 64d3b76b | Christos KK Loverdos | } |
589 | 64d3b76b | Christos KK Loverdos | else if (readPermHeader.endsWith(Const.COMMA)) { |
590 | 64d3b76b | Christos KK Loverdos | readPermHeader = readPermHeader.substring(0, readPermHeader.length() - 1); |
591 | 64d3b76b | Christos KK Loverdos | } |
592 | 64d3b76b | Christos KK Loverdos | if (writePermHeader.endsWith(Const.EQ)) {
|
593 | 64d3b76b | Christos KK Loverdos | writePermHeader = "";
|
594 | 64d3b76b | Christos KK Loverdos | } |
595 | 64d3b76b | Christos KK Loverdos | else if (writePermHeader.endsWith(Const.COMMA)) { |
596 | 64d3b76b | Christos KK Loverdos | writePermHeader = writePermHeader.substring(0, writePermHeader.length() - 1); |
597 | 64d3b76b | Christos KK Loverdos | } |
598 | 64d3b76b | Christos KK Loverdos | String permHeader = readPermHeader +
|
599 | 64d3b76b | Christos KK Loverdos | ((readPermHeader.length() > 0 && writePermHeader.length() > 0) ? Const.SEMI : "") + writePermHeader; |
600 | 64d3b76b | Christos KK Loverdos | if (permHeader.length() == 0) { |
601 | 64d3b76b | Christos KK Loverdos | permHeader=Const.TILDE; |
602 | 64d3b76b | Christos KK Loverdos | } |
603 | 64d3b76b | Christos KK Loverdos | else {
|
604 | 64d3b76b | Christos KK Loverdos | permHeader = URL.encodePathSegment(permHeader);
|
605 | 64d3b76b | Christos KK Loverdos | } |
606 | 64d3b76b | Christos KK Loverdos | updateFile.setHeader(Const.X_OBJECT_SHARING, permHeader); |
607 | 64d3b76b | Christos KK Loverdos | Scheduler.get().scheduleDeferred(updateFile); |
608 | 64d3b76b | Christos KK Loverdos | } |
609 | 64d3b76b | Christos KK Loverdos | else if (!app.isMySharedSelected()) { |
610 | 64d3b76b | Christos KK Loverdos | app.updateFolder(file.getParent(), true, new Command() { |
611 | 64d3b76b | Christos KK Loverdos | @Override
|
612 | 64d3b76b | Christos KK Loverdos | public void execute() { |
613 | 64d3b76b | Christos KK Loverdos | if (file.isSharedOrPublished())
|
614 | 64d3b76b | Christos KK Loverdos | app.updateMySharedRoot(); |
615 | 64d3b76b | Christos KK Loverdos | } |
616 | 64d3b76b | Christos KK Loverdos | }, true);
|
617 | 64d3b76b | Christos KK Loverdos | } |
618 | 64d3b76b | Christos KK Loverdos | else {
|
619 | 64d3b76b | Christos KK Loverdos | app.updateSharedFolder(file.getParent(), true);
|
620 | 64d3b76b | Christos KK Loverdos | } |
621 | 64d3b76b | Christos KK Loverdos | } |
622 | 64d3b76b | Christos KK Loverdos | protected void updateMetaDataForPrivateSharing() { |
623 | 64d3b76b | Christos KK Loverdos | updateMetaDataForPrivateSharing( |
624 | 28e270f9 | Christos KK Loverdos | Pithos.getStorageAPIURL(), |
625 | 64d3b76b | Christos KK Loverdos | app.getUserID(), |
626 | 64d3b76b | Christos KK Loverdos | file.getUri() + Const.QUESTION_MARK_UPDATE_EQ, |
627 | 64d3b76b | Christos KK Loverdos | permList.getPermissions() |
628 | 64d3b76b | Christos KK Loverdos | ); |
629 | 64d3b76b | Christos KK Loverdos | } |
630 | b12da07a | Christos KK Loverdos | |
631 | 64d3b76b | Christos KK Loverdos | @Override
|
632 | 64d3b76b | Christos KK Loverdos | protected void onPreviewNativeEvent(NativePreviewEvent preview) { |
633 | 64d3b76b | Christos KK Loverdos | super.onPreviewNativeEvent(preview);
|
634 | 64d3b76b | Christos KK Loverdos | |
635 | 64d3b76b | Christos KK Loverdos | NativeEvent evt = preview.getNativeEvent(); |
636 | 64d3b76b | Christos KK Loverdos | if (evt.getType().equals(Const.EVENT_TYPE_KEYDOWN) &&
|
637 | 64d3b76b | Christos KK Loverdos | evt.getKeyCode() == KeyCodes.KEY_ENTER) { |
638 | 64d3b76b | Christos KK Loverdos | |
639 | 64d3b76b | Christos KK Loverdos | closeDialog(); |
640 | 64d3b76b | Christos KK Loverdos | } |
641 | 64d3b76b | Christos KK Loverdos | } |
642 | 64d3b76b | Christos KK Loverdos | |
643 | 64d3b76b | Christos KK Loverdos | @Override
|
644 | 64d3b76b | Christos KK Loverdos | protected boolean accept() { |
645 | 64d3b76b | Christos KK Loverdos | return true; |
646 | 64d3b76b | Christos KK Loverdos | } |
647 | 64d3b76b | Christos KK Loverdos | } |