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