package gr.grnet.pithos.web.client.mysharedtree;
+import gr.grnet.pithos.web.client.Const;
import gr.grnet.pithos.web.client.FolderContextMenu;
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.foldertree.FolderTreeView;
import gr.grnet.pithos.web.client.mysharedtree.MysharedTreeView.Templates;
-import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeView;
-import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeViewModel;
import gr.grnet.pithos.web.client.rest.GetRequest;
import gr.grnet.pithos.web.client.rest.RestException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
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.cell.client.ValueUpdater;
-import com.google.gwt.cell.client.Cell.Context;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.dom.client.ContextMenuEvent;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
-import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
-import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.view.client.ListDataProvider;
-import com.google.gwt.view.client.SelectionChangeEvent;
-import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SingleSelectionModel;
import com.google.gwt.view.client.TreeViewModel;
protected Pithos app;
+ Folder dummy = new Folder("No files shared by me");
+
private Cell<Folder> folderCell = new AbstractCell<Folder>(ContextMenuEvent.getType().getName()) {
@Override
public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
- String html = AbstractImagePrototype.create(MysharedTreeView.images.folderYellow()).getHTML();
- safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant(" ");
+ if (!folder.equals(dummy)) {
+ String html = AbstractImagePrototype.create(MysharedTreeView.images.folderYellow()).getHTML();
+ safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant(" ");
+ }
safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
}
public <T> NodeInfo<?> getNodeInfo(T value) {
if (value == null) {
fetchSharedContainers(null);
+ if (firstLevelDataProvider.getList().get(0).equals(dummy))
+ return new DefaultNodeInfo<Folder>(firstLevelDataProvider, folderCell, null, null);
return new DefaultNodeInfo<Folder>(firstLevelDataProvider, folderCell, selectionModel, null);
}
return null;
}
private void fetchSharedContainers(final Command callback) {
- String path = "?format=json&shared=";
- GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), app.getUsername(), path) {
+ app.LOG("MysharedTreeViewModel::fetchSharedContainers(), callback=", callback);
+ String path = "?format=json&shared=&public=";
+ GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), app.getUserID(), path) {
@Override
public void onSuccess(final AccountResource _result) {
firstLevelDataProvider.getList().clear();
- Folder t = null;
for (Folder c : _result.getContainers()) {
if (c.isHome())
firstLevelDataProvider.getList().add(0, c); //Pithos is always first
else if (!c.isTrash())
firstLevelDataProvider.getList().add(c);
}
- if (callback != null)
- callback.execute();
+ if (firstLevelDataProvider.getList().isEmpty())
+ firstLevelDataProvider.getList().add(dummy);
+ if (callback != null) {
+ app.LOG("MysharedTreeViewModel::fetchSharedContainers(), executing callback");
+ callback.execute();
+ }
}
@Override
app.sessionExpired();
}
};
- getAccount.setHeader("X-Auth-Token", app.getToken());
+ getAccount.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
Scheduler.get().scheduleDeferred(getAccount);
}
return firstLevelDataProvider.getList().isEmpty();
return true;
}
-
- private native void log(String msg) /*-{
- $wnd.console.log(msg);
- }-*/;
protected void fetchFolder(final Iterator<Folder> iter, final Command callback) {
+ app.LOG("MysharedTreeViewModel::fetchFolder(), iter=", iter.hasNext(), ", callback=", callback);
if (iter.hasNext()) {
final Folder f = iter.next();
- String path = "/" + f.getContainer() + "?format=json&shared=&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix());
- GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
+ String path = "/" + f.getContainer() + "?format=json&shared=&public=&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix());
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwnerID(), path, f) {
@Override
public void onSuccess(Folder _result) {
fetchFolder(iter, callback);
app.sessionExpired();
}
};
- getFolder.setHeader("X-Auth-Token", app.getToken());
+ getFolder.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
Scheduler.get().scheduleDeferred(getFolder);
}
- else if (callback != null)
+ else if(callback != null) {
callback.execute();
+ }
}
public Folder getSelection() {
return selectionModel.getSelectedObject();
}
- public void updateFolder(Folder folder, boolean showfiles) {
- fetchFolder(folder,showfiles);
+ public void updateFolder(Folder folder, boolean showfiles, Command callback) {
+ fetchFolder(folder, showfiles, callback);
}
- public void fetchFolder(final Folder f, final boolean showfiles) {
- String path = "/" + f.getContainer() + "?format=json&shared=" + URL.encodeQueryString(f.getPrefix());
- GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
+ public void fetchFolder(final Folder f, final boolean showfiles, final Command callback) {
+ app.LOG("MysharedTreeViewModel::fetchFolder(), folder=", f, ", showfiles=", showfiles, ", callback=", callback);
+ String path = "/" + f.getContainer() + "?format=json&shared=&public=" + URL.encodeQueryString(f.getPrefix());
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwnerID(), path, f) {
@Override
public void onSuccess(final Folder _result) {
+ for (File file : _result.getFiles()) {
+ String name = file.getName();
+ if (name.lastIndexOf("/") != -1) {
+ file.setName(name.substring(name.lastIndexOf("/") + 1, name.length()));
+ }
+ }
+
if (showfiles)
app.showFiles(_result);
+ if (callback != null)
+ callback.execute();
}
@Override
app.sessionExpired();
}
};
- getFolder.setHeader("X-Auth-Token", app.getToken());
+ getFolder.setHeader("X-Auth-Token", app.getUserToken());
Scheduler.get().scheduleDeferred(getFolder);
}