Revision cf49bbc9
b/src/gr/grnet/pithos/web/client/GssCellTreeBasic.css | ||
---|---|---|
20 | 20 |
.cellTreeEmptyMessage { |
21 | 21 |
padding-left: 16px; |
22 | 22 |
font-style: italic; |
23 |
background: url(images/cellTreeLoadingBasic.gif) no-repeat; |
|
23 | 24 |
} |
24 | 25 |
|
25 | 26 |
.cellTreeItem { |
b/src/gr/grnet/pithos/web/client/Pithos.java | ||
---|---|---|
326 | 326 |
deselectOthers(folderTreeView, folderTreeSelectionModel); |
327 | 327 |
applyPermissions(folderTreeSelectionModel.getSelectedObject()); |
328 | 328 |
Folder f = folderTreeSelectionModel.getSelectedObject(); |
329 |
updateFolder(f, true, null);
|
|
329 |
showFiles(f);
|
|
330 | 330 |
} |
331 | 331 |
} |
332 | 332 |
}); |
... | ... | |
886 | 886 |
DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), getUsername(), path) { |
887 | 887 |
@Override |
888 | 888 |
public void onSuccess(@SuppressWarnings("unused") Resource result) { |
889 |
// folderTreeSelectionModel.setSelected(folder.getParent(), true); |
|
890 | 889 |
updateFolder(folder.getParent(), true, new Command() { |
891 | 890 |
|
892 | 891 |
@Override |
b/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java | ||
---|---|---|
103 | 103 |
|
104 | 104 |
protected ListDataProvider<Folder> rootDataProvider = new ListDataProvider<Folder>(); |
105 | 105 |
|
106 |
private Map<Folder, AsyncDataProvider<Folder>> dataProviderMap = new HashMap<Folder, AsyncDataProvider<Folder>>();
|
|
106 |
private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>();
|
|
107 | 107 |
|
108 | 108 |
protected SingleSelectionModel<Folder> selectionModel; |
109 | 109 |
|
... | ... | |
121 | 121 |
} |
122 | 122 |
final Folder f = (Folder) value; |
123 | 123 |
if (dataProviderMap.get(f) == null) { |
124 |
dataProviderMap.put(f, new AsyncDataProvider<Folder>() { |
|
125 |
|
|
126 |
@Override |
|
127 |
protected void onRangeChanged(HasData<Folder> display) { |
|
128 |
fetchFolder(f, this, false, null); |
|
129 |
} |
|
130 |
}); |
|
124 |
dataProviderMap.put(f, new ListDataProvider<Folder>()); |
|
131 | 125 |
} |
132 |
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
126 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
127 |
dataProvider.getList().clear(); |
|
128 |
dataProvider.getList().addAll(f.getSubfolders()); |
|
129 |
fetchFolder(f, dataProvider, false, null); |
|
133 | 130 |
return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null); |
134 | 131 |
} |
135 | 132 |
|
... | ... | |
192 | 189 |
return selectionModel.getSelectedObject(); |
193 | 190 |
} |
194 | 191 |
|
195 |
public void updateFolder(final Folder folder, final boolean showfiles, final Command callback) {
|
|
192 |
public void updateFolder(final Folder folder, boolean showfiles, final Command callback) { |
|
196 | 193 |
if (dataProviderMap.get(folder) == null) { |
197 |
dataProviderMap.put(folder, new AsyncDataProvider<Folder>() { |
|
198 |
|
|
199 |
@Override |
|
200 |
protected void onRangeChanged(HasData<Folder> display) { |
|
201 |
fetchFolder(folder, this, showfiles, null); |
|
202 |
} |
|
203 |
}); |
|
194 |
dataProviderMap.put(folder, new ListDataProvider<Folder>()); |
|
204 | 195 |
} |
205 |
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
|
|
196 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
|
|
206 | 197 |
fetchFolder(folder, dataProvider, showfiles, new Command() { |
207 | 198 |
|
208 | 199 |
@Override |
... | ... | |
214 | 205 |
}); |
215 | 206 |
} |
216 | 207 |
|
217 |
public void fetchFolder(final Folder f, final AsyncDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {
|
|
208 |
public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {
|
|
218 | 209 |
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()); |
219 | 210 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) { |
220 | 211 |
@Override |
... | ... | |
225 | 216 |
fetchFolder(iter, new Command() { |
226 | 217 |
@Override |
227 | 218 |
public void execute() { |
228 |
dataProvider.updateRowCount(_result.getSubfolders().size(), true);
|
|
229 |
dataProvider.updateRowData(0, new ArrayList<Folder>(_result.getSubfolders()));
|
|
219 |
dataProvider.getList().clear();
|
|
220 |
dataProvider.getList().addAll(_result.getSubfolders());
|
|
230 | 221 |
// app.getFolderTreeView().updateChildren(f); |
231 | 222 |
if (callback != null) |
232 | 223 |
callback.execute(); |
b/src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java | ||
---|---|---|
43 | 43 |
import gr.grnet.pithos.web.client.rest.GetRequest; |
44 | 44 |
import gr.grnet.pithos.web.client.rest.RestException; |
45 | 45 |
|
46 |
import java.util.ArrayList; |
|
47 | 46 |
import java.util.HashMap; |
48 | 47 |
import java.util.HashSet; |
49 | 48 |
import java.util.Iterator; |
... | ... | |
65 | 64 |
import com.google.gwt.text.shared.SafeHtmlRenderer; |
66 | 65 |
import com.google.gwt.user.client.Command; |
67 | 66 |
import com.google.gwt.user.client.ui.AbstractImagePrototype; |
68 |
import com.google.gwt.view.client.AsyncDataProvider; |
|
69 |
import com.google.gwt.view.client.HasData; |
|
70 | 67 |
import com.google.gwt.view.client.ListDataProvider; |
71 | 68 |
import com.google.gwt.view.client.SelectionChangeEvent; |
72 | 69 |
import com.google.gwt.view.client.SelectionChangeEvent.Handler; |
... | ... | |
97 | 94 |
} |
98 | 95 |
}; |
99 | 96 |
|
100 |
boolean hasSharedFolders = false; |
|
101 |
protected AsyncDataProvider<Folder> firstLevelDataProvider = new AsyncDataProvider<Folder>() { |
|
97 |
protected ListDataProvider<Folder> firstLevelDataProvider = new ListDataProvider<Folder>(); |
|
102 | 98 |
|
103 |
@Override |
|
104 |
protected void onRangeChanged(HasData<Folder> display) { |
|
105 |
fetchSharedContainers(null); |
|
106 |
} |
|
107 |
}; |
|
108 |
|
|
109 |
private Map<Folder, AsyncDataProvider<Folder>> dataProviderMap = new HashMap<Folder, AsyncDataProvider<Folder>>(); |
|
99 |
private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>(); |
|
110 | 100 |
|
111 | 101 |
protected Set<File> sharedFiles = new HashSet<File>(); |
112 | 102 |
|
... | ... | |
152 | 142 |
}), selectionModel2, null); |
153 | 143 |
} |
154 | 144 |
else if (value instanceof String) { |
155 |
// fetchSharedContainers(null);
|
|
145 |
fetchSharedContainers(null); |
|
156 | 146 |
return new DefaultNodeInfo<Folder>(firstLevelDataProvider, folderCell, selectionModel, null); |
157 | 147 |
} |
158 | 148 |
else { |
159 | 149 |
final Folder f = (Folder) value; |
160 | 150 |
if (dataProviderMap.get(f) == null) { |
161 |
dataProviderMap.put(f, new AsyncDataProvider<Folder>() { |
|
162 |
|
|
163 |
@Override |
|
164 |
protected void onRangeChanged(HasData<Folder> display) { |
|
165 |
fetchFolder(f, this, false); |
|
166 |
} |
|
167 |
}); |
|
151 |
dataProviderMap.put(f, new ListDataProvider<Folder>()); |
|
168 | 152 |
} |
169 |
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
153 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
154 |
fetchFolder(f, dataProvider, false); |
|
170 | 155 |
return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null); |
171 | 156 |
} |
172 | 157 |
} |
173 | 158 |
|
174 | 159 |
protected void fetchSharedFiles() { |
175 | 160 |
final List<Folder> containers = app.getAccount().getContainers(); |
176 |
final List<Folder> tempProvider = new ArrayList<Folder>();
|
|
161 |
final ListDataProvider<Folder> tempProvider = new ListDataProvider<Folder>();
|
|
177 | 162 |
Iterator<Folder> iter = containers.iterator(); |
178 | 163 |
fetchFolder(iter, tempProvider, new Command() { |
179 | 164 |
|
180 | 165 |
@Override |
181 | 166 |
public void execute() { |
182 |
firstLevelDataProvider.updateRowCount(tempProvider.size(), true); |
|
183 |
firstLevelDataProvider.updateRowData(0, tempProvider); |
|
184 |
hasSharedFolders = tempProvider.size() > 0; |
|
167 |
firstLevelDataProvider.getList().clear(); |
|
168 |
firstLevelDataProvider.getList().addAll(tempProvider.getList()); |
|
185 | 169 |
app.showFiles(sharedFiles); |
186 | 170 |
} |
187 | 171 |
}); |
... | ... | |
189 | 173 |
|
190 | 174 |
private void fetchSharedContainers(final Command callback) { |
191 | 175 |
final List<Folder> containers = app.getAccount().getContainers(); |
192 |
final List<Folder> tempProvider = new ArrayList<Folder>();
|
|
176 |
final ListDataProvider<Folder> tempProvider = new ListDataProvider<Folder>();
|
|
193 | 177 |
Iterator<Folder> iter = containers.iterator(); |
194 | 178 |
fetchFolder(iter, tempProvider, new Command() { |
195 | 179 |
|
196 | 180 |
@Override |
197 | 181 |
public void execute() { |
198 |
firstLevelDataProvider.updateRowCount(tempProvider.size(), true); |
|
199 |
firstLevelDataProvider.updateRowData(0, tempProvider); |
|
200 |
hasSharedFolders = tempProvider.size() > 0; |
|
182 |
firstLevelDataProvider.getList().clear(); |
|
183 |
firstLevelDataProvider.getList().addAll(tempProvider.getList()); |
|
201 | 184 |
if (callback != null) |
202 | 185 |
callback.execute(); |
203 | 186 |
} |
... | ... | |
213 | 196 |
return f.getSubfolders().isEmpty(); |
214 | 197 |
} |
215 | 198 |
else { |
216 |
return !hasSharedFolders;
|
|
199 |
return firstLevelDataProvider.getList().isEmpty();
|
|
217 | 200 |
} |
218 | 201 |
} |
219 | 202 |
|
220 |
protected void fetchFolder(final Iterator<Folder> iter, final List<Folder> dataProvider, final Command callback) { |
|
203 |
protected void fetchFolder(final Iterator<Folder> iter, final ListDataProvider<Folder> dataProvider, final Command callback) {
|
|
221 | 204 |
if (iter.hasNext()) { |
222 | 205 |
final Folder f = iter.next(); |
223 | 206 |
|
... | ... | |
240 | 223 |
}); |
241 | 224 |
} |
242 | 225 |
else { |
243 |
dataProvider.add(_result); |
|
226 |
dataProvider.getList().add(_result);
|
|
244 | 227 |
fetchFolder(iter, dataProvider, callback); |
245 | 228 |
} |
246 | 229 |
} |
... | ... | |
270 | 253 |
return selectionModel.getSelectedObject(); |
271 | 254 |
} |
272 | 255 |
|
273 |
public void updateFolder(final Folder folder, final boolean showfiles) {
|
|
256 |
public void updateFolder(Folder folder, boolean showfiles) {
|
|
274 | 257 |
if (dataProviderMap.get(folder) == null) { |
275 |
dataProviderMap.put(folder, new AsyncDataProvider<Folder>() { |
|
276 |
|
|
277 |
@Override |
|
278 |
protected void onRangeChanged(HasData<Folder> display) { |
|
279 |
fetchFolder(folder, this, showfiles); |
|
280 |
} |
|
281 |
}); |
|
258 |
dataProviderMap.put(folder, new ListDataProvider<Folder>()); |
|
282 | 259 |
} |
283 |
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
|
|
260 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
|
|
284 | 261 |
fetchFolder(folder, dataProvider, showfiles); |
285 | 262 |
} |
286 | 263 |
|
287 |
public void fetchFolder(final Folder f, final AsyncDataProvider<Folder> dataProvider, final boolean showfiles) {
|
|
264 |
public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles) {
|
|
288 | 265 |
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()); |
289 | 266 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) { |
290 | 267 |
@Override |
... | ... | |
292 | 269 |
if (showfiles) |
293 | 270 |
app.showFiles(_result); |
294 | 271 |
Iterator<Folder> iter = _result.getSubfolders().iterator(); |
295 |
final List<Folder> temp = new ArrayList<Folder>(); |
|
296 |
fetchFolder(iter, temp, new Command() { |
|
272 |
fetchFolder(iter, dataProvider, new Command() { |
|
297 | 273 |
@Override |
298 | 274 |
public void execute() { |
299 |
dataProvider.updateRowCount(_result.getSubfolders().size(), true);
|
|
300 |
dataProvider.updateRowData(0, new ArrayList<Folder>(_result.getSubfolders()));
|
|
275 |
dataProvider.getList().clear();
|
|
276 |
dataProvider.getList().addAll(_result.getSubfolders());
|
|
301 | 277 |
app.getMySharedTreeView().updateChildren(f); |
302 | 278 |
} |
303 | 279 |
}); |
Also available in: Unified diff