Revision 17ff0011 web_client/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java
b/web_client/src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java | ||
---|---|---|
41 | 41 |
import gr.grnet.pithos.web.client.rest.GetRequest; |
42 | 42 |
import gr.grnet.pithos.web.client.rest.RestException; |
43 | 43 |
|
44 |
import java.util.ArrayList; |
|
44 | 45 |
import java.util.HashMap; |
46 |
import java.util.HashSet; |
|
45 | 47 |
import java.util.Iterator; |
46 | 48 |
import java.util.Map; |
47 | 49 |
|
... | ... | |
56 | 58 |
import com.google.gwt.safehtml.shared.SafeHtmlBuilder; |
57 | 59 |
import com.google.gwt.user.client.Command; |
58 | 60 |
import com.google.gwt.user.client.ui.AbstractImagePrototype; |
61 |
import com.google.gwt.view.client.AsyncDataProvider; |
|
62 |
import com.google.gwt.view.client.HasData; |
|
59 | 63 |
import com.google.gwt.view.client.ListDataProvider; |
60 | 64 |
import com.google.gwt.view.client.SingleSelectionModel; |
61 | 65 |
import com.google.gwt.view.client.TreeViewModel; |
... | ... | |
99 | 103 |
|
100 | 104 |
protected ListDataProvider<Folder> rootDataProvider = new ListDataProvider<Folder>(); |
101 | 105 |
|
102 |
private Map<Folder, ListDataProvider<Folder>> dataProviderMap = new HashMap<Folder, ListDataProvider<Folder>>();
|
|
106 |
private Map<Folder, AsyncDataProvider<Folder>> dataProviderMap = new HashMap<Folder, AsyncDataProvider<Folder>>();
|
|
103 | 107 |
|
104 | 108 |
protected SingleSelectionModel<Folder> selectionModel; |
105 | 109 |
|
... | ... | |
117 | 121 |
} |
118 | 122 |
final Folder f = (Folder) value; |
119 | 123 |
if (dataProviderMap.get(f) == null) { |
120 |
dataProviderMap.put(f, new ListDataProvider<Folder>()); |
|
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 |
}); |
|
121 | 131 |
} |
122 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
123 |
fetchFolder(f, dataProvider, false, null); |
|
132 |
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(f); |
|
124 | 133 |
return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null); |
125 | 134 |
} |
126 | 135 |
|
... | ... | |
165 | 174 |
callback.execute(); |
166 | 175 |
} |
167 | 176 |
|
168 |
public void initialize(final AccountResource account) { |
|
177 |
public void initialize(final AccountResource account, final Command callback) {
|
|
169 | 178 |
Iterator<Folder> iter = account.getContainers().iterator(); |
170 | 179 |
fetchFolder(iter, new Command() { |
171 | 180 |
@Override |
... | ... | |
173 | 182 |
rootDataProvider.getList().clear(); |
174 | 183 |
rootDataProvider.getList().addAll(account.getContainers()); |
175 | 184 |
selectionModel.setSelected(rootDataProvider.getList().get(0), true); |
185 |
if (callback != null) |
|
186 |
callback.execute(); |
|
176 | 187 |
} |
177 | 188 |
}); |
178 | 189 |
} |
... | ... | |
181 | 192 |
return selectionModel.getSelectedObject(); |
182 | 193 |
} |
183 | 194 |
|
184 |
public void updateFolder(Folder folder, boolean showfiles, Command callback) {
|
|
195 |
public void updateFolder(final Folder folder, final boolean showfiles, final Command callback) {
|
|
185 | 196 |
if (dataProviderMap.get(folder) == null) { |
186 |
dataProviderMap.put(folder, new ListDataProvider<Folder>()); |
|
197 |
dataProviderMap.put(folder, new AsyncDataProvider<Folder>() { |
|
198 |
|
|
199 |
@Override |
|
200 |
protected void onRangeChanged(HasData<Folder> display) { |
|
201 |
fetchFolder(folder, this, showfiles, callback); |
|
202 |
} |
|
203 |
}); |
|
187 | 204 |
} |
188 |
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
|
|
205 |
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
|
|
189 | 206 |
fetchFolder(folder, dataProvider, showfiles, callback); |
190 | 207 |
} |
191 | 208 |
|
192 |
public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {
|
|
209 |
public void fetchFolder(final Folder f, final AsyncDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {
|
|
193 | 210 |
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()); |
194 | 211 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) { |
195 | 212 |
@Override |
... | ... | |
200 | 217 |
fetchFolder(iter, new Command() { |
201 | 218 |
@Override |
202 | 219 |
public void execute() { |
203 |
dataProvider.getList().clear();
|
|
204 |
dataProvider.getList().addAll(_result.getSubfolders());
|
|
205 |
app.getFolderTreeView().updateChildren(f); |
|
220 |
dataProvider.updateRowCount(_result.getSubfolders().size(), true);
|
|
221 |
dataProvider.updateRowData(0, new ArrayList<Folder>(_result.getSubfolders()));
|
|
222 |
// app.getFolderTreeView().updateChildren(f);
|
|
206 | 223 |
if (callback != null) |
207 | 224 |
callback.execute(); |
208 | 225 |
} |
Also available in: Unified diff