Revision 2d0e60ee src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java
b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java | ||
---|---|---|
111 | 111 |
protected Map<String, ListDataProvider<Folder>> userDataProviderMap = new HashMap<String, ListDataProvider<Folder>>(); |
112 | 112 |
private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>(); |
113 | 113 |
|
114 |
protected Map<String, Set<File>> sharedFiles = new HashMap<String, Set<File>>(); |
|
115 |
|
|
116 | 114 |
protected SingleSelectionModel<Folder> selectionModel; |
117 | 115 |
|
118 | 116 |
public OtherSharedTreeViewModel(Pithos _app, SingleSelectionModel<Folder> selectionModel) { |
... | ... | |
124 | 122 |
public <T> NodeInfo<?> getNodeInfo(T value) { |
125 | 123 |
if (value == null) { |
126 | 124 |
rootDataProvider.getList().add(treeTitle); |
127 |
final SingleSelectionModel<String> selectionModel2 = new SingleSelectionModel<String>(); |
|
128 |
selectionModel2.addSelectionChangeHandler(new Handler() { |
|
129 |
|
|
130 |
@Override |
|
131 |
public void onSelectionChange(SelectionChangeEvent event) { |
|
132 |
if (selectionModel2.getSelectedObject() != null) { |
|
133 |
app.deselectOthers(app.getOtherSharedTreeView(), selectionModel2); |
|
134 |
app.applyPermissions(null); |
|
135 |
app.showFiles(new HashSet<File>()); |
|
136 |
app.showRelevantToolbarButtons(); |
|
137 |
} |
|
138 |
else { |
|
139 |
if (app.getSelectedTree().equals(app.getOtherSharedTreeView()) && app.getOtherSharedTreeView().getSelection() == null) |
|
140 |
app.setSelectedTree(null); |
|
141 |
if (app.getSelectedTree() == null) |
|
142 |
app.showRelevantToolbarButtons(); |
|
143 |
} |
|
144 |
} |
|
145 |
}); |
|
146 |
app.addSelectionModel(selectionModel2); |
|
147 | 125 |
return new DefaultNodeInfo<String>(rootDataProvider, new TextCell(new SafeHtmlRenderer<String>() { |
148 | 126 |
@Override |
149 | 127 |
public SafeHtml render(String object) { |
... | ... | |
158 | 136 |
builder.appendHtmlConstant(html).appendHtmlConstant(" "); |
159 | 137 |
builder.append(OtherSharedTreeView.Templates.INSTANCE.nameSpan(object)); |
160 | 138 |
} |
161 |
}), selectionModel2, null);
|
|
139 |
}), null, null);
|
|
162 | 140 |
} |
163 | 141 |
else if (value instanceof String) { |
164 | 142 |
if (value.equals(treeTitle)) { |
165 | 143 |
fetchSharingUsers(null); |
166 |
final SingleSelectionModel<String> selectionModel3 = new SingleSelectionModel<String>(); |
|
167 |
selectionModel3.addSelectionChangeHandler(new Handler() { |
|
168 |
|
|
169 |
@Override |
|
170 |
public void onSelectionChange(SelectionChangeEvent event) { |
|
171 |
if (selectionModel3.getSelectedObject() != null) { |
|
172 |
app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3); |
|
173 |
app.applyPermissions(null); |
|
174 |
String username = selectionModel3.getSelectedObject(); |
|
175 |
if (userDataProviderMap.get(username) == null) { |
|
176 |
userDataProviderMap.put(username, new ListDataProvider<Folder>()); |
|
177 |
} |
|
178 |
fetchSharedFiles(username, userDataProviderMap.get(username)); |
|
179 |
app.showRelevantToolbarButtons(); |
|
180 |
} |
|
181 |
else { |
|
182 |
if (app.getSelectedTree().equals(app.getOtherSharedTreeView()) && app.getOtherSharedTreeView().getSelection() == null) |
|
183 |
app.setSelectedTree(null); |
|
184 |
if (app.getSelectedTree() == null) |
|
185 |
app.showRelevantToolbarButtons(); |
|
186 |
} |
|
187 |
} |
|
188 |
}); |
|
189 |
app.addSelectionModel(selectionModel3); |
|
190 | 144 |
return new DefaultNodeInfo<String>(userLevelDataProvider, new TextCell(new SafeHtmlRenderer<String>() { |
191 | 145 |
|
192 | 146 |
@Override |
... | ... | |
202 | 156 |
builder.appendHtmlConstant(html).appendHtmlConstant(" "); |
203 | 157 |
builder.append(OtherSharedTreeView.Templates.INSTANCE.nameSpan(object)); |
204 | 158 |
} |
205 |
}), selectionModel3, null);
|
|
159 |
}), null, null);
|
|
206 | 160 |
} |
207 | 161 |
String username = (String) value; |
208 | 162 |
if (userDataProviderMap.get(username) == null) { |
... | ... | |
229 | 183 |
public void onSuccess(final SharingUsers _result) { |
230 | 184 |
userLevelDataProvider.getList().clear(); |
231 | 185 |
userLevelDataProvider.getList().addAll(_result.getUsers()); |
232 |
for (String name : _result.getUsers()) { |
|
233 |
sharedFiles.put(name, new HashSet<File>()); |
|
234 |
} |
|
235 | 186 |
Iterator<String> iter = _result.getUsers().iterator(); |
236 | 187 |
fetchSharedContainers(iter, callback); |
237 | 188 |
} |
... | ... | |
332 | 283 |
Scheduler.get().scheduleDeferred(getUserSharedContainers); |
333 | 284 |
} |
334 | 285 |
|
335 |
protected void fetchSharedFiles(final String username, final ListDataProvider<Folder> dataProvider) { |
|
336 |
GetRequest<AccountResource> getUserSharedContainers = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), username, "?format=json") { |
|
337 |
|
|
338 |
@Override |
|
339 |
public void onSuccess(AccountResource _result) { |
|
340 |
final ListDataProvider<Folder> tempProvider = new ListDataProvider<Folder>(); |
|
341 |
Iterator<Folder> iter = _result.getContainers().iterator(); |
|
342 |
sharedFiles.get(username).clear(); |
|
343 |
fetchFolder(username, iter, tempProvider, new Command() { |
|
344 |
|
|
345 |
@Override |
|
346 |
public void execute() { |
|
347 |
dataProvider.getList().clear(); |
|
348 |
dataProvider.getList().addAll(tempProvider.getList()); |
|
349 |
app.showFiles(sharedFiles.get(username)); |
|
350 |
} |
|
351 |
}); |
|
352 |
} |
|
353 |
|
|
354 |
@Override |
|
355 |
public void onError(Throwable t) { |
|
356 |
GWT.log("Error getting account", t); |
|
357 |
app.setError(t); |
|
358 |
if (t instanceof RestException) |
|
359 |
app.displayError("Error getting account: " + ((RestException) t).getHttpStatusText()); |
|
360 |
else |
|
361 |
app.displayError("System error fetching user data: " + t.getMessage()); |
|
362 |
} |
|
363 |
|
|
364 |
@Override |
|
365 |
protected void onUnauthorized(Response response) { |
|
366 |
app.sessionExpired(); |
|
367 |
} |
|
368 |
}; |
|
369 |
getUserSharedContainers.setHeader("X-Auth-Token", app.getToken()); |
|
370 |
Scheduler.get().scheduleDeferred(getUserSharedContainers); |
|
371 |
} |
|
372 |
|
|
373 | 286 |
protected void fetchFolder(final String username, final Iterator<Folder> iter, final ListDataProvider<Folder> dataProvider, final Command callback) { |
374 | 287 |
if (iter.hasNext()) { |
375 | 288 |
final Folder f = iter.next(); |
... | ... | |
378 | 291 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), username, path, f) { |
379 | 292 |
@Override |
380 | 293 |
public void onSuccess(Folder _result) { |
381 |
if (!_result.isShared() && !_result.isContainer()) { |
|
382 |
for (File file : _result.getFiles()) { |
|
383 |
if (file.isSharedOrPublished()) |
|
384 |
sharedFiles.get(username).add(file); |
|
385 |
} |
|
386 |
Iterator<Folder> iter2 = _result.getSubfolders().iterator(); |
|
387 |
fetchFolder(username, iter2, dataProvider, new Command() { |
|
388 |
|
|
389 |
@Override |
|
390 |
public void execute() { |
|
391 |
fetchFolder(username, iter, dataProvider, callback); |
|
392 |
} |
|
393 |
}); |
|
394 |
} |
|
395 |
else { |
|
396 |
dataProvider.getList().add(_result); |
|
397 |
fetchFolder(username, iter, dataProvider, callback); |
|
398 |
} |
|
294 |
dataProvider.getList().add(_result); |
|
295 |
fetchFolder(username, iter, dataProvider, callback); |
|
399 | 296 |
} |
400 | 297 |
|
401 | 298 |
@Override |
Also available in: Unified diff