folderTreeSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
- Folder f = folderTreeSelectionModel.getSelectedObject();
- updateFolder(f);
+ if (folderTreeSelectionModel.getSelectedObject() != null) {
+ tagTreeSelectionModel.setSelected(tagTreeSelectionModel.getSelectedObject(), false);
+ Folder f = folderTreeSelectionModel.getSelectedObject();
+ updateFolder(f);
+ }
}
});
tagTreeSelectionModel.addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
- Tag t = tagTreeSelectionModel.getSelectedObject();
- updateTag(t);
+ if (tagTreeSelectionModel.getSelectedObject() != null) {
+ folderTreeSelectionModel.setSelected(folderTreeSelectionModel.getSelectedObject(), false);
+ Tag t = tagTreeSelectionModel.getSelectedObject();
+ updateTag(t);
+ }
}
});
tagTreeViewModel = new TagTreeViewModel(tagTreeSelectionModel);
else
fileList.showFiles();
Set<File> files = f.getFiles();
- Iterator<File> iter = files.iterator();
- fetchFile(iter, files);
+ showFiles(files);
+ }
+
+ public void showFiles(Set<File> files) {
+ //Iterator<File> iter = files.iterator();
+ //fetchFile(iter, files);
+ fileList.setFiles(new ArrayList<File>(files));
}
private void fetchFile(final Iterator<File> iter, final Set<File> files) {
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.TextCell;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.dom.client.ContextMenuEvent;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.view.client.TreeViewModel;
import gr.grnet.pithos.web.client.Pithos;
import gr.grnet.pithos.web.client.foldertree.AccountResource;
+import gr.grnet.pithos.web.client.foldertree.File;
import gr.grnet.pithos.web.client.foldertree.Folder;
+import gr.grnet.pithos.web.client.rest.GetRequest;
+import gr.grnet.pithos.web.client.rest.RestException;
import gr.grnet.pithos.web.client.tagtree.TagTreeView.Templates;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@Override
public <T> NodeInfo<?> getNodeInfo(T value) {
if (value == null) {
-// rootDataProvider.getList().add("Tags");
return new DefaultNodeInfo<String>(rootDataProvider, new TextCell(new SafeHtmlRenderer<String>() {
@Override
public SafeHtml render(String object) {
builder.appendHtmlConstant(html);
builder.append(Templates.INSTANCE.nameSpan(object));
}
- }), new SingleSelectionModel<String>(), null);
+ }), null, null);
}
else if (value instanceof String) {
//fetchAllTags();
}
public void updateTag(Tag tag) {
-// if (dataProviderMap.get(tag) == null) {
-// dataProviderMap.put(tag, new ListDataProvider<Tag>());
-// }
-// final ListDataProvider<Tag> dataProvider = dataProviderMap.get(tag);
-// if (!tag.isTrash())
-// fetchFolder(tag, dataProvider);
-// else
-// Pithos.get().showFiles(tag);
+ fetchTag(tag);
}
-// public void fetchFolder(final Tag f, final ListDataProvider<Tag> dataProvider) {
-// dataProvider.flush();
-// Scheduler.get().scheduleDeferred(new ScheduledCommand() {
-// @Override
-// public void execute() {
-// final Pithos app = Pithos.get();
-// String path = app.getApiPath() + app.getUsername() + "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
-// GetRequest<Tag> getFolder = new GetRequest<Tag>(Tag.class, path, f) {
-// @Override
-// public void onSuccess(Tag result) {
-// app.showFiles(result);
-// Iterator<Tag> iter = result.getSubfolders().iterator();
-// fetchFolder(iter, dataProvider, result.getSubfolders());
-// }
-//
-// @Override
-// public void onError(Throwable t) {
-// GWT.log("Error getting folder", t);
-// if (t instanceof RestException)
-// Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
-// else
-// Pithos.get().displayError("System error fetching folder: " + t.getMessage());
-// }
-// };
-// getFolder.setHeader("X-Auth-Token", app.getToken());
-// Scheduler.get().scheduleDeferred(getFolder);
-// }
-// });
-// }
+ public void fetchTag(Tag t) {
+ Pithos app = Pithos.get();
+ AccountResource account = app.getAccount();
+ Iterator<Folder> iter = account.getContainers().iterator();
+ fetchTag(iter, t, new LinkedHashSet<File>());
+ }
+
+ private void fetchTag(final Iterator<Folder> iter, final Tag t, final Set<File> files) {
+ final Pithos app = Pithos.get();
+ if (iter.hasNext()) {
+ Folder f = iter.next();
+ String path = app.getApiPath() + app.getUsername() + f.getUri() + "?format=json&meta=" + t.getName();
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, path) {
+ @Override
+ public void onSuccess(Folder result) {
+ files.addAll(result.getFiles());
+ fetchTag(iter, t, files);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("Error getting folder", t);
+ if (t instanceof RestException)
+ Pithos.get().displayError("Error getting folder: " + ((RestException) t).getHttpStatusText());
+ else
+ Pithos.get().displayError("System error fetching folder: " + t.getMessage());
+ }
+ };
+ getFolder.setHeader("X-Auth-Token", app.getToken());
+ Scheduler.get().scheduleDeferred(getFolder);
+ }
+ else {
+ app.showFiles(files);
+ }
+ }
public void initialize(AccountResource account) {
List<Tag> tagList = tagDataProvider.getList();