root / src / gr / grnet / pithos / web / client / Pithos.java @ fbb19e02
History | View | Annotate | Download (55.2 kB)
1 | a57faaf0 | Christos Stathis | /*
|
---|---|---|---|
2 | e6e9f6e6 | Christos KK Loverdos | * Copyright 2011-2013 GRNET S.A. All rights reserved.
|
3 | 63366925 | Christos Stathis | *
|
4 | 63366925 | Christos Stathis | * Redistribution and use in source and binary forms, with or
|
5 | 63366925 | Christos Stathis | * without modification, are permitted provided that the following
|
6 | 63366925 | Christos Stathis | * conditions are met:
|
7 | 63366925 | Christos Stathis | *
|
8 | 63366925 | Christos Stathis | * 1. Redistributions of source code must retain the above
|
9 | 63366925 | Christos Stathis | * copyright notice, this list of conditions and the following
|
10 | 63366925 | Christos Stathis | * disclaimer.
|
11 | 63366925 | Christos Stathis | *
|
12 | 63366925 | Christos Stathis | * 2. Redistributions in binary form must reproduce the above
|
13 | 63366925 | Christos Stathis | * copyright notice, this list of conditions and the following
|
14 | 63366925 | Christos Stathis | * disclaimer in the documentation and/or other materials
|
15 | 63366925 | Christos Stathis | * provided with the distribution.
|
16 | 63366925 | Christos Stathis | *
|
17 | 63366925 | Christos Stathis | * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
18 | 63366925 | Christos Stathis | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 | 63366925 | Christos Stathis | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
20 | 63366925 | Christos Stathis | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
21 | 63366925 | Christos Stathis | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
22 | 63366925 | Christos Stathis | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
23 | 63366925 | Christos Stathis | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
24 | 63366925 | Christos Stathis | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
25 | 63366925 | Christos Stathis | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
26 | 63366925 | Christos Stathis | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
27 | 63366925 | Christos Stathis | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
28 | 63366925 | Christos Stathis | * POSSIBILITY OF SUCH DAMAGE.
|
29 | 63366925 | Christos Stathis | *
|
30 | 63366925 | Christos Stathis | * The views and conclusions contained in the software and
|
31 | 63366925 | Christos Stathis | * documentation are those of the authors and should not be
|
32 | 63366925 | Christos Stathis | * interpreted as representing official policies, either expressed
|
33 | 63366925 | Christos Stathis | * or implied, of GRNET S.A.
|
34 | a57faaf0 | Christos Stathis | */
|
35 | a57faaf0 | Christos Stathis | package gr.grnet.pithos.web.client; |
36 | a57faaf0 | Christos Stathis | |
37 | a57faaf0 | Christos Stathis | import com.google.gwt.core.client.EntryPoint; |
38 | a57faaf0 | Christos Stathis | import com.google.gwt.core.client.GWT; |
39 | 3646552f | Christos Stathis | import com.google.gwt.core.client.JsArrayString; |
40 | 7811b9d1 | Christos Stathis | import com.google.gwt.core.client.Scheduler; |
41 | 983f9ee2 | Christos Stathis | import com.google.gwt.core.client.Scheduler.RepeatingCommand; |
42 | 7811b9d1 | Christos Stathis | import com.google.gwt.core.client.Scheduler.ScheduledCommand; |
43 | 7811b9d1 | Christos Stathis | import com.google.gwt.event.dom.client.ClickEvent; |
44 | 7811b9d1 | Christos Stathis | import com.google.gwt.event.dom.client.ClickHandler; |
45 | a57faaf0 | Christos Stathis | import com.google.gwt.event.logical.shared.ResizeEvent; |
46 | a57faaf0 | Christos Stathis | import com.google.gwt.event.logical.shared.ResizeHandler; |
47 | 7811b9d1 | Christos Stathis | import com.google.gwt.http.client.Response; |
48 | f5023f13 | Christos Stathis | import com.google.gwt.http.client.URL; |
49 | b1001100 | Christos Stathis | import com.google.gwt.i18n.client.DateTimeFormat; |
50 | f0105e9f | Christos Stathis | import com.google.gwt.i18n.client.Dictionary; |
51 | b1001100 | Christos Stathis | import com.google.gwt.i18n.client.TimeZone; |
52 | 01bd6099 | Christos Stathis | import com.google.gwt.resources.client.ClientBundle; |
53 | 01bd6099 | Christos Stathis | import com.google.gwt.resources.client.CssResource; |
54 | a57faaf0 | Christos Stathis | import com.google.gwt.resources.client.ImageResource; |
55 | 9fbf5596 | Christos Stathis | import com.google.gwt.resources.client.ImageResource.ImageOptions; |
56 | cdd90acb | Christos KK Loverdos | import com.google.gwt.user.client.*; |
57 | cdd90acb | Christos KK Loverdos | import com.google.gwt.user.client.ui.*; |
58 | 7811b9d1 | Christos Stathis | import com.google.gwt.view.client.SelectionChangeEvent; |
59 | 7811b9d1 | Christos Stathis | import com.google.gwt.view.client.SelectionChangeEvent.Handler; |
60 | 7811b9d1 | Christos Stathis | import com.google.gwt.view.client.SingleSelectionModel; |
61 | eee72ed5 | Christos KK Loverdos | import gr.grnet.pithos.web.client.catalog.UpdateUserCatalogs; |
62 | cc0120ab | Christos KK Loverdos | import gr.grnet.pithos.web.client.catalog.UserCatalogs; |
63 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.commands.UploadFileCommand; |
64 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.foldertree.*; |
65 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.grouptree.Group; |
66 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.grouptree.GroupTreeView; |
67 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.grouptree.GroupTreeViewModel; |
68 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.mysharedtree.MysharedTreeView; |
69 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.mysharedtree.MysharedTreeViewModel; |
70 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeView; |
71 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeViewModel; |
72 | cdd90acb | Christos KK Loverdos | import gr.grnet.pithos.web.client.rest.*; |
73 | cdd90acb | Christos KK Loverdos | import org.apache.http.HttpStatus; |
74 | cdd90acb | Christos KK Loverdos | |
75 | cdd90acb | Christos KK Loverdos | import java.util.*; |
76 | 6084aa02 | Christos Stathis | |
77 | a57faaf0 | Christos Stathis | /**
|
78 | a57faaf0 | Christos Stathis | * Entry point classes define <code>onModuleLoad()</code>.
|
79 | a57faaf0 | Christos Stathis | */
|
80 | 749068ba | Christos Stathis | public class Pithos implements EntryPoint, ResizeHandler { |
81 | a57faaf0 | Christos Stathis | |
82 | e0a0c6ea | Christos KK Loverdos | private static final boolean IsLOGEnabled = true; |
83 | e0a0c6ea | Christos KK Loverdos | |
84 | cdd90acb | Christos KK Loverdos | public static final Configuration config = GWT.create(Configuration.class); |
85 | cdd90acb | Christos KK Loverdos | |
86 | cdd90acb | Christos KK Loverdos | public interface Style extends CssResource { |
87 | cdd90acb | Christos KK Loverdos | String commandAnchor();
|
88 | cdd90acb | Christos KK Loverdos | |
89 | cdd90acb | Christos KK Loverdos | String statistics();
|
90 | cdd90acb | Christos KK Loverdos | |
91 | cdd90acb | Christos KK Loverdos | @ClassName("gwt-HTML") |
92 | cdd90acb | Christos KK Loverdos | String html();
|
93 | cdd90acb | Christos KK Loverdos | |
94 | cdd90acb | Christos KK Loverdos | String uploadAlert();
|
95 | cdd90acb | Christos KK Loverdos | |
96 | cdd90acb | Christos KK Loverdos | String uploadAlertLink();
|
97 | cdd90acb | Christos KK Loverdos | |
98 | cdd90acb | Christos KK Loverdos | String uploadAlertProgress();
|
99 | cdd90acb | Christos KK Loverdos | |
100 | cdd90acb | Christos KK Loverdos | String uploadAlertPercent();
|
101 | cdd90acb | Christos KK Loverdos | |
102 | cdd90acb | Christos KK Loverdos | String uploadAlertClose();
|
103 | cdd90acb | Christos KK Loverdos | } |
104 | cdd90acb | Christos KK Loverdos | |
105 | cdd90acb | Christos KK Loverdos | public interface Resources extends ClientBundle { |
106 | cdd90acb | Christos KK Loverdos | @Source("Pithos.css") |
107 | cdd90acb | Christos KK Loverdos | Style pithosCss();
|
108 | cdd90acb | Christos KK Loverdos | |
109 | cdd90acb | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/close-popup.png") |
110 | cdd90acb | Christos KK Loverdos | ImageResource closePopup(); |
111 | cdd90acb | Christos KK Loverdos | } |
112 | cdd90acb | Christos KK Loverdos | |
113 | cdd90acb | Christos KK Loverdos | public static Resources resources = GWT.create(Resources.class); |
114 | cdd90acb | Christos KK Loverdos | |
115 | cdd90acb | Christos KK Loverdos | /**
|
116 | cdd90acb | Christos KK Loverdos | * Instantiate an application-level image bundle. This object will provide
|
117 | cdd90acb | Christos KK Loverdos | * programmatic access to all the images needed by widgets.
|
118 | cdd90acb | Christos KK Loverdos | */
|
119 | cdd90acb | Christos KK Loverdos | static Images images = (Images) GWT.create(Images.class);
|
120 | a57faaf0 | Christos Stathis | |
121 | cc0120ab | Christos KK Loverdos | public String getUserID() { |
122 | cc0120ab | Christos KK Loverdos | return userID;
|
123 | 6084aa02 | Christos Stathis | } |
124 | a57faaf0 | Christos Stathis | |
125 | b9a1049a | Christos KK Loverdos | public UserCatalogs getUserCatalogs() {
|
126 | b9a1049a | Christos KK Loverdos | return userCatalogs;
|
127 | b9a1049a | Christos KK Loverdos | } |
128 | b9a1049a | Christos KK Loverdos | |
129 | cde22209 | Christos KK Loverdos | public String getCurrentUserDisplayNameOrID() { |
130 | dc8cc18a | Christos KK Loverdos | final String displayName = userCatalogs.getDisplayName(getUserID()); |
131 | 1bb330dc | Christos KK Loverdos | return displayName == null ? getUserID() : displayName; |
132 | 1bb330dc | Christos KK Loverdos | } |
133 | 1bb330dc | Christos KK Loverdos | |
134 | c8f8690d | Christos KK Loverdos | public boolean hasDisplayNameForUserID(String userID) { |
135 | dc8cc18a | Christos KK Loverdos | return userCatalogs.getDisplayName(userID) != null; |
136 | b9a1049a | Christos KK Loverdos | } |
137 | b9a1049a | Christos KK Loverdos | |
138 | c8f8690d | Christos KK Loverdos | public boolean hasIDForUserDisplayName(String userDisplayName) { |
139 | c8f8690d | Christos KK Loverdos | return userCatalogs.getID(userDisplayName) != null; |
140 | c8f8690d | Christos KK Loverdos | } |
141 | c8f8690d | Christos KK Loverdos | |
142 | c8f8690d | Christos KK Loverdos | public String getDisplayNameForUserID(String userID) { |
143 | dc8cc18a | Christos KK Loverdos | return userCatalogs.getDisplayName(userID);
|
144 | b9a1049a | Christos KK Loverdos | } |
145 | b9a1049a | Christos KK Loverdos | |
146 | c8f8690d | Christos KK Loverdos | public String getIDForUserDisplayName(String userDisplayName) { |
147 | c8f8690d | Christos KK Loverdos | return userCatalogs.getID(userDisplayName);
|
148 | b9a1049a | Christos KK Loverdos | } |
149 | b9a1049a | Christos KK Loverdos | |
150 | c8f8690d | Christos KK Loverdos | public List<String> getDisplayNamesForUserIDs(List<String> userIDs) { |
151 | b9a1049a | Christos KK Loverdos | if(userIDs == null) { |
152 | b9a1049a | Christos KK Loverdos | userIDs = new ArrayList<String>(); |
153 | b9a1049a | Christos KK Loverdos | } |
154 | b9a1049a | Christos KK Loverdos | final List<String> userDisplayNames = new ArrayList<String>(); |
155 | b9a1049a | Christos KK Loverdos | for(String userID : userIDs) { |
156 | c8f8690d | Christos KK Loverdos | final String displayName = getDisplayNameForUserID(userID); |
157 | b9a1049a | Christos KK Loverdos | userDisplayNames.add(displayName); |
158 | b9a1049a | Christos KK Loverdos | } |
159 | b9a1049a | Christos KK Loverdos | |
160 | b9a1049a | Christos KK Loverdos | return userDisplayNames;
|
161 | cde22209 | Christos KK Loverdos | } |
162 | cde22209 | Christos KK Loverdos | |
163 | b9a1049a | Christos KK Loverdos | public List<String> filterUserIDsWithUnknownDisplayName(Collection<String> userIDs) { |
164 | b9a1049a | Christos KK Loverdos | if(userIDs == null) { |
165 | b9a1049a | Christos KK Loverdos | userIDs = new ArrayList<String>(); |
166 | b9a1049a | Christos KK Loverdos | } |
167 | b9a1049a | Christos KK Loverdos | final List<String> filtered = new ArrayList<String>(); |
168 | b9a1049a | Christos KK Loverdos | for(String userID : userIDs) { |
169 | dc8cc18a | Christos KK Loverdos | if(!this.userCatalogs.hasID(userID)) { |
170 | b9a1049a | Christos KK Loverdos | filtered.add(userID); |
171 | b9a1049a | Christos KK Loverdos | } |
172 | b9a1049a | Christos KK Loverdos | } |
173 | b9a1049a | Christos KK Loverdos | return filtered;
|
174 | cde22209 | Christos KK Loverdos | } |
175 | cde22209 | Christos KK Loverdos | |
176 | 8e61880b | Christos Stathis | public void setAccount(AccountResource acct) { |
177 | 8e61880b | Christos Stathis | account = acct; |
178 | 8e61880b | Christos Stathis | } |
179 | 8e61880b | Christos Stathis | |
180 | 8e61880b | Christos Stathis | public AccountResource getAccount() {
|
181 | 8e61880b | Christos Stathis | return account;
|
182 | 8e61880b | Christos Stathis | } |
183 | 8e61880b | Christos Stathis | |
184 | 6acd4df3 | Christos Stathis | public void updateFolder(Folder f, boolean showfiles, Command callback, final boolean openParent) { |
185 | 6acd4df3 | Christos Stathis | folderTreeView.updateFolder(f, showfiles, callback, openParent); |
186 | b651e67f | Christos Stathis | } |
187 | b651e67f | Christos Stathis | |
188 | 4baffab1 | Christos Stathis | public void updateGroupNode(Group group) { |
189 | 4baffab1 | Christos Stathis | groupTreeView.updateGroupNode(group); |
190 | 4baffab1 | Christos Stathis | } |
191 | 4baffab1 | Christos Stathis | |
192 | 3601b114 | Christos Stathis | public void updateMySharedRoot() { |
193 | cdd90acb | Christos KK Loverdos | mysharedTreeView.updateRoot(); |
194 | 3601b114 | Christos Stathis | } |
195 | cdd90acb | Christos KK Loverdos | |
196 | 3586ad5e | Christos Stathis | public void updateSharedFolder(Folder f, boolean showfiles, Command callback) { |
197 | cdd90acb | Christos KK Loverdos | mysharedTreeView.updateFolder(f, showfiles, callback); |
198 | 105b4e49 | Christos Stathis | } |
199 | cdd90acb | Christos KK Loverdos | |
200 | 3586ad5e | Christos Stathis | public void updateSharedFolder(Folder f, boolean showfiles) { |
201 | cdd90acb | Christos KK Loverdos | updateSharedFolder(f, showfiles, null);
|
202 | 3586ad5e | Christos Stathis | } |
203 | 3586ad5e | Christos Stathis | |
204 | 3646552f | Christos Stathis | public void updateOtherSharedFolder(Folder f, boolean showfiles, Command callback) { |
205 | cdd90acb | Christos KK Loverdos | otherSharedTreeView.updateFolder(f, showfiles, callback); |
206 | 6d8e0f58 | Christos Stathis | } |
207 | 6d8e0f58 | Christos Stathis | |
208 | 105b4e49 | Christos Stathis | public MysharedTreeView getMySharedTreeView() {
|
209 | 105b4e49 | Christos Stathis | return mysharedTreeView;
|
210 | 105b4e49 | Christos Stathis | } |
211 | 105b4e49 | Christos Stathis | |
212 | 6084aa02 | Christos Stathis | /**
|
213 | cdd90acb | Christos KK Loverdos | * An aggregate image bundle that pulls together all the images for this
|
214 | cdd90acb | Christos KK Loverdos | * application into a single bundle.
|
215 | cdd90acb | Christos KK Loverdos | */
|
216 | cdd90acb | Christos KK Loverdos | public interface Images extends TopPanel.Images, FileList.Images, ToolsMenu.Images { |
217 | cdd90acb | Christos KK Loverdos | |
218 | cdd90acb | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/document.png") |
219 | cdd90acb | Christos KK Loverdos | ImageResource folders(); |
220 | cdd90acb | Christos KK Loverdos | |
221 | cdd90acb | Christos KK Loverdos | @Source("gr/grnet/pithos/resources/advancedsettings.png") |
222 | cdd90acb | Christos KK Loverdos | @ImageOptions(width = 32, height = 32) |
223 | cdd90acb | Christos KK Loverdos | ImageResource tools(); |
224 | cdd90acb | Christos KK Loverdos | } |
225 | cdd90acb | Christos KK Loverdos | |
226 | cdd90acb | Christos KK Loverdos | private Throwable error; |
227 | cdd90acb | Christos KK Loverdos | |
228 | cdd90acb | Christos KK Loverdos | /**
|
229 | cdd90acb | Christos KK Loverdos | * The Application Clipboard implementation;
|
230 | cdd90acb | Christos KK Loverdos | */
|
231 | cdd90acb | Christos KK Loverdos | private Clipboard clipboard = new Clipboard(); |
232 | cdd90acb | Christos KK Loverdos | |
233 | cdd90acb | Christos KK Loverdos | /**
|
234 | cdd90acb | Christos KK Loverdos | * The top panel that contains the menu bar.
|
235 | cdd90acb | Christos KK Loverdos | */
|
236 | cdd90acb | Christos KK Loverdos | private TopPanel topPanel;
|
237 | cdd90acb | Christos KK Loverdos | |
238 | cdd90acb | Christos KK Loverdos | /**
|
239 | cdd90acb | Christos KK Loverdos | * The panel that contains the various system messages.
|
240 | cdd90acb | Christos KK Loverdos | */
|
241 | cdd90acb | Christos KK Loverdos | private MessagePanel messagePanel = new MessagePanel(this, Pithos.images); |
242 | cdd90acb | Christos KK Loverdos | |
243 | cdd90acb | Christos KK Loverdos | /**
|
244 | cdd90acb | Christos KK Loverdos | * The bottom panel that contains the status bar.
|
245 | cdd90acb | Christos KK Loverdos | */
|
246 | cdd90acb | Christos KK Loverdos | StatusPanel statusPanel = null;
|
247 | cdd90acb | Christos KK Loverdos | |
248 | cdd90acb | Christos KK Loverdos | /**
|
249 | cdd90acb | Christos KK Loverdos | * The file list widget.
|
250 | cdd90acb | Christos KK Loverdos | */
|
251 | cdd90acb | Christos KK Loverdos | private FileList fileList;
|
252 | cdd90acb | Christos KK Loverdos | |
253 | cdd90acb | Christos KK Loverdos | /**
|
254 | cdd90acb | Christos KK Loverdos | * The tab panel that occupies the right side of the screen.
|
255 | cdd90acb | Christos KK Loverdos | */
|
256 | cdd90acb | Christos KK Loverdos | private VerticalPanel inner = new VerticalPanel(); |
257 | cdd90acb | Christos KK Loverdos | |
258 | cdd90acb | Christos KK Loverdos | |
259 | cdd90acb | Christos KK Loverdos | /**
|
260 | cdd90acb | Christos KK Loverdos | * The split panel that will contain the left and right panels.
|
261 | cdd90acb | Christos KK Loverdos | */
|
262 | cdd90acb | Christos KK Loverdos | private HorizontalSplitPanel splitPanel = new HorizontalSplitPanel(); |
263 | cdd90acb | Christos KK Loverdos | |
264 | cdd90acb | Christos KK Loverdos | /**
|
265 | cdd90acb | Christos KK Loverdos | * The currently selected item in the application, for use by the Edit menu
|
266 | cdd90acb | Christos KK Loverdos | * commands. Potential types are Folder, File, User and Group.
|
267 | cdd90acb | Christos KK Loverdos | */
|
268 | cdd90acb | Christos KK Loverdos | private Object currentSelection; |
269 | cdd90acb | Christos KK Loverdos | |
270 | cdd90acb | Christos KK Loverdos | public HashMap<String, String> userFullNameMap = new HashMap<String, String>(); |
271 | a57faaf0 | Christos Stathis | |
272 | cc0120ab | Christos KK Loverdos | /**
|
273 | cc0120ab | Christos KK Loverdos | * The ID that uniquely identifies the user in Pithos+.
|
274 | cc0120ab | Christos KK Loverdos | * Currently this is a UUID. It used to be the user's email.
|
275 | cc0120ab | Christos KK Loverdos | */
|
276 | cc0120ab | Christos KK Loverdos | private String userID = null; |
277 | cc0120ab | Christos KK Loverdos | |
278 | cc0120ab | Christos KK Loverdos | /**
|
279 | cc0120ab | Christos KK Loverdos | * Hold mappings from user UUIDs to emails and vice-versa.
|
280 | cc0120ab | Christos KK Loverdos | */
|
281 | cc0120ab | Christos KK Loverdos | private UserCatalogs userCatalogs = new UserCatalogs(); |
282 | 6084aa02 | Christos Stathis | |
283 | 6084aa02 | Christos Stathis | /**
|
284 | 6084aa02 | Christos Stathis | * The authentication token of the current user.
|
285 | 6084aa02 | Christos Stathis | */
|
286 | cc0120ab | Christos KK Loverdos | private String userToken; |
287 | 6084aa02 | Christos Stathis | |
288 | 7c54d867 | Christos Stathis | VerticalPanel trees; |
289 | cdd90acb | Christos KK Loverdos | |
290 | f1b24b82 | Christos Stathis | SingleSelectionModel<Folder> folderTreeSelectionModel;
|
291 | f1b24b82 | Christos Stathis | FolderTreeViewModel folderTreeViewModel; |
292 | f1b24b82 | Christos Stathis | FolderTreeView folderTreeView; |
293 | 6084aa02 | Christos Stathis | |
294 | f1b24b82 | Christos Stathis | SingleSelectionModel<Folder> mysharedTreeSelectionModel;
|
295 | 7c54d867 | Christos Stathis | MysharedTreeViewModel mysharedTreeViewModel; |
296 | cdd90acb | Christos KK Loverdos | MysharedTreeView mysharedTreeView = null;
|
297 | 105b4e49 | Christos Stathis | |
298 | 7811b9d1 | Christos Stathis | protected SingleSelectionModel<Folder> otherSharedTreeSelectionModel; |
299 | 7c54d867 | Christos Stathis | OtherSharedTreeViewModel otherSharedTreeViewModel; |
300 | 7c54d867 | Christos Stathis | OtherSharedTreeView otherSharedTreeView = null;
|
301 | a6592a15 | Christos Stathis | |
302 | abd8738f | Christos Stathis | GroupTreeViewModel groupTreeViewModel; |
303 | c46c9e31 | Christos Stathis | GroupTreeView groupTreeView; |
304 | ee9fbc37 | Christos Stathis | |
305 | c4b7a6bb | Christos Stathis | TreeView selectedTree; |
306 | 7811b9d1 | Christos Stathis | protected AccountResource account;
|
307 | cdd90acb | Christos KK Loverdos | |
308 | abd8738f | Christos Stathis | Folder trash; |
309 | cdd90acb | Christos KK Loverdos | |
310 | 0549e173 | Christos Stathis | List<Composite> treeViews = new ArrayList<Composite>(); |
311 | 8e61880b | Christos Stathis | |
312 | cdd90acb | Christos KK Loverdos | @SuppressWarnings("rawtypes") |
313 | cdd90acb | Christos KK Loverdos | List<SingleSelectionModel> selectionModels = new ArrayList<SingleSelectionModel>(); |
314 | cdd90acb | Christos KK Loverdos | |
315 | 1238d28d | Christos Stathis | public Button upload; |
316 | cdd90acb | Christos KK Loverdos | |
317 | a19f758c | Christos Stathis | private HTML numOfFiles; |
318 | cdd90acb | Christos KK Loverdos | |
319 | b75210b5 | Christos Stathis | private Toolbar toolbar;
|
320 | cdd90acb | Christos KK Loverdos | |
321 | 89dddc7d | Christos Stathis | private FileUploadDialog fileUploadDialog = new FileUploadDialog(this); |
322 | 3646552f | Christos Stathis | |
323 | cdd90acb | Christos KK Loverdos | UploadAlert uploadAlert; |
324 | cdd90acb | Christos KK Loverdos | |
325 | cdd90acb | Christos KK Loverdos | Date lastModified;
|
326 | 3646552f | Christos Stathis | |
327 | cdd90acb | Christos KK Loverdos | @Override
|
328 | cdd90acb | Christos KK Loverdos | public void onModuleLoad() { |
329 | cdd90acb | Christos KK Loverdos | if(parseUserCredentials()) {
|
330 | 6084aa02 | Christos Stathis | initialize(); |
331 | cdd90acb | Christos KK Loverdos | } |
332 | cdd90acb | Christos KK Loverdos | } |
333 | a57faaf0 | Christos Stathis | |
334 | f0ff407d | Christos KK Loverdos | static native void __ConsoleLog(String message) /*-{ |
335 | f0ff407d | Christos KK Loverdos | try {
|
336 | f0ff407d | Christos KK Loverdos | console.log(message);
|
337 | f0ff407d | Christos KK Loverdos | } catch (e) {
|
338 | f0ff407d | Christos KK Loverdos | }
|
339 | f0ff407d | Christos KK Loverdos | }-*/;
|
340 | f0ff407d | Christos KK Loverdos | |
341 | e0a0c6ea | Christos KK Loverdos | public static void LOGError(Throwable error, StringBuilder sb) { |
342 | e0a0c6ea | Christos KK Loverdos | if(!IsLOGEnabled) { return; } |
343 | e0a0c6ea | Christos KK Loverdos | |
344 | e0a0c6ea | Christos KK Loverdos | sb.append("\nException: [" + error.toString().replace("\n", "\n ") + "]"); |
345 | e0a0c6ea | Christos KK Loverdos | Throwable cause = error.getCause();
|
346 | e0a0c6ea | Christos KK Loverdos | if(cause != null) { |
347 | e0a0c6ea | Christos KK Loverdos | sb.append("\nCauses:\n");
|
348 | e0a0c6ea | Christos KK Loverdos | while(cause != null) { |
349 | e0a0c6ea | Christos KK Loverdos | sb.append(" ");
|
350 | e0a0c6ea | Christos KK Loverdos | sb.append("[" + cause.toString().replace("\n", "\n ") + "]"); |
351 | e0a0c6ea | Christos KK Loverdos | sb.append("\n");
|
352 | e0a0c6ea | Christos KK Loverdos | cause = cause.getCause(); |
353 | 86432004 | Christos KK Loverdos | } |
354 | e0a0c6ea | Christos KK Loverdos | } |
355 | e0a0c6ea | Christos KK Loverdos | else {
|
356 | e0a0c6ea | Christos KK Loverdos | sb.append("\n");
|
357 | e0a0c6ea | Christos KK Loverdos | } |
358 | e0a0c6ea | Christos KK Loverdos | |
359 | e0a0c6ea | Christos KK Loverdos | StackTraceElement[] stackTrace = error.getStackTrace(); |
360 | e0a0c6ea | Christos KK Loverdos | sb.append("Stack trace (" + stackTrace.length + " elements):\n"); |
361 | e0a0c6ea | Christos KK Loverdos | for(int i = 0; i < stackTrace.length; i++) { |
362 | e0a0c6ea | Christos KK Loverdos | StackTraceElement errorElem = stackTrace[i];
|
363 | e0a0c6ea | Christos KK Loverdos | sb.append(" [" + i + "] "); |
364 | e0a0c6ea | Christos KK Loverdos | sb.append(errorElem.toString()); |
365 | e0a0c6ea | Christos KK Loverdos | sb.append("\n");
|
366 | e0a0c6ea | Christos KK Loverdos | } |
367 | e0a0c6ea | Christos KK Loverdos | } |
368 | e0a0c6ea | Christos KK Loverdos | |
369 | e0a0c6ea | Christos KK Loverdos | public static void LOGError(Throwable error) { |
370 | e0a0c6ea | Christos KK Loverdos | if(!IsLOGEnabled) { return; } |
371 | e0a0c6ea | Christos KK Loverdos | |
372 | e0a0c6ea | Christos KK Loverdos | final StringBuilder sb = new StringBuilder(); |
373 | e0a0c6ea | Christos KK Loverdos | LOGError(error, sb); |
374 | e0a0c6ea | Christos KK Loverdos | if(sb.length() > 0) { |
375 | e0a0c6ea | Christos KK Loverdos | __ConsoleLog(sb.toString()); |
376 | e0a0c6ea | Christos KK Loverdos | } |
377 | e0a0c6ea | Christos KK Loverdos | } |
378 | 01337c33 | Christos KK Loverdos | |
379 | e0a0c6ea | Christos KK Loverdos | public static boolean isLogEnabled() { |
380 | e0a0c6ea | Christos KK Loverdos | return IsLOGEnabled;
|
381 | e0a0c6ea | Christos KK Loverdos | } |
382 | 01337c33 | Christos KK Loverdos | |
383 | e0a0c6ea | Christos KK Loverdos | public static void LOG(Object ...args) { |
384 | e0a0c6ea | Christos KK Loverdos | if(!IsLOGEnabled) { return; } |
385 | e0a0c6ea | Christos KK Loverdos | |
386 | e0a0c6ea | Christos KK Loverdos | final StringBuilder sb = new StringBuilder(); |
387 | e0a0c6ea | Christos KK Loverdos | for(Object arg : args) { |
388 | e0a0c6ea | Christos KK Loverdos | if(arg instanceof Throwable) { |
389 | e0a0c6ea | Christos KK Loverdos | LOGError((Throwable) arg, sb);
|
390 | 86432004 | Christos KK Loverdos | } |
391 | e0a0c6ea | Christos KK Loverdos | else {
|
392 | e0a0c6ea | Christos KK Loverdos | sb.append(arg); |
393 | e0a0c6ea | Christos KK Loverdos | } |
394 | e0a0c6ea | Christos KK Loverdos | } |
395 | e0a0c6ea | Christos KK Loverdos | |
396 | e0a0c6ea | Christos KK Loverdos | if(sb.length() > 0) { |
397 | e0a0c6ea | Christos KK Loverdos | __ConsoleLog(sb.toString()); |
398 | f0ff407d | Christos KK Loverdos | } |
399 | f0ff407d | Christos KK Loverdos | } |
400 | f0ff407d | Christos KK Loverdos | |
401 | 6084aa02 | Christos Stathis | private void initialize() { |
402 | cdd90acb | Christos KK Loverdos | lastModified = new Date(); //Initialize if-modified-since value with now. |
403 | cdd90acb | Christos KK Loverdos | resources.pithosCss().ensureInjected(); |
404 | cdd90acb | Christos KK Loverdos | boolean bareContent = Window.Location.getParameter("noframe") != null; |
405 | fa68c84d | Christos KK Loverdos | String contentWidth = bareContent ? Const.PERCENT_100 : "75%"; |
406 | bbdd34ef | Christos Stathis | |
407 | cdd90acb | Christos KK Loverdos | VerticalPanel outer = new VerticalPanel();
|
408 | fa68c84d | Christos KK Loverdos | outer.setWidth(Const.PERCENT_100); |
409 | cdd90acb | Christos KK Loverdos | if(!bareContent) {
|
410 | cdd90acb | Christos KK Loverdos | outer.addStyleName("pithos-outer");
|
411 | cdd90acb | Christos KK Loverdos | } |
412 | cdd90acb | Christos KK Loverdos | |
413 | cdd90acb | Christos KK Loverdos | if(!bareContent) {
|
414 | cdd90acb | Christos KK Loverdos | topPanel = new TopPanel(this, Pithos.images); |
415 | fa68c84d | Christos KK Loverdos | topPanel.setWidth(Const.PERCENT_100); |
416 | cdd90acb | Christos KK Loverdos | outer.add(topPanel); |
417 | cdd90acb | Christos KK Loverdos | outer.setCellHorizontalAlignment(topPanel, HasHorizontalAlignment.ALIGN_CENTER); |
418 | a7b6e464 | Christos Stathis | } |
419 | cdd90acb | Christos KK Loverdos | |
420 | 6cf258b1 | Christos Stathis | messagePanel.setVisible(false);
|
421 | 6cf258b1 | Christos Stathis | outer.add(messagePanel); |
422 | 6cf258b1 | Christos Stathis | outer.setCellHorizontalAlignment(messagePanel, HasHorizontalAlignment.ALIGN_CENTER); |
423 | 6cf258b1 | Christos Stathis | outer.setCellVerticalAlignment(messagePanel, HasVerticalAlignment.ALIGN_MIDDLE); |
424 | 6cf258b1 | Christos Stathis | |
425 | a7b6e464 | Christos Stathis | HorizontalPanel header = new HorizontalPanel();
|
426 | a7b6e464 | Christos Stathis | header.addStyleName("pithos-header");
|
427 | 2d91458a | Christos Stathis | header.setWidth(contentWidth); |
428 | cdd90acb | Christos KK Loverdos | if(bareContent) {
|
429 | cdd90acb | Christos KK Loverdos | header.addStyleName("pithos-header-noframe");
|
430 | cdd90acb | Christos KK Loverdos | } |
431 | 1a0db4f4 | Christos Stathis | upload = new Button("Upload", new ClickHandler() { |
432 | a7b6e464 | Christos Stathis | @Override
|
433 | ebead1b5 | Christos Stathis | public void onClick(ClickEvent event) { |
434 | cdd90acb | Christos KK Loverdos | if(getSelection() != null) { |
435 | cdd90acb | Christos KK Loverdos | new UploadFileCommand(Pithos.this, null, getSelection()).execute(); |
436 | cdd90acb | Christos KK Loverdos | } |
437 | a7b6e464 | Christos Stathis | } |
438 | a7b6e464 | Christos Stathis | }); |
439 | a7b6e464 | Christos Stathis | upload.addStyleName("pithos-uploadButton");
|
440 | 140f0f6d | Christos Stathis | header.add(upload); |
441 | 140f0f6d | Christos Stathis | header.setCellHorizontalAlignment(upload, HasHorizontalAlignment.ALIGN_LEFT); |
442 | 140f0f6d | Christos Stathis | header.setCellVerticalAlignment(upload, HasVerticalAlignment.ALIGN_MIDDLE); |
443 | 6084aa02 | Christos Stathis | |
444 | b75210b5 | Christos Stathis | toolbar = new Toolbar(this); |
445 | bd187dfb | Christos Stathis | header.add(toolbar); |
446 | bd187dfb | Christos Stathis | header.setCellHorizontalAlignment(toolbar, HasHorizontalAlignment.ALIGN_CENTER); |
447 | bd187dfb | Christos Stathis | header.setCellVerticalAlignment(toolbar, HasVerticalAlignment.ALIGN_MIDDLE); |
448 | cdd90acb | Christos KK Loverdos | |
449 | a19f758c | Christos Stathis | HorizontalPanel folderStatistics = new HorizontalPanel();
|
450 | bbdd34ef | Christos Stathis | folderStatistics.addStyleName("pithos-folderStatistics");
|
451 | a19f758c | Christos Stathis | numOfFiles = new HTML(); |
452 | a19f758c | Christos Stathis | folderStatistics.add(numOfFiles); |
453 | a7b6e464 | Christos Stathis | folderStatistics.setCellVerticalAlignment(numOfFiles, HasVerticalAlignment.ALIGN_MIDDLE); |
454 | a19f758c | Christos Stathis | HTML numOfFilesLabel = new HTML(" Files"); |
455 | a19f758c | Christos Stathis | folderStatistics.add(numOfFilesLabel); |
456 | a7b6e464 | Christos Stathis | folderStatistics.setCellVerticalAlignment(numOfFilesLabel, HasVerticalAlignment.ALIGN_MIDDLE); |
457 | 140f0f6d | Christos Stathis | header.add(folderStatistics); |
458 | 140f0f6d | Christos Stathis | header.setCellHorizontalAlignment(folderStatistics, HasHorizontalAlignment.ALIGN_RIGHT); |
459 | 140f0f6d | Christos Stathis | header.setCellVerticalAlignment(folderStatistics, HasVerticalAlignment.ALIGN_MIDDLE); |
460 | 9fbf5596 | Christos Stathis | header.setCellWidth(folderStatistics, "40px");
|
461 | a7b6e464 | Christos Stathis | outer.add(header); |
462 | a7b6e464 | Christos Stathis | outer.setCellHorizontalAlignment(header, HasHorizontalAlignment.ALIGN_CENTER); |
463 | 89dddc7d | Christos Stathis | // Inner contains the various lists
|
464 | a7b6e464 | Christos Stathis | inner.sinkEvents(Event.ONCONTEXTMENU);
|
465 | fa68c84d | Christos KK Loverdos | inner.setWidth(Const.PERCENT_100); |
466 | 6084aa02 | Christos Stathis | |
467 | 875a0179 | Christos Stathis | folderTreeSelectionModel = new SingleSelectionModel<Folder>(); |
468 | 875a0179 | Christos Stathis | folderTreeSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
469 | 875a0179 | Christos Stathis | @Override
|
470 | ebead1b5 | Christos Stathis | public void onSelectionChange(SelectionChangeEvent event) { |
471 | cdd90acb | Christos KK Loverdos | if(folderTreeSelectionModel.getSelectedObject() != null) { |
472 | f1b24b82 | Christos Stathis | deselectOthers(folderTreeView, folderTreeSelectionModel); |
473 | 3ebb88f4 | Christos Stathis | applyPermissions(folderTreeSelectionModel.getSelectedObject()); |
474 | a845b044 | Christos Stathis | Folder f = folderTreeSelectionModel.getSelectedObject(); |
475 | cdd90acb | Christos KK Loverdos | updateFolder(f, true, new Command() { |
476 | cdd90acb | Christos KK Loverdos | |
477 | cdd90acb | Christos KK Loverdos | @Override
|
478 | cdd90acb | Christos KK Loverdos | public void execute() { |
479 | cdd90acb | Christos KK Loverdos | updateStatistics(); |
480 | cdd90acb | Christos KK Loverdos | } |
481 | cdd90acb | Christos KK Loverdos | }, true);
|
482 | cdd90acb | Christos KK Loverdos | showRelevantToolbarButtons(); |
483 | cdd90acb | Christos KK Loverdos | } |
484 | cdd90acb | Christos KK Loverdos | else {
|
485 | cdd90acb | Christos KK Loverdos | if(getSelectedTree().equals(folderTreeView)) {
|
486 | cdd90acb | Christos KK Loverdos | setSelectedTree(null);
|
487 | cdd90acb | Christos KK Loverdos | } |
488 | cdd90acb | Christos KK Loverdos | if(getSelectedTree() == null) { |
489 | cdd90acb | Christos KK Loverdos | showRelevantToolbarButtons(); |
490 | cdd90acb | Christos KK Loverdos | } |
491 | a845b044 | Christos Stathis | } |
492 | 875a0179 | Christos Stathis | } |
493 | 875a0179 | Christos Stathis | }); |
494 | 105b4e49 | Christos Stathis | selectionModels.add(folderTreeSelectionModel); |
495 | 875a0179 | Christos Stathis | |
496 | a7c43f26 | Christos Stathis | folderTreeViewModel = new FolderTreeViewModel(this, folderTreeSelectionModel); |
497 | 875a0179 | Christos Stathis | folderTreeView = new FolderTreeView(folderTreeViewModel);
|
498 | 0549e173 | Christos Stathis | treeViews.add(folderTreeView); |
499 | cdd90acb | Christos KK Loverdos | |
500 | e2920e8d | Christos Stathis | fileList = new FileList(this, images); |
501 | bbdd34ef | Christos Stathis | inner.add(fileList); |
502 | 875a0179 | Christos Stathis | |
503 | 7c54d867 | Christos Stathis | trees = new VerticalPanel();
|
504 | fa68c84d | Christos KK Loverdos | trees.setWidth(Const.PERCENT_100); |
505 | cdd90acb | Christos KK Loverdos | |
506 | 6084aa02 | Christos Stathis | // Add the left and right panels to the split panel.
|
507 | a6592a15 | Christos Stathis | splitPanel.setLeftWidget(trees); |
508 | 89dddc7d | Christos Stathis | FlowPanel right = new FlowPanel();
|
509 | 89dddc7d | Christos Stathis | right.getElement().setId("rightPanel");
|
510 | 89dddc7d | Christos Stathis | right.add(inner); |
511 | 89dddc7d | Christos Stathis | splitPanel.setRightWidget(right); |
512 | e56be452 | Christos Stathis | splitPanel.setSplitPosition("219px");
|
513 | fa68c84d | Christos KK Loverdos | splitPanel.setSize(Const.PERCENT_100, Const.PERCENT_100); |
514 | 6084aa02 | Christos Stathis | splitPanel.addStyleName("pithos-splitPanel");
|
515 | a7b6e464 | Christos Stathis | splitPanel.setWidth(contentWidth); |
516 | 6084aa02 | Christos Stathis | outer.add(splitPanel); |
517 | a76065b6 | Christos Stathis | outer.setCellHorizontalAlignment(splitPanel, HasHorizontalAlignment.ALIGN_CENTER); |
518 | bbdd34ef | Christos Stathis | |
519 | cdd90acb | Christos KK Loverdos | if(!bareContent) {
|
520 | cdd90acb | Christos KK Loverdos | statusPanel = new StatusPanel();
|
521 | fa68c84d | Christos KK Loverdos | statusPanel.setWidth(Const.PERCENT_100); |
522 | cdd90acb | Christos KK Loverdos | outer.add(statusPanel); |
523 | cdd90acb | Christos KK Loverdos | outer.setCellHorizontalAlignment(statusPanel, HasHorizontalAlignment.ALIGN_CENTER); |
524 | cdd90acb | Christos KK Loverdos | } |
525 | cdd90acb | Christos KK Loverdos | else {
|
526 | cdd90acb | Christos KK Loverdos | splitPanel.addStyleName("pithos-splitPanel-noframe");
|
527 | a7b6e464 | Christos Stathis | } |
528 | 6084aa02 | Christos Stathis | |
529 | 6084aa02 | Christos Stathis | // Hook the window resize event, so that we can adjust the UI.
|
530 | 6084aa02 | Christos Stathis | Window.addResizeHandler(this); |
531 | 6084aa02 | Christos Stathis | // Clear out the window's built-in margin, because we want to take
|
532 | 6084aa02 | Christos Stathis | // advantage of the entire client area.
|
533 | 6084aa02 | Christos Stathis | Window.setMargin("0px"); |
534 | 6084aa02 | Christos Stathis | // Finally, add the outer panel to the RootPanel, so that it will be
|
535 | 6084aa02 | Christos Stathis | // displayed.
|
536 | 6084aa02 | Christos Stathis | RootPanel.get().add(outer); |
537 | 6084aa02 | Christos Stathis | // Call the window resized handler to get the initial sizes setup. Doing
|
538 | 6084aa02 | Christos Stathis | // this in a deferred command causes it to occur after all widgets'
|
539 | 6084aa02 | Christos Stathis | // sizes have been computed by the browser.
|
540 | 34e7d8d5 | Christos Stathis | Scheduler.get().scheduleIncremental(new RepeatingCommand() {
|
541 | cdd90acb | Christos KK Loverdos | |
542 | cdd90acb | Christos KK Loverdos | @Override
|
543 | cdd90acb | Christos KK Loverdos | public boolean execute() { |
544 | cdd90acb | Christos KK Loverdos | if(!isCloudbarReady()) {
|
545 | cdd90acb | Christos KK Loverdos | return true; |
546 | cdd90acb | Christos KK Loverdos | } |
547 | 6084aa02 | Christos Stathis | onWindowResized(Window.getClientHeight());
|
548 | cdd90acb | Christos KK Loverdos | return false; |
549 | cdd90acb | Christos KK Loverdos | } |
550 | cdd90acb | Christos KK Loverdos | }); |
551 | cdd90acb | Christos KK Loverdos | |
552 | 7c818c14 | Christos Stathis | Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
553 | 7c818c14 | Christos Stathis | @Override
|
554 | 7c818c14 | Christos Stathis | public void execute() { |
555 | 86432004 | Christos KK Loverdos | LOG("Pithos::initialize() Calling Pithos::fetchAccount()");
|
556 | 64f42c0b | Christos Stathis | fetchAccount(new Command() {
|
557 | cdd90acb | Christos KK Loverdos | |
558 | cdd90acb | Christos KK Loverdos | @Override
|
559 | cdd90acb | Christos KK Loverdos | public void execute() { |
560 | cdd90acb | Christos KK Loverdos | if(!account.hasHomeContainer()) {
|
561 | cdd90acb | Christos KK Loverdos | createHomeContainer(account, this);
|
562 | cdd90acb | Christos KK Loverdos | } |
563 | cdd90acb | Christos KK Loverdos | else if(!account.hasTrashContainer()) { |
564 | cdd90acb | Christos KK Loverdos | createTrashContainer(this);
|
565 | cdd90acb | Christos KK Loverdos | } |
566 | cdd90acb | Christos KK Loverdos | else {
|
567 | cdd90acb | Christos KK Loverdos | for(Folder f : account.getContainers()) {
|
568 | fa68c84d | Christos KK Loverdos | if(f.getName().equals(Const.TRASH_CONTAINER)) {
|
569 | cdd90acb | Christos KK Loverdos | trash = f; |
570 | cdd90acb | Christos KK Loverdos | break;
|
571 | cdd90acb | Christos KK Loverdos | } |
572 | cdd90acb | Christos KK Loverdos | } |
573 | cdd90acb | Christos KK Loverdos | trees.add(folderTreeView); |
574 | cdd90acb | Christos KK Loverdos | folderTreeViewModel.initialize(account, new Command() {
|
575 | cdd90acb | Christos KK Loverdos | |
576 | cdd90acb | Christos KK Loverdos | @Override
|
577 | cdd90acb | Christos KK Loverdos | public void execute() { |
578 | cdd90acb | Christos KK Loverdos | createMySharedTree(); |
579 | cdd90acb | Christos KK Loverdos | } |
580 | cdd90acb | Christos KK Loverdos | }); |
581 | cdd90acb | Christos KK Loverdos | |
582 | cdd90acb | Christos KK Loverdos | HorizontalPanel separator = new HorizontalPanel();
|
583 | cdd90acb | Christos KK Loverdos | separator.addStyleName("pithos-statisticsSeparator");
|
584 | cdd90acb | Christos KK Loverdos | separator.add(new HTML("")); |
585 | cdd90acb | Christos KK Loverdos | trees.add(separator); |
586 | cdd90acb | Christos KK Loverdos | |
587 | cdd90acb | Christos KK Loverdos | groupTreeViewModel = new GroupTreeViewModel(Pithos.this);
|
588 | cdd90acb | Christos KK Loverdos | groupTreeView = new GroupTreeView(groupTreeViewModel);
|
589 | cdd90acb | Christos KK Loverdos | treeViews.add(groupTreeView); |
590 | cdd90acb | Christos KK Loverdos | trees.add(groupTreeView); |
591 | cdd90acb | Christos KK Loverdos | folderTreeView.showStatistics(account); |
592 | cdd90acb | Christos KK Loverdos | } |
593 | cdd90acb | Christos KK Loverdos | } |
594 | cdd90acb | Christos KK Loverdos | }); |
595 | 7c818c14 | Christos Stathis | } |
596 | 7c818c14 | Christos Stathis | }); |
597 | b1001100 | Christos Stathis | } |
598 | cdd90acb | Christos KK Loverdos | |
599 | b1001100 | Christos Stathis | public void scheduleResfresh() { |
600 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
|
601 | cdd90acb | Christos KK Loverdos | |
602 | cdd90acb | Christos KK Loverdos | @Override
|
603 | cdd90acb | Christos KK Loverdos | public boolean execute() { |
604 | cdd90acb | Christos KK Loverdos | final Folder f = getSelection();
|
605 | cdd90acb | Christos KK Loverdos | if(f == null) { |
606 | cdd90acb | Christos KK Loverdos | return true; |
607 | cdd90acb | Christos KK Loverdos | } |
608 | cdd90acb | Christos KK Loverdos | |
609 | dc8cc18a | Christos KK Loverdos | HeadRequest<Folder> head = new HeadRequest<Folder>(Folder.class, getApiPath(), f.getOwnerID(), "/" + f.getContainer()) { |
610 | cdd90acb | Christos KK Loverdos | |
611 | cdd90acb | Christos KK Loverdos | @Override
|
612 | cdd90acb | Christos KK Loverdos | public void onSuccess(Folder _result) { |
613 | cdd90acb | Christos KK Loverdos | lastModified = new Date(); |
614 | cdd90acb | Christos KK Loverdos | if(getSelectedTree().equals(folderTreeView)) {
|
615 | cdd90acb | Christos KK Loverdos | updateFolder(f, true, new Command() { |
616 | cdd90acb | Christos KK Loverdos | |
617 | cdd90acb | Christos KK Loverdos | @Override
|
618 | cdd90acb | Christos KK Loverdos | public void execute() { |
619 | cdd90acb | Christos KK Loverdos | scheduleResfresh(); |
620 | cdd90acb | Christos KK Loverdos | } |
621 | cdd90acb | Christos KK Loverdos | |
622 | cdd90acb | Christos KK Loverdos | }, false);
|
623 | cdd90acb | Christos KK Loverdos | } |
624 | cdd90acb | Christos KK Loverdos | else if(getSelectedTree().equals(mysharedTreeView)) { |
625 | cdd90acb | Christos KK Loverdos | updateSharedFolder(f, true, new Command() { |
626 | cdd90acb | Christos KK Loverdos | |
627 | cdd90acb | Christos KK Loverdos | @Override
|
628 | cdd90acb | Christos KK Loverdos | public void execute() { |
629 | cdd90acb | Christos KK Loverdos | scheduleResfresh(); |
630 | cdd90acb | Christos KK Loverdos | } |
631 | cdd90acb | Christos KK Loverdos | }); |
632 | cdd90acb | Christos KK Loverdos | } |
633 | cdd90acb | Christos KK Loverdos | else {
|
634 | cdd90acb | Christos KK Loverdos | scheduleResfresh(); |
635 | cdd90acb | Christos KK Loverdos | } |
636 | cdd90acb | Christos KK Loverdos | } |
637 | cdd90acb | Christos KK Loverdos | |
638 | cdd90acb | Christos KK Loverdos | @Override
|
639 | cdd90acb | Christos KK Loverdos | public void onError(Throwable t) { |
640 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException && ((RestException) t).getHttpStatusCode() == HttpStatus.SC_NOT_MODIFIED) { |
641 | cdd90acb | Christos KK Loverdos | scheduleResfresh(); |
642 | cdd90acb | Christos KK Loverdos | } |
643 | cdd90acb | Christos KK Loverdos | else if(retries >= MAX_RETRIES) { |
644 | 8ddb4627 | Christos KK Loverdos | LOG("Error heading folder. ", t);
|
645 | cdd90acb | Christos KK Loverdos | setError(t); |
646 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
647 | cdd90acb | Christos KK Loverdos | displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
|
648 | cdd90acb | Christos KK Loverdos | } |
649 | cdd90acb | Christos KK Loverdos | else {
|
650 | cdd90acb | Christos KK Loverdos | displayError("System error heading folder: " + t.getMessage());
|
651 | cdd90acb | Christos KK Loverdos | } |
652 | cdd90acb | Christos KK Loverdos | } |
653 | cdd90acb | Christos KK Loverdos | else {//retry |
654 | 8ddb4627 | Christos KK Loverdos | LOG("Retry ", retries);
|
655 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(this);
|
656 | cdd90acb | Christos KK Loverdos | } |
657 | cdd90acb | Christos KK Loverdos | } |
658 | cdd90acb | Christos KK Loverdos | |
659 | cdd90acb | Christos KK Loverdos | @Override
|
660 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
661 | cdd90acb | Christos KK Loverdos | if(retries >= MAX_RETRIES) {
|
662 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
663 | cdd90acb | Christos KK Loverdos | } |
664 | cdd90acb | Christos KK Loverdos | else //retry |
665 | cdd90acb | Christos KK Loverdos | { |
666 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(this);
|
667 | cdd90acb | Christos KK Loverdos | } |
668 | cdd90acb | Christos KK Loverdos | } |
669 | cdd90acb | Christos KK Loverdos | }; |
670 | 728ff1e4 | Christos KK Loverdos | head.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
671 | fa68c84d | Christos KK Loverdos | head.setHeader(Const.IF_MODIFIED_SINCE, DateTimeFormat.getFormat(Const.DATE_FORMAT_1).format(lastModified, TimeZone.createTimeZone(0)) + " GMT"); |
672 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(head); |
673 | cdd90acb | Christos KK Loverdos | |
674 | cdd90acb | Christos KK Loverdos | return false; |
675 | cdd90acb | Christos KK Loverdos | } |
676 | cdd90acb | Christos KK Loverdos | }, 3000);
|
677 | 6084aa02 | Christos Stathis | } |
678 | a57faaf0 | Christos Stathis | |
679 | 3ebb88f4 | Christos Stathis | public void applyPermissions(Folder f) { |
680 | cdd90acb | Christos KK Loverdos | if(f != null) { |
681 | cdd90acb | Christos KK Loverdos | if(f.isInTrash()) {
|
682 | cdd90acb | Christos KK Loverdos | upload.setEnabled(false);
|
683 | cdd90acb | Christos KK Loverdos | disableUploadArea(); |
684 | cdd90acb | Christos KK Loverdos | } |
685 | cdd90acb | Christos KK Loverdos | else {
|
686 | cc0120ab | Christos KK Loverdos | Boolean[] perms = f.getPermissions().get(userID); |
687 | 4eaecbac | Christos KK Loverdos | if(f.getOwnerID().equals(userID) || (perms != null && perms[1] != null && perms[1])) { |
688 | cdd90acb | Christos KK Loverdos | upload.setEnabled(true);
|
689 | cdd90acb | Christos KK Loverdos | enableUploadArea(); |
690 | cdd90acb | Christos KK Loverdos | } |
691 | cdd90acb | Christos KK Loverdos | else {
|
692 | cdd90acb | Christos KK Loverdos | upload.setEnabled(false);
|
693 | cdd90acb | Christos KK Loverdos | disableUploadArea(); |
694 | cdd90acb | Christos KK Loverdos | } |
695 | cdd90acb | Christos KK Loverdos | } |
696 | cdd90acb | Christos KK Loverdos | } |
697 | cdd90acb | Christos KK Loverdos | else {
|
698 | cdd90acb | Christos KK Loverdos | upload.setEnabled(false);
|
699 | cdd90acb | Christos KK Loverdos | disableUploadArea(); |
700 | cdd90acb | Christos KK Loverdos | } |
701 | cdd90acb | Christos KK Loverdos | } |
702 | cdd90acb | Christos KK Loverdos | |
703 | cdd90acb | Christos KK Loverdos | @SuppressWarnings({"rawtypes", "unchecked"}) |
704 | cdd90acb | Christos KK Loverdos | public void deselectOthers(TreeView _selectedTree, SingleSelectionModel model) { |
705 | cdd90acb | Christos KK Loverdos | selectedTree = _selectedTree; |
706 | cdd90acb | Christos KK Loverdos | |
707 | cdd90acb | Christos KK Loverdos | for(SingleSelectionModel s : selectionModels) { |
708 | cdd90acb | Christos KK Loverdos | if(!s.equals(model) && s.getSelectedObject() != null) { |
709 | 105b4e49 | Christos Stathis | s.setSelected(s.getSelectedObject(), false);
|
710 | cdd90acb | Christos KK Loverdos | } |
711 | cdd90acb | Christos KK Loverdos | } |
712 | 105b4e49 | Christos Stathis | } |
713 | 105b4e49 | Christos Stathis | |
714 | dddb75e2 | Christos Stathis | public void showFiles(final Folder f) { |
715 | 07a1b5fe | Christos Stathis | Set<File> files = f.getFiles(); |
716 | a845b044 | Christos Stathis | showFiles(files); |
717 | a845b044 | Christos Stathis | } |
718 | a845b044 | Christos Stathis | |
719 | a845b044 | Christos Stathis | public void showFiles(Set<File> files) { |
720 | a845b044 | Christos Stathis | fileList.setFiles(new ArrayList<File>(files)); |
721 | 07a1b5fe | Christos Stathis | } |
722 | 07a1b5fe | Christos Stathis | |
723 | 875a0179 | Christos Stathis | /**
|
724 | cdd90acb | Christos KK Loverdos | * Parse and store the user credentials to the appropriate fields.
|
725 | cdd90acb | Christos KK Loverdos | */
|
726 | cdd90acb | Christos KK Loverdos | private boolean parseUserCredentials() { |
727 | 36dc8e18 | Christos Stathis | Configuration conf = (Configuration) GWT.create(Configuration.class); |
728 | fa68c84d | Christos KK Loverdos | Dictionary otherProperties = Dictionary.getDictionary(Const.OTHER_PROPERTIES); |
729 | fa68c84d | Christos KK Loverdos | String cookie = otherProperties.get(Const.AUTH_COOKIE);
|
730 | 4ea3c87b | Christos Stathis | String auth = Cookies.getCookie(cookie);
|
731 | cdd90acb | Christos KK Loverdos | if(auth == null) { |
732 | cdd90acb | Christos KK Loverdos | authenticateUser(); |
733 | cdd90acb | Christos KK Loverdos | return false; |
734 | cdd90acb | Christos KK Loverdos | } |
735 | cdd90acb | Christos KK Loverdos | if(auth.startsWith("\"")) { |
736 | cdd90acb | Christos KK Loverdos | auth = auth.substring(1);
|
737 | cdd90acb | Christos KK Loverdos | } |
738 | cdd90acb | Christos KK Loverdos | if(auth.endsWith("\"")) { |
739 | cdd90acb | Christos KK Loverdos | auth = auth.substring(0, auth.length() - 1); |
740 | cdd90acb | Christos KK Loverdos | } |
741 | cdd90acb | Christos KK Loverdos | String[] authSplit = auth.split("\\" + conf.cookieSeparator(), 2); |
742 | cdd90acb | Christos KK Loverdos | if(authSplit.length != 2) { |
743 | 4ea3c87b | Christos Stathis | authenticateUser(); |
744 | 4ea3c87b | Christos Stathis | return false; |
745 | 36dc8e18 | Christos Stathis | } |
746 | cc0120ab | Christos KK Loverdos | userID = authSplit[0];
|
747 | cc0120ab | Christos KK Loverdos | userToken = authSplit[1];
|
748 | 4d869bf1 | Christos Stathis | |
749 | 4d869bf1 | Christos Stathis | String gotoUrl = Window.Location.getParameter("goto"); |
750 | cdd90acb | Christos KK Loverdos | if(gotoUrl != null && gotoUrl.length() > 0) { |
751 | cdd90acb | Christos KK Loverdos | Window.Location.assign(gotoUrl);
|
752 | cdd90acb | Christos KK Loverdos | return false; |
753 | cdd90acb | Christos KK Loverdos | } |
754 | cdd90acb | Christos KK Loverdos | return true; |
755 | 36dc8e18 | Christos Stathis | } |
756 | a57faaf0 | Christos Stathis | |
757 | 6084aa02 | Christos Stathis | /**
|
758 | cdd90acb | Christos KK Loverdos | * Redirect the user to the login page for authentication.
|
759 | cdd90acb | Christos KK Loverdos | */
|
760 | cdd90acb | Christos KK Loverdos | protected void authenticateUser() { |
761 | fa68c84d | Christos KK Loverdos | Dictionary otherProperties = Dictionary.getDictionary(Const.OTHER_PROPERTIES); |
762 | fa68c84d | Christos KK Loverdos | Window.Location.assign(otherProperties.get(Const.LOGIN_URL) + Window.Location.getHref()); |
763 | cdd90acb | Christos KK Loverdos | } |
764 | a57faaf0 | Christos Stathis | |
765 | cdd90acb | Christos KK Loverdos | public void fetchAccount(final Command callback) { |
766 | b51c628b | Christos Stathis | String path = "?format=json"; |
767 | 7c818c14 | Christos Stathis | |
768 | dc8cc18a | Christos KK Loverdos | GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, getApiPath(), userID, path) {
|
769 | 7c818c14 | Christos Stathis | @Override
|
770 | c8f8690d | Christos KK Loverdos | public void onSuccess(AccountResource accountResource) { |
771 | c8f8690d | Christos KK Loverdos | account = accountResource; |
772 | cdd90acb | Christos KK Loverdos | if(callback != null) { |
773 | cdd90acb | Christos KK Loverdos | callback.execute(); |
774 | cdd90acb | Christos KK Loverdos | } |
775 | c8f8690d | Christos KK Loverdos | |
776 | c8f8690d | Christos KK Loverdos | final List<String> memberIDs = new ArrayList<String>(); |
777 | c8f8690d | Christos KK Loverdos | final List<Group> groups = account.getGroups(); |
778 | c8f8690d | Christos KK Loverdos | for(Group group : groups) { |
779 | f36c8a7d | Christos KK Loverdos | memberIDs.addAll(group.getMemberIDs()); |
780 | c8f8690d | Christos KK Loverdos | } |
781 | f36c8a7d | Christos KK Loverdos | memberIDs.add(Pithos.this.getUserID()); |
782 | c8f8690d | Christos KK Loverdos | |
783 | c8f8690d | Christos KK Loverdos | final List<String> theUnknown = Pithos.this.filterUserIDsWithUnknownDisplayName(memberIDs); |
784 | cc0120ab | Christos KK Loverdos | // Initialize the user catalog
|
785 | f36c8a7d | Christos KK Loverdos | new UpdateUserCatalogs(Pithos.this, theUnknown).scheduleDeferred();
|
786 | c8f8690d | Christos KK Loverdos | LOG("Called new UpdateUserCatalogs(Pithos.this, theUnknown).scheduleDeferred();");
|
787 | 7c818c14 | Christos Stathis | } |
788 | 7c818c14 | Christos Stathis | |
789 | 7c818c14 | Christos Stathis | @Override
|
790 | 7c818c14 | Christos Stathis | public void onError(Throwable t) { |
791 | 8ddb4627 | Christos KK Loverdos | LOG("Error getting account", t);
|
792 | cdd90acb | Christos KK Loverdos | setError(t); |
793 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
794 | a7c43f26 | Christos Stathis | displayError("Error getting account: " + ((RestException) t).getHttpStatusText());
|
795 | cdd90acb | Christos KK Loverdos | } |
796 | cdd90acb | Christos KK Loverdos | else {
|
797 | a7c43f26 | Christos Stathis | displayError("System error fetching user data: " + t.getMessage());
|
798 | cdd90acb | Christos KK Loverdos | } |
799 | 7c818c14 | Christos Stathis | } |
800 | 9539e23d | Christos Stathis | |
801 | cdd90acb | Christos KK Loverdos | @Override
|
802 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
803 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
804 | cdd90acb | Christos KK Loverdos | } |
805 | 7c818c14 | Christos Stathis | }; |
806 | 728ff1e4 | Christos KK Loverdos | getAccount.setHeader(Const.X_AUTH_TOKEN, userToken); |
807 | 7c818c14 | Christos Stathis | Scheduler.get().scheduleDeferred(getAccount); |
808 | 7c818c14 | Christos Stathis | } |
809 | 7c818c14 | Christos Stathis | |
810 | 64f42c0b | Christos Stathis | public void updateStatistics() { |
811 | dc8cc18a | Christos KK Loverdos | HeadRequest<AccountResource> headAccount = new HeadRequest<AccountResource>(AccountResource.class, getApiPath(), userID, "", account) { |
812 | 64f42c0b | Christos Stathis | |
813 | cdd90acb | Christos KK Loverdos | @Override
|
814 | cdd90acb | Christos KK Loverdos | public void onSuccess(AccountResource _result) { |
815 | cdd90acb | Christos KK Loverdos | folderTreeView.showStatistics(account); |
816 | cdd90acb | Christos KK Loverdos | } |
817 | 64f42c0b | Christos Stathis | |
818 | cdd90acb | Christos KK Loverdos | @Override
|
819 | cdd90acb | Christos KK Loverdos | public void onError(Throwable t) { |
820 | 8ddb4627 | Christos KK Loverdos | LOG("Error getting account", t);
|
821 | cdd90acb | Christos KK Loverdos | setError(t); |
822 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
823 | 64f42c0b | Christos Stathis | displayError("Error getting account: " + ((RestException) t).getHttpStatusText());
|
824 | cdd90acb | Christos KK Loverdos | } |
825 | cdd90acb | Christos KK Loverdos | else {
|
826 | 64f42c0b | Christos Stathis | displayError("System error fetching user data: " + t.getMessage());
|
827 | cdd90acb | Christos KK Loverdos | } |
828 | cdd90acb | Christos KK Loverdos | } |
829 | cdd90acb | Christos KK Loverdos | |
830 | cdd90acb | Christos KK Loverdos | @Override
|
831 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
832 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
833 | cdd90acb | Christos KK Loverdos | } |
834 | cdd90acb | Christos KK Loverdos | }; |
835 | 728ff1e4 | Christos KK Loverdos | headAccount.setHeader(Const.X_AUTH_TOKEN, userToken); |
836 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headAccount); |
837 | cdd90acb | Christos KK Loverdos | } |
838 | cdd90acb | Christos KK Loverdos | |
839 | cdd90acb | Christos KK Loverdos | protected void createHomeContainer(final AccountResource _account, final Command callback) { |
840 | fa68c84d | Christos KK Loverdos | String path = "/" + Const.HOME_CONTAINER; |
841 | dc8cc18a | Christos KK Loverdos | PutRequest createPithos = new PutRequest(getApiPath(), getUserID(), path) {
|
842 | b8822fe7 | Christos Stathis | @Override
|
843 | ebead1b5 | Christos Stathis | public void onSuccess(Resource result) { |
844 | cdd90acb | Christos KK Loverdos | if(!_account.hasTrashContainer()) {
|
845 | cdd90acb | Christos KK Loverdos | createTrashContainer(callback); |
846 | cdd90acb | Christos KK Loverdos | } |
847 | cdd90acb | Christos KK Loverdos | else {
|
848 | cdd90acb | Christos KK Loverdos | fetchAccount(callback); |
849 | cdd90acb | Christos KK Loverdos | } |
850 | b8822fe7 | Christos Stathis | } |
851 | b8822fe7 | Christos Stathis | |
852 | b8822fe7 | Christos Stathis | @Override
|
853 | b8822fe7 | Christos Stathis | public void onError(Throwable t) { |
854 | 8ddb4627 | Christos KK Loverdos | LOG("Error creating pithos", t);
|
855 | cdd90acb | Christos KK Loverdos | setError(t); |
856 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
857 | a7c43f26 | Christos Stathis | displayError("Error creating pithos: " + ((RestException) t).getHttpStatusText());
|
858 | cdd90acb | Christos KK Loverdos | } |
859 | cdd90acb | Christos KK Loverdos | else {
|
860 | a7c43f26 | Christos Stathis | displayError("System error Error creating pithos: " + t.getMessage());
|
861 | cdd90acb | Christos KK Loverdos | } |
862 | b8822fe7 | Christos Stathis | } |
863 | 9539e23d | Christos Stathis | |
864 | cdd90acb | Christos KK Loverdos | @Override
|
865 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
866 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
867 | cdd90acb | Christos KK Loverdos | } |
868 | b8822fe7 | Christos Stathis | }; |
869 | 728ff1e4 | Christos KK Loverdos | createPithos.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
870 | b8822fe7 | Christos Stathis | Scheduler.get().scheduleDeferred(createPithos); |
871 | b8822fe7 | Christos Stathis | } |
872 | b8822fe7 | Christos Stathis | |
873 | 64f42c0b | Christos Stathis | protected void createTrashContainer(final Command callback) { |
874 | fa68c84d | Christos KK Loverdos | String path = "/" + Const.TRASH_CONTAINER; |
875 | dc8cc18a | Christos KK Loverdos | PutRequest createPithos = new PutRequest(getApiPath(), getUserID(), path) {
|
876 | 7b28ae07 | Christos Stathis | @Override
|
877 | ebead1b5 | Christos Stathis | public void onSuccess(Resource result) { |
878 | cdd90acb | Christos KK Loverdos | fetchAccount(callback); |
879 | 7b28ae07 | Christos Stathis | } |
880 | 7b28ae07 | Christos Stathis | |
881 | 7b28ae07 | Christos Stathis | @Override
|
882 | 7b28ae07 | Christos Stathis | public void onError(Throwable t) { |
883 | 8ddb4627 | Christos KK Loverdos | LOG("Error creating pithos", t);
|
884 | cdd90acb | Christos KK Loverdos | setError(t); |
885 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
886 | 7b28ae07 | Christos Stathis | displayError("Error creating pithos: " + ((RestException) t).getHttpStatusText());
|
887 | cdd90acb | Christos KK Loverdos | } |
888 | cdd90acb | Christos KK Loverdos | else {
|
889 | 7b28ae07 | Christos Stathis | displayError("System error Error creating pithos: " + t.getMessage());
|
890 | cdd90acb | Christos KK Loverdos | } |
891 | 7b28ae07 | Christos Stathis | } |
892 | 9539e23d | Christos Stathis | |
893 | cdd90acb | Christos KK Loverdos | @Override
|
894 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
895 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
896 | cdd90acb | Christos KK Loverdos | } |
897 | 7b28ae07 | Christos Stathis | }; |
898 | 728ff1e4 | Christos KK Loverdos | createPithos.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
899 | 7b28ae07 | Christos Stathis | Scheduler.get().scheduleDeferred(createPithos); |
900 | 7b28ae07 | Christos Stathis | } |
901 | 7b28ae07 | Christos Stathis | |
902 | 7b28ae07 | Christos Stathis | /**
|
903 | cdd90acb | Christos KK Loverdos | * Creates an HTML fragment that places an image & caption together, for use
|
904 | cdd90acb | Christos KK Loverdos | * in a group header.
|
905 | cdd90acb | Christos KK Loverdos | *
|
906 | cdd90acb | Christos KK Loverdos | * @param imageProto an image prototype for an image
|
907 | cdd90acb | Christos KK Loverdos | * @param caption the group caption
|
908 | cdd90acb | Christos KK Loverdos | * @return the header HTML fragment
|
909 | cdd90acb | Christos KK Loverdos | */
|
910 | cdd90acb | Christos KK Loverdos | private String createHeaderHTML(AbstractImagePrototype imageProto, String caption) { |
911 | cdd90acb | Christos KK Loverdos | String captionHTML = "<table class='caption' cellpadding='0' " |
912 | cdd90acb | Christos KK Loverdos | + "cellspacing='0'>" + "<tr><td class='lcaption'>" + imageProto.getHTML() |
913 | cdd90acb | Christos KK Loverdos | + "</td><td id =" + caption + " class='rcaption'><b style='white-space:nowrap'> " |
914 | cdd90acb | Christos KK Loverdos | + caption + "</b></td></tr></table>";
|
915 | cdd90acb | Christos KK Loverdos | return captionHTML;
|
916 | cdd90acb | Christos KK Loverdos | } |
917 | cdd90acb | Christos KK Loverdos | |
918 | cdd90acb | Christos KK Loverdos | protected void onWindowResized(int height) { |
919 | cdd90acb | Christos KK Loverdos | // Adjust the split panel to take up the available room in the window.
|
920 | cdd90acb | Christos KK Loverdos | int newHeight = height - splitPanel.getAbsoluteTop() - 153; |
921 | cdd90acb | Christos KK Loverdos | if(newHeight < 1) { |
922 | cdd90acb | Christos KK Loverdos | newHeight = 1;
|
923 | cdd90acb | Christos KK Loverdos | } |
924 | cdd90acb | Christos KK Loverdos | splitPanel.setHeight("" + newHeight);
|
925 | cdd90acb | Christos KK Loverdos | inner.setHeight("" + newHeight);
|
926 | cdd90acb | Christos KK Loverdos | } |
927 | cdd90acb | Christos KK Loverdos | |
928 | cdd90acb | Christos KK Loverdos | native boolean isCloudbarReady()/*-{ |
929 | cdd90acb | Christos KK Loverdos | if ($wnd.$("div.cloudbar") && $wnd.$("div.cloudbar").height() > 0)
|
930 | cdd90acb | Christos KK Loverdos | return true;
|
931 | cdd90acb | Christos KK Loverdos | return false;
|
932 | cdd90acb | Christos KK Loverdos | }-*/;
|
933 | cdd90acb | Christos KK Loverdos | |
934 | cdd90acb | Christos KK Loverdos | @Override
|
935 | cdd90acb | Christos KK Loverdos | public void onResize(ResizeEvent event) { |
936 | cdd90acb | Christos KK Loverdos | int height = event.getHeight();
|
937 | cdd90acb | Christos KK Loverdos | onWindowResized(height); |
938 | cdd90acb | Christos KK Loverdos | } |
939 | cdd90acb | Christos KK Loverdos | |
940 | cdd90acb | Christos KK Loverdos | /**
|
941 | cdd90acb | Christos KK Loverdos | * Display an error message.
|
942 | cdd90acb | Christos KK Loverdos | *
|
943 | cdd90acb | Christos KK Loverdos | * @param msg the message to display
|
944 | cdd90acb | Christos KK Loverdos | */
|
945 | cdd90acb | Christos KK Loverdos | public void displayError(String msg) { |
946 | cdd90acb | Christos KK Loverdos | messagePanel.displayError(msg); |
947 | cdd90acb | Christos KK Loverdos | onWindowResized(Window.getClientHeight());
|
948 | cdd90acb | Christos KK Loverdos | } |
949 | cdd90acb | Christos KK Loverdos | |
950 | cdd90acb | Christos KK Loverdos | /**
|
951 | cdd90acb | Christos KK Loverdos | * Display a warning message.
|
952 | cdd90acb | Christos KK Loverdos | *
|
953 | cdd90acb | Christos KK Loverdos | * @param msg the message to display
|
954 | cdd90acb | Christos KK Loverdos | */
|
955 | cdd90acb | Christos KK Loverdos | public void displayWarning(String msg) { |
956 | cdd90acb | Christos KK Loverdos | messagePanel.displayWarning(msg); |
957 | cdd90acb | Christos KK Loverdos | onWindowResized(Window.getClientHeight());
|
958 | cdd90acb | Christos KK Loverdos | } |
959 | cdd90acb | Christos KK Loverdos | |
960 | cdd90acb | Christos KK Loverdos | /**
|
961 | cdd90acb | Christos KK Loverdos | * Display an informational message.
|
962 | cdd90acb | Christos KK Loverdos | *
|
963 | cdd90acb | Christos KK Loverdos | * @param msg the message to display
|
964 | cdd90acb | Christos KK Loverdos | */
|
965 | cdd90acb | Christos KK Loverdos | public void displayInformation(String msg) { |
966 | cdd90acb | Christos KK Loverdos | messagePanel.displayInformation(msg); |
967 | cdd90acb | Christos KK Loverdos | onWindowResized(Window.getClientHeight());
|
968 | cdd90acb | Christos KK Loverdos | } |
969 | cdd90acb | Christos KK Loverdos | |
970 | cdd90acb | Christos KK Loverdos | /**
|
971 | cdd90acb | Christos KK Loverdos | * Retrieve the fileList.
|
972 | cdd90acb | Christos KK Loverdos | *
|
973 | cdd90acb | Christos KK Loverdos | * @return the fileList
|
974 | cdd90acb | Christos KK Loverdos | */
|
975 | cdd90acb | Christos KK Loverdos | public FileList getFileList() {
|
976 | cdd90acb | Christos KK Loverdos | return fileList;
|
977 | cdd90acb | Christos KK Loverdos | } |
978 | cdd90acb | Christos KK Loverdos | |
979 | cdd90acb | Christos KK Loverdos | /**
|
980 | cdd90acb | Christos KK Loverdos | * Retrieve the topPanel.
|
981 | cdd90acb | Christos KK Loverdos | *
|
982 | cdd90acb | Christos KK Loverdos | * @return the topPanel
|
983 | cdd90acb | Christos KK Loverdos | */
|
984 | cdd90acb | Christos KK Loverdos | TopPanel getTopPanel() { |
985 | cdd90acb | Christos KK Loverdos | return topPanel;
|
986 | cdd90acb | Christos KK Loverdos | } |
987 | cdd90acb | Christos KK Loverdos | |
988 | cdd90acb | Christos KK Loverdos | /**
|
989 | cdd90acb | Christos KK Loverdos | * Retrieve the clipboard.
|
990 | cdd90acb | Christos KK Loverdos | *
|
991 | cdd90acb | Christos KK Loverdos | * @return the clipboard
|
992 | cdd90acb | Christos KK Loverdos | */
|
993 | cdd90acb | Christos KK Loverdos | public Clipboard getClipboard() { |
994 | cdd90acb | Christos KK Loverdos | return clipboard;
|
995 | cdd90acb | Christos KK Loverdos | } |
996 | cdd90acb | Christos KK Loverdos | |
997 | cdd90acb | Christos KK Loverdos | public StatusPanel getStatusPanel() {
|
998 | cdd90acb | Christos KK Loverdos | return statusPanel;
|
999 | cdd90acb | Christos KK Loverdos | } |
1000 | cdd90acb | Christos KK Loverdos | |
1001 | cc0120ab | Christos KK Loverdos | public String getUserToken() { |
1002 | cc0120ab | Christos KK Loverdos | return userToken;
|
1003 | cdd90acb | Christos KK Loverdos | } |
1004 | cdd90acb | Christos KK Loverdos | |
1005 | cdd90acb | Christos KK Loverdos | public static native void preventIESelection() /*-{ |
1006 | cdd90acb | Christos KK Loverdos | $doc.body.onselectstart = function () {
|
1007 | cdd90acb | Christos KK Loverdos | return false;
|
1008 | cdd90acb | Christos KK Loverdos | };
|
1009 | cdd90acb | Christos KK Loverdos | }-*/;
|
1010 | cdd90acb | Christos KK Loverdos | |
1011 | cdd90acb | Christos KK Loverdos | public static native void enableIESelection() /*-{ |
1012 | cdd90acb | Christos KK Loverdos | if ($doc.body.onselectstart != null)
|
1013 | cdd90acb | Christos KK Loverdos | $doc.body.onselectstart = null;
|
1014 | cdd90acb | Christos KK Loverdos | }-*/;
|
1015 | cdd90acb | Christos KK Loverdos | |
1016 | cdd90acb | Christos KK Loverdos | /**
|
1017 | cdd90acb | Christos KK Loverdos | * @return the absolute path of the API root URL
|
1018 | cdd90acb | Christos KK Loverdos | */
|
1019 | cdd90acb | Christos KK Loverdos | public String getApiPath() { |
1020 | cdd90acb | Christos KK Loverdos | Configuration conf = (Configuration) GWT.create(Configuration.class); |
1021 | cdd90acb | Christos KK Loverdos | return conf.apiPath();
|
1022 | cdd90acb | Christos KK Loverdos | } |
1023 | cdd90acb | Christos KK Loverdos | |
1024 | cdd90acb | Christos KK Loverdos | /**
|
1025 | cdd90acb | Christos KK Loverdos | * History support for folder navigation
|
1026 | cdd90acb | Christos KK Loverdos | * adds a new browser history entry
|
1027 | cdd90acb | Christos KK Loverdos | *
|
1028 | cdd90acb | Christos KK Loverdos | * @param key
|
1029 | cdd90acb | Christos KK Loverdos | */
|
1030 | cdd90acb | Christos KK Loverdos | public void updateHistory(String key) { |
1031 | a57faaf0 | Christos Stathis | // Replace any whitespace of the initial string to "+"
|
1032 | a57faaf0 | Christos Stathis | // String result = key.replaceAll("\\s","+");
|
1033 | a57faaf0 | Christos Stathis | // Add a new browser history entry.
|
1034 | a57faaf0 | Christos Stathis | // History.newItem(result);
|
1035 | cdd90acb | Christos KK Loverdos | History.newItem(key); |
1036 | cdd90acb | Christos KK Loverdos | } |
1037 | a57faaf0 | Christos Stathis | |
1038 | 2c801ad7 | Christos Stathis | public void deleteFolder(final Folder folder, final Command callback) { |
1039 | cdd90acb | Christos KK Loverdos | final PleaseWaitPopup pwp = new PleaseWaitPopup(); |
1040 | cdd90acb | Christos KK Loverdos | pwp.center(); |
1041 | f6c9957e | Christos Stathis | String path = "/" + folder.getContainer() + "/" + folder.getPrefix() + "?delimiter=/" + "&t=" + System.currentTimeMillis(); |
1042 | dc8cc18a | Christos KK Loverdos | DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), folder.getOwnerID(), path) {
|
1043 | cdd90acb | Christos KK Loverdos | |
1044 | cdd90acb | Christos KK Loverdos | @Override
|
1045 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1046 | cdd90acb | Christos KK Loverdos | pwp.hide(); |
1047 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1048 | cdd90acb | Christos KK Loverdos | } |
1049 | cdd90acb | Christos KK Loverdos | |
1050 | cdd90acb | Christos KK Loverdos | @Override
|
1051 | cdd90acb | Christos KK Loverdos | public void onSuccess(Resource result) { |
1052 | f6c9957e | Christos Stathis | updateFolder(folder.getParent(), true, new Command() { |
1053 | cdd90acb | Christos KK Loverdos | |
1054 | cdd90acb | Christos KK Loverdos | @Override
|
1055 | cdd90acb | Christos KK Loverdos | public void execute() { |
1056 | cdd90acb | Christos KK Loverdos | folderTreeSelectionModel.setSelected(folder.getParent(), true);
|
1057 | cdd90acb | Christos KK Loverdos | updateStatistics(); |
1058 | cdd90acb | Christos KK Loverdos | if(callback != null) { |
1059 | cdd90acb | Christos KK Loverdos | callback.execute(); |
1060 | cdd90acb | Christos KK Loverdos | } |
1061 | cdd90acb | Christos KK Loverdos | pwp.hide(); |
1062 | cdd90acb | Christos KK Loverdos | } |
1063 | cdd90acb | Christos KK Loverdos | }, true);
|
1064 | cdd90acb | Christos KK Loverdos | } |
1065 | cdd90acb | Christos KK Loverdos | |
1066 | cdd90acb | Christos KK Loverdos | @Override
|
1067 | cdd90acb | Christos KK Loverdos | public void onError(Throwable t) { |
1068 | 8ddb4627 | Christos KK Loverdos | LOG(t); |
1069 | cdd90acb | Christos KK Loverdos | setError(t); |
1070 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
1071 | cdd90acb | Christos KK Loverdos | if(((RestException) t).getHttpStatusCode() != Response.SC_NOT_FOUND) {
|
1072 | cdd90acb | Christos KK Loverdos | displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
|
1073 | cdd90acb | Christos KK Loverdos | } |
1074 | cdd90acb | Christos KK Loverdos | else {
|
1075 | cdd90acb | Christos KK Loverdos | onSuccess(null);
|
1076 | cdd90acb | Christos KK Loverdos | } |
1077 | 602ebeb4 | Christos Stathis | } |
1078 | cdd90acb | Christos KK Loverdos | else {
|
1079 | f6c9957e | Christos Stathis | displayError("System error unable to delete folder: " + t.getMessage());
|
1080 | cdd90acb | Christos KK Loverdos | } |
1081 | cdd90acb | Christos KK Loverdos | pwp.hide(); |
1082 | cdd90acb | Christos KK Loverdos | } |
1083 | cdd90acb | Christos KK Loverdos | }; |
1084 | 728ff1e4 | Christos KK Loverdos | deleteFolder.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1085 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(deleteFolder); |
1086 | 602ebeb4 | Christos Stathis | } |
1087 | fad48f0d | Christos Stathis | |
1088 | fad48f0d | Christos Stathis | public FolderTreeView getFolderTreeView() {
|
1089 | fad48f0d | Christos Stathis | return folderTreeView;
|
1090 | fad48f0d | Christos Stathis | } |
1091 | d6be39da | Christos Stathis | |
1092 | 63ee965c | Christos Stathis | public void copyFiles(final Iterator<File> iter, final String targetUsername, final String targetUri, final Command callback) { |
1093 | cdd90acb | Christos KK Loverdos | if(iter.hasNext()) {
|
1094 | d6be39da | Christos Stathis | File file = iter.next();
|
1095 | b51c628b | Christos Stathis | String path = targetUri + "/" + file.getName(); |
1096 | dc8cc18a | Christos KK Loverdos | PutRequest copyFile = new PutRequest(getApiPath(), targetUsername, path) {
|
1097 | d6be39da | Christos Stathis | @Override
|
1098 | ebead1b5 | Christos Stathis | public void onSuccess(Resource result) { |
1099 | 63ee965c | Christos Stathis | copyFiles(iter, targetUsername, targetUri, callback); |
1100 | d6be39da | Christos Stathis | } |
1101 | d6be39da | Christos Stathis | |
1102 | d6be39da | Christos Stathis | @Override
|
1103 | d6be39da | Christos Stathis | public void onError(Throwable t) { |
1104 | 8ddb4627 | Christos KK Loverdos | LOG(t); |
1105 | cdd90acb | Christos KK Loverdos | setError(t); |
1106 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
1107 | a7c43f26 | Christos Stathis | displayError("Unable to copy file: " + ((RestException) t).getHttpStatusText());
|
1108 | d6be39da | Christos Stathis | } |
1109 | cdd90acb | Christos KK Loverdos | else {
|
1110 | cdd90acb | Christos KK Loverdos | displayError("System error unable to copy file: " + t.getMessage());
|
1111 | cdd90acb | Christos KK Loverdos | } |
1112 | d6be39da | Christos Stathis | } |
1113 | 9539e23d | Christos Stathis | |
1114 | cdd90acb | Christos KK Loverdos | @Override
|
1115 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1116 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1117 | cdd90acb | Christos KK Loverdos | } |
1118 | d6be39da | Christos Stathis | }; |
1119 | 728ff1e4 | Christos KK Loverdos | copyFile.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1120 | fa68c84d | Christos KK Loverdos | copyFile.setHeader(Const.X_COPY_FROM, URL.encodePathSegment(file.getUri()));
|
1121 | cde22209 | Christos KK Loverdos | if(!file.getOwnerID().equals(targetUsername)) {
|
1122 | fa68c84d | Christos KK Loverdos | copyFile.setHeader(Const.X_SOURCE_ACCOUNT, URL.encodePathSegment(file.getOwnerID()));
|
1123 | cdd90acb | Christos KK Loverdos | } |
1124 | fa68c84d | Christos KK Loverdos | copyFile.setHeader(Const.CONTENT_TYPE, file.getContentType()); |
1125 | d6be39da | Christos Stathis | Scheduler.get().scheduleDeferred(copyFile); |
1126 | d6be39da | Christos Stathis | } |
1127 | cdd90acb | Christos KK Loverdos | else if(callback != null) { |
1128 | d6be39da | Christos Stathis | callback.execute(); |
1129 | d6be39da | Christos Stathis | } |
1130 | d6be39da | Christos Stathis | } |
1131 | d6be39da | Christos Stathis | |
1132 | d58c0da5 | Christos Stathis | public void copyFolder(final Folder f, final String targetUsername, final String targetUri, boolean move, final Command callback) { |
1133 | d58c0da5 | Christos Stathis | String path = targetUri + "?delimiter=/"; |
1134 | dc8cc18a | Christos KK Loverdos | PutRequest copyFolder = new PutRequest(getApiPath(), targetUsername, path) {
|
1135 | d6be39da | Christos Stathis | @Override
|
1136 | ebead1b5 | Christos Stathis | public void onSuccess(Resource result) { |
1137 | cdd90acb | Christos KK Loverdos | if(callback != null) { |
1138 | cdd90acb | Christos KK Loverdos | callback.execute(); |
1139 | cdd90acb | Christos KK Loverdos | } |
1140 | d6be39da | Christos Stathis | } |
1141 | d6be39da | Christos Stathis | |
1142 | d6be39da | Christos Stathis | @Override
|
1143 | d6be39da | Christos Stathis | public void onError(Throwable t) { |
1144 | 8ddb4627 | Christos KK Loverdos | LOG(t); |
1145 | cdd90acb | Christos KK Loverdos | setError(t); |
1146 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
1147 | ff32989e | Christos Stathis | displayError("Unable to copy folder: " + ((RestException) t).getHttpStatusText());
|
1148 | d6be39da | Christos Stathis | } |
1149 | cdd90acb | Christos KK Loverdos | else {
|
1150 | ff32989e | Christos Stathis | displayError("System error copying folder: " + t.getMessage());
|
1151 | cdd90acb | Christos KK Loverdos | } |
1152 | d6be39da | Christos Stathis | } |
1153 | 9539e23d | Christos Stathis | |
1154 | cdd90acb | Christos KK Loverdos | @Override
|
1155 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1156 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1157 | cdd90acb | Christos KK Loverdos | } |
1158 | d6be39da | Christos Stathis | }; |
1159 | 728ff1e4 | Christos KK Loverdos | copyFolder.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1160 | fa68c84d | Christos KK Loverdos | copyFolder.setHeader(Const.ACCEPT, "*/*");
|
1161 | fa68c84d | Christos KK Loverdos | copyFolder.setHeader(Const.CONTENT_LENGTH, "0");
|
1162 | fa68c84d | Christos KK Loverdos | copyFolder.setHeader(Const.CONTENT_TYPE, "application/directory");
|
1163 | 4eaecbac | Christos KK Loverdos | if(!f.getOwnerID().equals(targetUsername)) {
|
1164 | fa68c84d | Christos KK Loverdos | copyFolder.setHeader(Const.X_SOURCE_ACCOUNT, f.getOwnerID()); |
1165 | cdd90acb | Christos KK Loverdos | } |
1166 | cdd90acb | Christos KK Loverdos | if(move) {
|
1167 | fa68c84d | Christos KK Loverdos | copyFolder.setHeader(Const.X_MOVE_FROM, URL.encodePathSegment(f.getUri()));
|
1168 | cdd90acb | Christos KK Loverdos | } |
1169 | cdd90acb | Christos KK Loverdos | else {
|
1170 | fa68c84d | Christos KK Loverdos | copyFolder.setHeader(Const.X_COPY_FROM, URL.encodePathSegment(f.getUri()));
|
1171 | cdd90acb | Christos KK Loverdos | } |
1172 | ff32989e | Christos Stathis | Scheduler.get().scheduleDeferred(copyFolder); |
1173 | d6be39da | Christos Stathis | } |
1174 | cdd90acb | Christos KK Loverdos | |
1175 | 7811b9d1 | Christos Stathis | public void addSelectionModel(@SuppressWarnings("rawtypes") SingleSelectionModel model) { |
1176 | cdd90acb | Christos KK Loverdos | selectionModels.add(model); |
1177 | cdd90acb | Christos KK Loverdos | } |
1178 | cdd90acb | Christos KK Loverdos | |
1179 | cdd90acb | Christos KK Loverdos | public OtherSharedTreeView getOtherSharedTreeView() {
|
1180 | cdd90acb | Christos KK Loverdos | return otherSharedTreeView;
|
1181 | cdd90acb | Christos KK Loverdos | } |
1182 | cdd90acb | Christos KK Loverdos | |
1183 | cdd90acb | Christos KK Loverdos | public void updateTrash(boolean showFiles, Command callback) { |
1184 | cdd90acb | Christos KK Loverdos | updateFolder(trash, showFiles, callback, true);
|
1185 | cdd90acb | Christos KK Loverdos | } |
1186 | cdd90acb | Christos KK Loverdos | |
1187 | cdd90acb | Christos KK Loverdos | public void updateGroupsNode() { |
1188 | cdd90acb | Christos KK Loverdos | groupTreeView.updateGroupNode(null);
|
1189 | cdd90acb | Christos KK Loverdos | } |
1190 | cdd90acb | Christos KK Loverdos | |
1191 | dc8cc18a | Christos KK Loverdos | public Group addGroup(String groupname) { |
1192 | dc8cc18a | Christos KK Loverdos | Group newGroup = new Group(groupname); |
1193 | dc8cc18a | Christos KK Loverdos | account.addGroup(newGroup); |
1194 | cdd90acb | Christos KK Loverdos | groupTreeView.updateGroupNode(null);
|
1195 | dc8cc18a | Christos KK Loverdos | return newGroup;
|
1196 | cdd90acb | Christos KK Loverdos | } |
1197 | cdd90acb | Christos KK Loverdos | |
1198 | cdd90acb | Christos KK Loverdos | public void removeGroup(Group group) { |
1199 | cdd90acb | Christos KK Loverdos | account.removeGroup(group); |
1200 | cdd90acb | Christos KK Loverdos | updateGroupsNode(); |
1201 | cdd90acb | Christos KK Loverdos | } |
1202 | cdd90acb | Christos KK Loverdos | |
1203 | cdd90acb | Christos KK Loverdos | public TreeView getSelectedTree() {
|
1204 | cdd90acb | Christos KK Loverdos | return selectedTree;
|
1205 | cdd90acb | Christos KK Loverdos | } |
1206 | cdd90acb | Christos KK Loverdos | |
1207 | cdd90acb | Christos KK Loverdos | public void setSelectedTree(TreeView selected) { |
1208 | cdd90acb | Christos KK Loverdos | selectedTree = selected; |
1209 | cdd90acb | Christos KK Loverdos | } |
1210 | cdd90acb | Christos KK Loverdos | |
1211 | cdd90acb | Christos KK Loverdos | public Folder getSelection() {
|
1212 | cdd90acb | Christos KK Loverdos | if(selectedTree != null) { |
1213 | cdd90acb | Christos KK Loverdos | return selectedTree.getSelection();
|
1214 | cdd90acb | Christos KK Loverdos | } |
1215 | cdd90acb | Christos KK Loverdos | return null; |
1216 | cdd90acb | Christos KK Loverdos | } |
1217 | cdd90acb | Christos KK Loverdos | |
1218 | cdd90acb | Christos KK Loverdos | public void showFolderStatistics(int folderFileCount) { |
1219 | cdd90acb | Christos KK Loverdos | numOfFiles.setHTML(String.valueOf(folderFileCount));
|
1220 | cdd90acb | Christos KK Loverdos | } |
1221 | cdd90acb | Christos KK Loverdos | |
1222 | cdd90acb | Christos KK Loverdos | public GroupTreeView getGroupTreeView() {
|
1223 | cdd90acb | Christos KK Loverdos | return groupTreeView;
|
1224 | cdd90acb | Christos KK Loverdos | } |
1225 | cdd90acb | Christos KK Loverdos | |
1226 | cdd90acb | Christos KK Loverdos | public void sessionExpired() { |
1227 | cdd90acb | Christos KK Loverdos | new SessionExpiredDialog(this).center(); |
1228 | cdd90acb | Christos KK Loverdos | } |
1229 | cdd90acb | Christos KK Loverdos | |
1230 | cdd90acb | Christos KK Loverdos | public void updateRootFolder(Command callback) { |
1231 | cdd90acb | Christos KK Loverdos | updateFolder(account.getPithos(), false, callback, true); |
1232 | cdd90acb | Christos KK Loverdos | } |
1233 | cdd90acb | Christos KK Loverdos | |
1234 | cdd90acb | Christos KK Loverdos | void createMySharedTree() {
|
1235 | 86432004 | Christos KK Loverdos | LOG("Pithos::createMySharedTree()");
|
1236 | cdd90acb | Christos KK Loverdos | mysharedTreeSelectionModel = new SingleSelectionModel<Folder>(); |
1237 | cdd90acb | Christos KK Loverdos | mysharedTreeSelectionModel.addSelectionChangeHandler(new Handler() { |
1238 | cdd90acb | Christos KK Loverdos | @Override
|
1239 | cdd90acb | Christos KK Loverdos | public void onSelectionChange(SelectionChangeEvent event) { |
1240 | cdd90acb | Christos KK Loverdos | if(mysharedTreeSelectionModel.getSelectedObject() != null) { |
1241 | cdd90acb | Christos KK Loverdos | deselectOthers(mysharedTreeView, mysharedTreeSelectionModel); |
1242 | cdd90acb | Christos KK Loverdos | upload.setEnabled(false);
|
1243 | cdd90acb | Christos KK Loverdos | disableUploadArea(); |
1244 | cdd90acb | Christos KK Loverdos | updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
|
1245 | cdd90acb | Christos KK Loverdos | showRelevantToolbarButtons(); |
1246 | cdd90acb | Christos KK Loverdos | } |
1247 | cdd90acb | Christos KK Loverdos | else {
|
1248 | cdd90acb | Christos KK Loverdos | if(getSelectedTree().equals(mysharedTreeView)) {
|
1249 | cdd90acb | Christos KK Loverdos | setSelectedTree(null);
|
1250 | cdd90acb | Christos KK Loverdos | } |
1251 | cdd90acb | Christos KK Loverdos | if(getSelectedTree() == null) { |
1252 | cdd90acb | Christos KK Loverdos | showRelevantToolbarButtons(); |
1253 | cdd90acb | Christos KK Loverdos | } |
1254 | cdd90acb | Christos KK Loverdos | } |
1255 | cdd90acb | Christos KK Loverdos | } |
1256 | cdd90acb | Christos KK Loverdos | }); |
1257 | cdd90acb | Christos KK Loverdos | selectionModels.add(mysharedTreeSelectionModel); |
1258 | cdd90acb | Christos KK Loverdos | mysharedTreeViewModel = new MysharedTreeViewModel(Pithos.this, mysharedTreeSelectionModel);
|
1259 | cdd90acb | Christos KK Loverdos | mysharedTreeViewModel.initialize(new Command() {
|
1260 | cdd90acb | Christos KK Loverdos | |
1261 | cdd90acb | Christos KK Loverdos | @Override
|
1262 | cdd90acb | Christos KK Loverdos | public void execute() { |
1263 | cdd90acb | Christos KK Loverdos | mysharedTreeView = new MysharedTreeView(mysharedTreeViewModel);
|
1264 | cdd90acb | Christos KK Loverdos | trees.insert(mysharedTreeView, 2);
|
1265 | cdd90acb | Christos KK Loverdos | treeViews.add(mysharedTreeView); |
1266 | cdd90acb | Christos KK Loverdos | createOtherSharedTree(); |
1267 | cdd90acb | Christos KK Loverdos | } |
1268 | cdd90acb | Christos KK Loverdos | }); |
1269 | cdd90acb | Christos KK Loverdos | } |
1270 | cdd90acb | Christos KK Loverdos | |
1271 | cdd90acb | Christos KK Loverdos | void createOtherSharedTree() {
|
1272 | 86432004 | Christos KK Loverdos | LOG("Pithos::createOtherSharedTree()");
|
1273 | cdd90acb | Christos KK Loverdos | otherSharedTreeSelectionModel = new SingleSelectionModel<Folder>(); |
1274 | cdd90acb | Christos KK Loverdos | otherSharedTreeSelectionModel.addSelectionChangeHandler(new Handler() { |
1275 | cdd90acb | Christos KK Loverdos | @Override
|
1276 | cdd90acb | Christos KK Loverdos | public void onSelectionChange(SelectionChangeEvent event) { |
1277 | cdd90acb | Christos KK Loverdos | if(otherSharedTreeSelectionModel.getSelectedObject() != null) { |
1278 | cdd90acb | Christos KK Loverdos | deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel); |
1279 | cdd90acb | Christos KK Loverdos | applyPermissions(otherSharedTreeSelectionModel.getSelectedObject()); |
1280 | cdd90acb | Christos KK Loverdos | updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true, null); |
1281 | cdd90acb | Christos KK Loverdos | showRelevantToolbarButtons(); |
1282 | cdd90acb | Christos KK Loverdos | } |
1283 | cdd90acb | Christos KK Loverdos | else {
|
1284 | cdd90acb | Christos KK Loverdos | if(getSelectedTree().equals(otherSharedTreeView)) {
|
1285 | cdd90acb | Christos KK Loverdos | setSelectedTree(null);
|
1286 | cdd90acb | Christos KK Loverdos | } |
1287 | cdd90acb | Christos KK Loverdos | if(getSelectedTree() == null) { |
1288 | cdd90acb | Christos KK Loverdos | showRelevantToolbarButtons(); |
1289 | cdd90acb | Christos KK Loverdos | } |
1290 | cdd90acb | Christos KK Loverdos | } |
1291 | cdd90acb | Christos KK Loverdos | } |
1292 | cdd90acb | Christos KK Loverdos | }); |
1293 | cdd90acb | Christos KK Loverdos | selectionModels.add(otherSharedTreeSelectionModel); |
1294 | cdd90acb | Christos KK Loverdos | otherSharedTreeViewModel = new OtherSharedTreeViewModel(Pithos.this, otherSharedTreeSelectionModel);
|
1295 | 86432004 | Christos KK Loverdos | LOG("Pithos::createOtherSharedTree(), initializing otherSharedTreeViewModel with a callback");
|
1296 | cdd90acb | Christos KK Loverdos | otherSharedTreeViewModel.initialize(new Command() {
|
1297 | cdd90acb | Christos KK Loverdos | @Override
|
1298 | cdd90acb | Christos KK Loverdos | public void execute() { |
1299 | cdd90acb | Christos KK Loverdos | otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
|
1300 | cdd90acb | Christos KK Loverdos | trees.insert(otherSharedTreeView, 1);
|
1301 | cdd90acb | Christos KK Loverdos | treeViews.add(otherSharedTreeView); |
1302 | cdd90acb | Christos KK Loverdos | scheduleResfresh(); |
1303 | cdd90acb | Christos KK Loverdos | } |
1304 | cdd90acb | Christos KK Loverdos | }); |
1305 | cdd90acb | Christos KK Loverdos | } |
1306 | cdd90acb | Christos KK Loverdos | |
1307 | cdd90acb | Christos KK Loverdos | public String getErrorData() { |
1308 | 86432004 | Christos KK Loverdos | final StringBuilder sb = new StringBuilder(); |
1309 | 86432004 | Christos KK Loverdos | final String NL = Const.NL; |
1310 | 86432004 | Christos KK Loverdos | Throwable t = this.error; |
1311 | 86432004 | Christos KK Loverdos | while(t != null) { |
1312 | 86432004 | Christos KK Loverdos | sb.append(t.toString()); |
1313 | 86432004 | Christos KK Loverdos | sb.append(NL); |
1314 | 86432004 | Christos KK Loverdos | StackTraceElement[] traces = t.getStackTrace(); |
1315 | 86432004 | Christos KK Loverdos | for(StackTraceElement trace : traces) { |
1316 | 86432004 | Christos KK Loverdos | sb.append(" [");
|
1317 | 86432004 | Christos KK Loverdos | sb.append(trace.getClassName()); |
1318 | 86432004 | Christos KK Loverdos | sb.append("::");
|
1319 | 86432004 | Christos KK Loverdos | sb.append(trace.getMethodName()); |
1320 | 86432004 | Christos KK Loverdos | sb.append("() at ");
|
1321 | 86432004 | Christos KK Loverdos | sb.append(trace.getFileName()); |
1322 | 86432004 | Christos KK Loverdos | sb.append(":");
|
1323 | 86432004 | Christos KK Loverdos | sb.append(trace.getLineNumber()); |
1324 | 86432004 | Christos KK Loverdos | sb.append("]");
|
1325 | 86432004 | Christos KK Loverdos | sb.append(NL); |
1326 | 86432004 | Christos KK Loverdos | } |
1327 | 86432004 | Christos KK Loverdos | t = t.getCause(); |
1328 | cdd90acb | Christos KK Loverdos | } |
1329 | 86432004 | Christos KK Loverdos | |
1330 | 86432004 | Christos KK Loverdos | return sb.toString();
|
1331 | cdd90acb | Christos KK Loverdos | } |
1332 | cdd90acb | Christos KK Loverdos | |
1333 | cdd90acb | Christos KK Loverdos | public void setError(Throwable t) { |
1334 | cdd90acb | Christos KK Loverdos | error = t; |
1335 | e0a0c6ea | Christos KK Loverdos | LOG(t); |
1336 | cdd90acb | Christos KK Loverdos | } |
1337 | cdd90acb | Christos KK Loverdos | |
1338 | cdd90acb | Christos KK Loverdos | public void showRelevantToolbarButtons() { |
1339 | cdd90acb | Christos KK Loverdos | toolbar.showRelevantButtons(); |
1340 | cdd90acb | Christos KK Loverdos | } |
1341 | cdd90acb | Christos KK Loverdos | |
1342 | cdd90acb | Christos KK Loverdos | public FileUploadDialog getFileUploadDialog() {
|
1343 | cdd90acb | Christos KK Loverdos | if(fileUploadDialog == null) { |
1344 | cdd90acb | Christos KK Loverdos | fileUploadDialog = new FileUploadDialog(this); |
1345 | cdd90acb | Christos KK Loverdos | } |
1346 | cdd90acb | Christos KK Loverdos | return fileUploadDialog;
|
1347 | cdd90acb | Christos KK Loverdos | } |
1348 | cdd90acb | Christos KK Loverdos | |
1349 | cdd90acb | Christos KK Loverdos | public void hideUploadIndicator() { |
1350 | cdd90acb | Christos KK Loverdos | upload.removeStyleName("pithos-uploadButton-loading");
|
1351 | cdd90acb | Christos KK Loverdos | upload.setTitle("");
|
1352 | cdd90acb | Christos KK Loverdos | } |
1353 | cdd90acb | Christos KK Loverdos | |
1354 | cdd90acb | Christos KK Loverdos | public void showUploadIndicator() { |
1355 | cdd90acb | Christos KK Loverdos | upload.addStyleName("pithos-uploadButton-loading");
|
1356 | cdd90acb | Christos KK Loverdos | upload.setTitle("Upload in progress. Click for details.");
|
1357 | cdd90acb | Christos KK Loverdos | } |
1358 | cdd90acb | Christos KK Loverdos | |
1359 | cdd90acb | Christos KK Loverdos | public void scheduleFolderHeadCommand(final Folder folder, final Command callback) { |
1360 | cdd90acb | Christos KK Loverdos | if(folder == null) { |
1361 | cdd90acb | Christos KK Loverdos | if(callback != null) { |
1362 | cdd90acb | Christos KK Loverdos | callback.execute(); |
1363 | cdd90acb | Christos KK Loverdos | } |
1364 | cdd90acb | Christos KK Loverdos | } |
1365 | cdd90acb | Christos KK Loverdos | else {
|
1366 | dc8cc18a | Christos KK Loverdos | HeadRequest<Folder> headFolder = new HeadRequest<Folder>(Folder.class, getApiPath(), folder.getOwnerID(), folder.getUri(), folder) {
|
1367 | cdd90acb | Christos KK Loverdos | |
1368 | cdd90acb | Christos KK Loverdos | @Override
|
1369 | cdd90acb | Christos KK Loverdos | public void onSuccess(Folder _result) { |
1370 | cdd90acb | Christos KK Loverdos | if(callback != null) { |
1371 | cdd90acb | Christos KK Loverdos | callback.execute(); |
1372 | cdd90acb | Christos KK Loverdos | } |
1373 | cdd90acb | Christos KK Loverdos | } |
1374 | cdd90acb | Christos KK Loverdos | |
1375 | cdd90acb | Christos KK Loverdos | @Override
|
1376 | cdd90acb | Christos KK Loverdos | public void onError(Throwable t) { |
1377 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
1378 | cdd90acb | Christos KK Loverdos | if(((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) {
|
1379 | cdd90acb | Christos KK Loverdos | final String path = folder.getUri(); |
1380 | dc8cc18a | Christos KK Loverdos | PutRequest newFolder = new PutRequest(getApiPath(), folder.getOwnerID(), path) {
|
1381 | cdd90acb | Christos KK Loverdos | @Override
|
1382 | cdd90acb | Christos KK Loverdos | public void onSuccess(Resource _result) { |
1383 | cdd90acb | Christos KK Loverdos | scheduleFolderHeadCommand(folder, callback); |
1384 | cdd90acb | Christos KK Loverdos | } |
1385 | cdd90acb | Christos KK Loverdos | |
1386 | cdd90acb | Christos KK Loverdos | @Override
|
1387 | cdd90acb | Christos KK Loverdos | public void onError(Throwable _t) { |
1388 | cdd90acb | Christos KK Loverdos | setError(_t); |
1389 | cdd90acb | Christos KK Loverdos | if(_t instanceof RestException) { |
1390 | cdd90acb | Christos KK Loverdos | displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText());
|
1391 | cdd90acb | Christos KK Loverdos | } |
1392 | cdd90acb | Christos KK Loverdos | else {
|
1393 | cdd90acb | Christos KK Loverdos | displayError("System error creating folder: " + _t.getMessage());
|
1394 | cdd90acb | Christos KK Loverdos | } |
1395 | cdd90acb | Christos KK Loverdos | } |
1396 | cdd90acb | Christos KK Loverdos | |
1397 | cdd90acb | Christos KK Loverdos | @Override
|
1398 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1399 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1400 | cdd90acb | Christos KK Loverdos | } |
1401 | cdd90acb | Christos KK Loverdos | }; |
1402 | 728ff1e4 | Christos KK Loverdos | newFolder.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1403 | fa68c84d | Christos KK Loverdos | newFolder.setHeader(Const.CONTENT_TYPE, "application/folder");
|
1404 | fa68c84d | Christos KK Loverdos | newFolder.setHeader(Const.ACCEPT, "*/*");
|
1405 | fa68c84d | Christos KK Loverdos | newFolder.setHeader(Const.CONTENT_LENGTH, "0");
|
1406 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(newFolder); |
1407 | cdd90acb | Christos KK Loverdos | } |
1408 | cdd90acb | Christos KK Loverdos | else if(((RestException) t).getHttpStatusCode() == Response.SC_FORBIDDEN) { |
1409 | cdd90acb | Christos KK Loverdos | onSuccess(folder); |
1410 | cdd90acb | Christos KK Loverdos | } |
1411 | cdd90acb | Christos KK Loverdos | else {
|
1412 | cdd90acb | Christos KK Loverdos | displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
|
1413 | cdd90acb | Christos KK Loverdos | } |
1414 | cdd90acb | Christos KK Loverdos | } |
1415 | cdd90acb | Christos KK Loverdos | else {
|
1416 | cdd90acb | Christos KK Loverdos | displayError("System error heading folder: " + t.getMessage());
|
1417 | cdd90acb | Christos KK Loverdos | } |
1418 | cdd90acb | Christos KK Loverdos | |
1419 | 8ddb4627 | Christos KK Loverdos | LOG("Error heading folder", t);
|
1420 | cdd90acb | Christos KK Loverdos | setError(t); |
1421 | cdd90acb | Christos KK Loverdos | } |
1422 | cdd90acb | Christos KK Loverdos | |
1423 | cdd90acb | Christos KK Loverdos | @Override
|
1424 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1425 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1426 | cdd90acb | Christos KK Loverdos | } |
1427 | cdd90acb | Christos KK Loverdos | }; |
1428 | 728ff1e4 | Christos KK Loverdos | headFolder.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1429 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headFolder); |
1430 | cdd90acb | Christos KK Loverdos | } |
1431 | cdd90acb | Christos KK Loverdos | } |
1432 | cdd90acb | Christos KK Loverdos | |
1433 | cdd90acb | Christos KK Loverdos | public void scheduleFileHeadCommand(File f, final Command callback) { |
1434 | dc8cc18a | Christos KK Loverdos | HeadRequest<File> headFile = new HeadRequest<File>(File.class, getApiPath(), f.getOwnerID(), f.getUri(), f) { |
1435 | cdd90acb | Christos KK Loverdos | |
1436 | cdd90acb | Christos KK Loverdos | @Override
|
1437 | cdd90acb | Christos KK Loverdos | public void onSuccess(File _result) { |
1438 | cdd90acb | Christos KK Loverdos | if(callback != null) { |
1439 | cdd90acb | Christos KK Loverdos | callback.execute(); |
1440 | cdd90acb | Christos KK Loverdos | } |
1441 | cdd90acb | Christos KK Loverdos | } |
1442 | cdd90acb | Christos KK Loverdos | |
1443 | cdd90acb | Christos KK Loverdos | @Override
|
1444 | cdd90acb | Christos KK Loverdos | public void onError(Throwable t) { |
1445 | 8ddb4627 | Christos KK Loverdos | LOG("Error heading file", t);
|
1446 | cdd90acb | Christos KK Loverdos | setError(t); |
1447 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
1448 | cdd90acb | Christos KK Loverdos | displayError("Error heading file: " + ((RestException) t).getHttpStatusText());
|
1449 | cdd90acb | Christos KK Loverdos | } |
1450 | cdd90acb | Christos KK Loverdos | else {
|
1451 | cdd90acb | Christos KK Loverdos | displayError("System error heading file: " + t.getMessage());
|
1452 | cdd90acb | Christos KK Loverdos | } |
1453 | cdd90acb | Christos KK Loverdos | } |
1454 | cdd90acb | Christos KK Loverdos | |
1455 | cdd90acb | Christos KK Loverdos | @Override
|
1456 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1457 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1458 | cdd90acb | Christos KK Loverdos | } |
1459 | cdd90acb | Christos KK Loverdos | }; |
1460 | 728ff1e4 | Christos KK Loverdos | headFile.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1461 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(headFile); |
1462 | cdd90acb | Christos KK Loverdos | } |
1463 | cdd90acb | Christos KK Loverdos | |
1464 | cdd90acb | Christos KK Loverdos | public boolean isMySharedSelected() { |
1465 | cdd90acb | Christos KK Loverdos | return getSelectedTree().equals(getMySharedTreeView());
|
1466 | cdd90acb | Christos KK Loverdos | } |
1467 | cdd90acb | Christos KK Loverdos | |
1468 | cdd90acb | Christos KK Loverdos | private Folder getUploadFolder() {
|
1469 | cdd90acb | Christos KK Loverdos | if(folderTreeView.equals(getSelectedTree()) || otherSharedTreeView.equals(getSelectedTree())) {
|
1470 | cdd90acb | Christos KK Loverdos | return getSelection();
|
1471 | cdd90acb | Christos KK Loverdos | } |
1472 | cdd90acb | Christos KK Loverdos | return null; |
1473 | cdd90acb | Christos KK Loverdos | } |
1474 | cdd90acb | Christos KK Loverdos | |
1475 | cdd90acb | Christos KK Loverdos | private void updateUploadFolder() { |
1476 | cdd90acb | Christos KK Loverdos | updateUploadFolder(null);
|
1477 | cdd90acb | Christos KK Loverdos | } |
1478 | cdd90acb | Christos KK Loverdos | |
1479 | cdd90acb | Christos KK Loverdos | private void updateUploadFolder(final JsArrayString urls) { |
1480 | cdd90acb | Christos KK Loverdos | if(folderTreeView.equals(getSelectedTree()) || otherSharedTreeView.equals(getSelectedTree())) {
|
1481 | cdd90acb | Christos KK Loverdos | Folder f = getSelection(); |
1482 | cdd90acb | Christos KK Loverdos | if(getSelectedTree().equals(getFolderTreeView())) {
|
1483 | cdd90acb | Christos KK Loverdos | updateFolder(f, true, new Command() { |
1484 | cdd90acb | Christos KK Loverdos | |
1485 | cdd90acb | Christos KK Loverdos | @Override
|
1486 | cdd90acb | Christos KK Loverdos | public void execute() { |
1487 | cdd90acb | Christos KK Loverdos | updateStatistics(); |
1488 | cdd90acb | Christos KK Loverdos | if(urls != null) { |
1489 | cdd90acb | Christos KK Loverdos | selectUploadedFiles(urls); |
1490 | cdd90acb | Christos KK Loverdos | } |
1491 | cdd90acb | Christos KK Loverdos | } |
1492 | cdd90acb | Christos KK Loverdos | }, false);
|
1493 | cdd90acb | Christos KK Loverdos | } |
1494 | cdd90acb | Christos KK Loverdos | else {
|
1495 | cdd90acb | Christos KK Loverdos | updateOtherSharedFolder(f, true, null); |
1496 | cdd90acb | Christos KK Loverdos | } |
1497 | cdd90acb | Christos KK Loverdos | } |
1498 | cdd90acb | Christos KK Loverdos | } |
1499 | cdd90acb | Christos KK Loverdos | |
1500 | cdd90acb | Christos KK Loverdos | public native void disableUploadArea() /*-{ |
1501 | cdd90acb | Christos KK Loverdos | var uploader = $wnd.$("#uploader").pluploadQueue();
|
1502 | cdd90acb | Christos KK Loverdos | var dropElm = $wnd.document.getElementById('rightPanel');
|
1503 | cdd90acb | Christos KK Loverdos | $wnd.plupload.removeAllEvents(dropElm, uploader.id);
|
1504 | cdd90acb | Christos KK Loverdos | }-*/;
|
1505 | cdd90acb | Christos KK Loverdos | |
1506 | cdd90acb | Christos KK Loverdos | public native void enableUploadArea() /*-{ |
1507 | cdd90acb | Christos KK Loverdos | var uploader = $wnd.$("#uploader").pluploadQueue();
|
1508 | cdd90acb | Christos KK Loverdos | var dropElm = $wnd.document.getElementById('rightPanel');
|
1509 | cdd90acb | Christos KK Loverdos | $wnd.plupload.removeAllEvents(dropElm, uploader.id);
|
1510 | cdd90acb | Christos KK Loverdos | if (uploader.runtime == 'html5') {
|
1511 | cdd90acb | Christos KK Loverdos | uploader.settings.drop_element = 'rightPanel';
|
1512 | cdd90acb | Christos KK Loverdos | uploader.trigger('PostInit');
|
1513 | cdd90acb | Christos KK Loverdos | }
|
1514 | cdd90acb | Christos KK Loverdos | }-*/;
|
1515 | cdd90acb | Christos KK Loverdos | |
1516 | cdd90acb | Christos KK Loverdos | public void showUploadAlert(int nOfFiles) { |
1517 | cdd90acb | Christos KK Loverdos | if(uploadAlert == null) { |
1518 | cdd90acb | Christos KK Loverdos | uploadAlert = new UploadAlert(this, nOfFiles); |
1519 | cdd90acb | Christos KK Loverdos | } |
1520 | cdd90acb | Christos KK Loverdos | if(!uploadAlert.isShowing()) {
|
1521 | cdd90acb | Christos KK Loverdos | uploadAlert.setPopupPositionAndShow(new PopupPanel.PositionCallback() {
|
1522 | cdd90acb | Christos KK Loverdos | |
1523 | cdd90acb | Christos KK Loverdos | @Override
|
1524 | cdd90acb | Christos KK Loverdos | public void setPosition(int offsetWidth, int offsetHeight) { |
1525 | cdd90acb | Christos KK Loverdos | uploadAlert.setPopupPosition((Window.getClientWidth() - offsetWidth) / 2, statusPanel.getAbsoluteTop() - offsetHeight); |
1526 | cdd90acb | Christos KK Loverdos | } |
1527 | cdd90acb | Christos KK Loverdos | }); |
1528 | cdd90acb | Christos KK Loverdos | } |
1529 | cdd90acb | Christos KK Loverdos | uploadAlert.setNumOfFiles(nOfFiles); |
1530 | cdd90acb | Christos KK Loverdos | } |
1531 | cdd90acb | Christos KK Loverdos | |
1532 | cdd90acb | Christos KK Loverdos | public void hideUploadAlert() { |
1533 | cdd90acb | Christos KK Loverdos | if(uploadAlert != null && uploadAlert.isShowing()) { |
1534 | cdd90acb | Christos KK Loverdos | uploadAlert.hide(); |
1535 | cdd90acb | Christos KK Loverdos | } |
1536 | cdd90acb | Christos KK Loverdos | } |
1537 | cdd90acb | Christos KK Loverdos | |
1538 | cdd90acb | Christos KK Loverdos | public void selectUploadedFiles(JsArrayString urls) { |
1539 | cdd90acb | Christos KK Loverdos | List<String> selectedUrls = new ArrayList<String>(); |
1540 | cdd90acb | Christos KK Loverdos | for(int i = 0; i < urls.length(); i++) { |
1541 | cdd90acb | Christos KK Loverdos | selectedUrls.add(urls.get(i)); |
1542 | cdd90acb | Christos KK Loverdos | } |
1543 | cdd90acb | Christos KK Loverdos | fileList.selectByUrl(selectedUrls); |
1544 | cdd90acb | Christos KK Loverdos | } |
1545 | cdd90acb | Christos KK Loverdos | |
1546 | 8ddb4627 | Christos KK Loverdos | public void purgeContainer(final Folder container) { |
1547 | cdd90acb | Christos KK Loverdos | String path = "/" + container.getName() + "?delimiter=/"; |
1548 | dc8cc18a | Christos KK Loverdos | DeleteRequest delete = new DeleteRequest(getApiPath(), getUserID(), path) {
|
1549 | cdd90acb | Christos KK Loverdos | |
1550 | cdd90acb | Christos KK Loverdos | @Override
|
1551 | cdd90acb | Christos KK Loverdos | protected void onUnauthorized(Response response) { |
1552 | cdd90acb | Christos KK Loverdos | sessionExpired(); |
1553 | cdd90acb | Christos KK Loverdos | } |
1554 | cdd90acb | Christos KK Loverdos | |
1555 | cdd90acb | Christos KK Loverdos | @Override
|
1556 | cdd90acb | Christos KK Loverdos | public void onSuccess(Resource result) { |
1557 | cdd90acb | Christos KK Loverdos | updateFolder(container, true, null, true); |
1558 | cdd90acb | Christos KK Loverdos | } |
1559 | cdd90acb | Christos KK Loverdos | |
1560 | cdd90acb | Christos KK Loverdos | @Override
|
1561 | cdd90acb | Christos KK Loverdos | public void onError(Throwable t) { |
1562 | 8ddb4627 | Christos KK Loverdos | LOG("Error deleting trash", t);
|
1563 | cdd90acb | Christos KK Loverdos | setError(t); |
1564 | cdd90acb | Christos KK Loverdos | if(t instanceof RestException) { |
1565 | b73a903e | Christos Stathis | displayError("Error deleting trash: " + ((RestException) t).getHttpStatusText());
|
1566 | cdd90acb | Christos KK Loverdos | } |
1567 | cdd90acb | Christos KK Loverdos | else {
|
1568 | b73a903e | Christos Stathis | displayError("System error deleting trash: " + t.getMessage());
|
1569 | cdd90acb | Christos KK Loverdos | } |
1570 | cdd90acb | Christos KK Loverdos | } |
1571 | cdd90acb | Christos KK Loverdos | }; |
1572 | 728ff1e4 | Christos KK Loverdos | delete.setHeader(Const.X_AUTH_TOKEN, getUserToken()); |
1573 | cdd90acb | Christos KK Loverdos | Scheduler.get().scheduleDeferred(delete); |
1574 | cdd90acb | Christos KK Loverdos | } |
1575 | a57faaf0 | Christos Stathis | } |