38 |
38 |
import com.google.gwt.cell.client.AbstractCell;
|
39 |
39 |
import com.google.gwt.cell.client.Cell;
|
40 |
40 |
import com.google.gwt.cell.client.TextCell;
|
|
41 |
import com.google.gwt.core.client.GWT;
|
|
42 |
import com.google.gwt.core.client.Scheduler;
|
|
43 |
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
41 |
44 |
import com.google.gwt.event.dom.client.ContextMenuEvent;
|
42 |
45 |
import com.google.gwt.safehtml.shared.SafeHtml;
|
43 |
46 |
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
|
... | ... | |
48 |
51 |
import com.google.gwt.view.client.TreeViewModel;
|
49 |
52 |
import gr.grnet.pithos.web.client.Pithos;
|
50 |
53 |
import gr.grnet.pithos.web.client.foldertree.AccountResource;
|
|
54 |
import gr.grnet.pithos.web.client.foldertree.File;
|
51 |
55 |
import gr.grnet.pithos.web.client.foldertree.Folder;
|
|
56 |
import gr.grnet.pithos.web.client.rest.GetRequest;
|
|
57 |
import gr.grnet.pithos.web.client.rest.RestException;
|
52 |
58 |
import gr.grnet.pithos.web.client.tagtree.TagTreeView.Templates;
|
|
59 |
import java.util.ArrayList;
|
53 |
60 |
import java.util.Arrays;
|
54 |
61 |
import java.util.Iterator;
|
|
62 |
import java.util.LinkedHashSet;
|
55 |
63 |
import java.util.List;
|
56 |
64 |
import java.util.Set;
|
57 |
65 |
|
... | ... | |
86 |
94 |
@Override
|
87 |
95 |
public <T> NodeInfo<?> getNodeInfo(T value) {
|
88 |
96 |
if (value == null) {
|
89 |
|
// rootDataProvider.getList().add("Tags");
|
90 |
97 |
return new DefaultNodeInfo<String>(rootDataProvider, new TextCell(new SafeHtmlRenderer<String>() {
|
91 |
98 |
@Override
|
92 |
99 |
public SafeHtml render(String object) {
|
... | ... | |
101 |
108 |
builder.appendHtmlConstant(html);
|
102 |
109 |
builder.append(Templates.INSTANCE.nameSpan(object));
|
103 |
110 |
}
|
104 |
|
}), new SingleSelectionModel<String>(), null);
|
|
111 |
}), null, null);
|
105 |
112 |
}
|
106 |
113 |
else if (value instanceof String) {
|
107 |
114 |
//fetchAllTags();
|
... | ... | |
157 |
164 |
}
|
158 |
165 |
|
159 |
166 |
public void updateTag(Tag tag) {
|
160 |
|
// if (dataProviderMap.get(tag) == null) {
|
161 |
|
// dataProviderMap.put(tag, new ListDataProvider<Tag>());
|
162 |
|
// }
|
163 |
|
// final ListDataProvider<Tag> dataProvider = dataProviderMap.get(tag);
|
164 |
|
// if (!tag.isTrash())
|
165 |
|
// fetchFolder(tag, dataProvider);
|
166 |
|
// else
|
167 |
|
// Pithos.get().showFiles(tag);
|
|
167 |
fetchTag(tag);
|
168 |
168 |
}
|
169 |
169 |
|
170 |
|
// public void fetchFolder(final Tag f, final ListDataProvider<Tag> dataProvider) {
|
171 |
|
// dataProvider.flush();
|
172 |
|
// Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
173 |
|
// @Override
|
174 |
|
// public void execute() {
|
175 |
|
// final Pithos app = Pithos.get();
|
176 |
|
// String path = app.getApiPath() + app.getUsername() + "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
|
177 |
|
// GetRequest<Tag> getFolder = new GetRequest<Tag>(Tag.class, path, f) {
|
178 |
|
// @Override
|
179 |
|
// public void onSuccess(Tag result) {
|
180 |
|
// app.showFiles(result);
|
181 |
|
// Iterator<Tag> iter = result.getSubfolders().iterator();
|
182 |
|
// fetchFolder(iter, dataProvider, result.getSubfolders());
|
183 |
|
// }
|
184 |
|
//
|
185 |
|
// @Override
|
186 |
|
// public void onError(Throwable t) {
|
187 |
|
// GWT.log("Error getting folder", t);
|
188 |
|
// if (t instanceof RestException)
|
189 |
|
// Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
|
190 |
|
// else
|
191 |
|
// Pithos.get().displayError("System error fetching folder: " + t.getMessage());
|
192 |
|
// }
|
193 |
|
// };
|
194 |
|
// getFolder.setHeader("X-Auth-Token", app.getToken());
|
195 |
|
// Scheduler.get().scheduleDeferred(getFolder);
|
196 |
|
// }
|
197 |
|
// });
|
198 |
|
// }
|
|
170 |
public void fetchTag(Tag t) {
|
|
171 |
Pithos app = Pithos.get();
|
|
172 |
AccountResource account = app.getAccount();
|
|
173 |
Iterator<Folder> iter = account.getContainers().iterator();
|
|
174 |
fetchTag(iter, t, new LinkedHashSet<File>());
|
|
175 |
}
|
|
176 |
|
|
177 |
private void fetchTag(final Iterator<Folder> iter, final Tag t, final Set<File> files) {
|
|
178 |
final Pithos app = Pithos.get();
|
|
179 |
if (iter.hasNext()) {
|
|
180 |
Folder f = iter.next();
|
|
181 |
String path = app.getApiPath() + app.getUsername() + f.getUri() + "?format=json&meta=" + t.getName();
|
|
182 |
GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, path) {
|
|
183 |
@Override
|
|
184 |
public void onSuccess(Folder result) {
|
|
185 |
files.addAll(result.getFiles());
|
|
186 |
fetchTag(iter, t, files);
|
|
187 |
}
|
|
188 |
|
|
189 |
@Override
|
|
190 |
public void onError(Throwable t) {
|
|
191 |
GWT.log("Error getting folder", t);
|
|
192 |
if (t instanceof RestException)
|
|
193 |
Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
|
|
194 |
else
|
|
195 |
Pithos.get().displayError("System error fetching folder: " + t.getMessage());
|
|
196 |
}
|
|
197 |
};
|
|
198 |
getFolder.setHeader("X-Auth-Token", app.getToken());
|
|
199 |
Scheduler.get().scheduleDeferred(getFolder);
|
|
200 |
}
|
|
201 |
else {
|
|
202 |
app.showFiles(files);
|
|
203 |
}
|
|
204 |
}
|
199 |
205 |
|
200 |
206 |
public void initialize(AccountResource account) {
|
201 |
207 |
List<Tag> tagList = tagDataProvider.getList();
|