X-Git-Url: https://code.grnet.gr/git/pithos-web-client/blobdiff_plain/71875b42374951d7b42c3bf5100d4ee3891d14ed..cc0120ab25ea0d3743dc903322ea47beb9ee035b:/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java diff --git a/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java index 9cca940..14cc53c 100644 --- a/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java +++ b/src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java @@ -39,18 +39,14 @@ import gr.grnet.pithos.web.client.FolderContextMenu; import gr.grnet.pithos.web.client.Pithos; import gr.grnet.pithos.web.client.SharingUsers; 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.mysharedtree.MysharedTreeView; import gr.grnet.pithos.web.client.othersharedtree.OtherSharedTreeView.Templates; import gr.grnet.pithos.web.client.rest.GetRequest; import gr.grnet.pithos.web.client.rest.RestException; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.Map; -import java.util.Set; import com.google.gwt.cell.client.AbstractCell; import com.google.gwt.cell.client.Cell; @@ -67,22 +63,21 @@ 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; public class OtherSharedTreeViewModel implements TreeViewModel { - private static final String treeTitle = "Shared to me"; protected Pithos app; + String dummy = "No shares by others yet"; + private Cell folderCell = new AbstractCell(ContextMenuEvent.getType().getName()) { @Override public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) { String html = AbstractImagePrototype.create(OtherSharedTreeView.images.folderYellow()).getHTML(); - safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant(" "); + safeHtmlBuilder.appendHtmlConstant(html).appendHtmlConstant(" "); safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName())); } @@ -105,14 +100,11 @@ public class OtherSharedTreeViewModel implements TreeViewModel { } }; - private ListDataProvider rootDataProvider = new ListDataProvider(); protected ListDataProvider userLevelDataProvider = new ListDataProvider(); protected Map> userDataProviderMap = new HashMap>(); private Map> dataProviderMap = new HashMap>(); - protected Map> sharedFiles = new HashMap>(); - protected SingleSelectionModel selectionModel; public OtherSharedTreeViewModel(Pithos _app, SingleSelectionModel selectionModel) { @@ -123,87 +115,27 @@ public class OtherSharedTreeViewModel implements TreeViewModel { @Override public NodeInfo getNodeInfo(T value) { if (value == null) { - rootDataProvider.getList().add(treeTitle); - final SingleSelectionModel selectionModel2 = new SingleSelectionModel(); - selectionModel2.addSelectionChangeHandler(new Handler() { + fetchSharingUsers(null); + return new DefaultNodeInfo(userLevelDataProvider, new TextCell(new SafeHtmlRenderer() { - @Override - public void onSelectionChange(SelectionChangeEvent event) { - if (selectionModel2.getSelectedObject() != null) { - app.deselectOthers(app.getOtherSharedTreeView(), selectionModel2); - app.applyPermissions(null); - app.showFiles(new HashSet()); - app.showRelevantToolbarButtons(); - } - else { - if (app.getSelectedTree().equals(app.getOtherSharedTreeView()) && app.getOtherSharedTreeView().getSelection() == null) - app.setSelectedTree(null); - if (app.getSelectedTree() == null) - app.showRelevantToolbarButtons(); - } - } - }); - app.addSelectionModel(selectionModel2); - return new DefaultNodeInfo(rootDataProvider, new TextCell(new SafeHtmlRenderer() { - @Override - public SafeHtml render(String object) { + @Override + public SafeHtml render(String object) { SafeHtmlBuilder builder = new SafeHtmlBuilder(); render(object, builder); return builder.toSafeHtml(); - } + } - @Override - public void render(String object, SafeHtmlBuilder builder) { - String html = AbstractImagePrototype.create(OtherSharedTreeView.images.othersShared()).getHTML(); - builder.appendHtmlConstant(html).appendHtmlConstant(" "); + @Override + public void render(String object, SafeHtmlBuilder builder) { + if (!object.equals(dummy)) { + String html = AbstractImagePrototype.create(OtherSharedTreeView.images.myShared()).getHTML(); + builder.appendHtmlConstant(html).appendHtmlConstant(" "); + } builder.append(OtherSharedTreeView.Templates.INSTANCE.nameSpan(object)); - } - }), selectionModel2, null); + } + }), null, null); } else if (value instanceof String) { - if (value.equals(treeTitle)) { - fetchSharingUsers(null); - final SingleSelectionModel selectionModel3 = new SingleSelectionModel(); - selectionModel3.addSelectionChangeHandler(new Handler() { - - @Override - public void onSelectionChange(SelectionChangeEvent event) { - if (selectionModel3.getSelectedObject() != null) { - app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3); - app.applyPermissions(null); - String username = selectionModel3.getSelectedObject(); - if (userDataProviderMap.get(username) == null) { - userDataProviderMap.put(username, new ListDataProvider()); - } - fetchSharedFiles(username, userDataProviderMap.get(username)); - app.showRelevantToolbarButtons(); - } - else { - if (app.getSelectedTree().equals(app.getOtherSharedTreeView()) && app.getOtherSharedTreeView().getSelection() == null) - app.setSelectedTree(null); - if (app.getSelectedTree() == null) - app.showRelevantToolbarButtons(); - } - } - }); - app.addSelectionModel(selectionModel3); - return new DefaultNodeInfo(userLevelDataProvider, new TextCell(new SafeHtmlRenderer() { - - @Override - public SafeHtml render(String object) { - SafeHtmlBuilder builder = new SafeHtmlBuilder(); - render(object, builder); - return builder.toSafeHtml(); - } - - @Override - public void render(String object, SafeHtmlBuilder builder) { - String html = AbstractImagePrototype.create(OtherSharedTreeView.images.user()).getHTML(); - builder.appendHtmlConstant(html).appendHtmlConstant(" "); - builder.append(OtherSharedTreeView.Templates.INSTANCE.nameSpan(object)); - } - }), selectionModel3, null); - } String username = (String) value; if (userDataProviderMap.get(username) == null) { userDataProviderMap.put(username, new ListDataProvider()); @@ -218,7 +150,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel { dataProviderMap.put(f, new ListDataProvider()); } final ListDataProvider dataProvider = dataProviderMap.get(f); - fetchFolder(f, dataProvider, false); + fetchFolder(f, dataProvider, false, null); return new DefaultNodeInfo(dataProvider, folderCell, selectionModel, null); } } @@ -229,9 +161,8 @@ public class OtherSharedTreeViewModel implements TreeViewModel { public void onSuccess(final SharingUsers _result) { userLevelDataProvider.getList().clear(); userLevelDataProvider.getList().addAll(_result.getUsers()); - for (String name : _result.getUsers()) { - sharedFiles.put(name, new HashSet()); - } + if (userLevelDataProvider.getList().isEmpty()) + userLevelDataProvider.getList().add(dummy); Iterator iter = _result.getUsers().iterator(); fetchSharedContainers(iter, callback); } @@ -251,7 +182,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel { app.sessionExpired(); } }; - getSharingUsers.setHeader("X-Auth-Token", app.getToken()); + getSharingUsers.setHeader("X-Auth-Token", app.getUserToken()); Scheduler.get().scheduleDeferred(getSharingUsers); } @@ -279,14 +210,12 @@ public class OtherSharedTreeViewModel implements TreeViewModel { @Override public boolean isLeaf(Object o) { if (o == null) - return false; + return userLevelDataProvider.getList().isEmpty(); else if (o instanceof Folder) { Folder f = (Folder) o; return f.getSubfolders().isEmpty(); } else { - if (o.equals(treeTitle)) - return userLevelDataProvider.getList().isEmpty(); ListDataProvider dp = userDataProviderMap.get(o); if (dp != null) return dp.getList().isEmpty(); @@ -328,45 +257,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel { app.sessionExpired(); } }; - getUserSharedContainers.setHeader("X-Auth-Token", app.getToken()); - Scheduler.get().scheduleDeferred(getUserSharedContainers); - } - - protected void fetchSharedFiles(final String username, final ListDataProvider dataProvider) { - GetRequest getUserSharedContainers = new GetRequest(AccountResource.class, app.getApiPath(), username, "?format=json") { - - @Override - public void onSuccess(AccountResource _result) { - final ListDataProvider tempProvider = new ListDataProvider(); - Iterator iter = _result.getContainers().iterator(); - sharedFiles.get(username).clear(); - fetchFolder(username, iter, tempProvider, new Command() { - - @Override - public void execute() { - dataProvider.getList().clear(); - dataProvider.getList().addAll(tempProvider.getList()); - app.showFiles(sharedFiles.get(username)); - } - }); - } - - @Override - public void onError(Throwable t) { - GWT.log("Error getting account", t); - app.setError(t); - if (t instanceof RestException) - app.displayError("Error getting account: " + ((RestException) t).getHttpStatusText()); - else - app.displayError("System error fetching user data: " + t.getMessage()); - } - - @Override - protected void onUnauthorized(Response response) { - app.sessionExpired(); - } - }; - getUserSharedContainers.setHeader("X-Auth-Token", app.getToken()); + getUserSharedContainers.setHeader("X-Auth-Token", app.getUserToken()); Scheduler.get().scheduleDeferred(getUserSharedContainers); } @@ -378,24 +269,8 @@ public class OtherSharedTreeViewModel implements TreeViewModel { GetRequest getFolder = new GetRequest(Folder.class, app.getApiPath(), username, path, f) { @Override public void onSuccess(Folder _result) { - if (!_result.isShared() && !_result.isContainer()) { - for (File file : _result.getFiles()) { - if (file.isSharedOrPublished()) - sharedFiles.get(username).add(file); - } - Iterator iter2 = _result.getSubfolders().iterator(); - fetchFolder(username, iter2, dataProvider, new Command() { - - @Override - public void execute() { - fetchFolder(username, iter, dataProvider, callback); - } - }); - } - else { - dataProvider.getList().add(_result); - fetchFolder(username, iter, dataProvider, callback); - } + dataProvider.getList().add(_result); + fetchFolder(username, iter, dataProvider, callback); } @Override @@ -413,7 +288,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel { app.sessionExpired(); } }; - getFolder.setHeader("X-Auth-Token", app.getToken()); + getFolder.setHeader("X-Auth-Token", app.getUserToken()); Scheduler.get().scheduleDeferred(getFolder); } else if (callback != null) @@ -424,15 +299,15 @@ public class OtherSharedTreeViewModel implements TreeViewModel { return selectionModel.getSelectedObject(); } - public void updateFolder(Folder folder, boolean showfiles) { + public void updateFolder(Folder folder, boolean showfiles, Command callback) { if (dataProviderMap.get(folder) == null) { dataProviderMap.put(folder, new ListDataProvider()); } final ListDataProvider dataProvider = dataProviderMap.get(folder); - fetchFolder(folder, dataProvider, showfiles); + fetchFolder(folder, dataProvider, showfiles, callback); } - public void fetchFolder(final Folder f, final ListDataProvider dataProvider, final boolean showfiles) { + public void fetchFolder(final Folder f, final ListDataProvider dataProvider, final boolean showfiles, final Command callback) { String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()); GetRequest getFolder = new GetRequest(Folder.class, app.getApiPath(), f.getOwner(), path, f) { @Override @@ -446,6 +321,8 @@ public class OtherSharedTreeViewModel implements TreeViewModel { dataProvider.getList().clear(); dataProvider.getList().addAll(_result.getSubfolders()); app.getOtherSharedTreeView().updateChildren(f); + if (callback != null) + callback.execute(); } }); } @@ -465,7 +342,7 @@ public class OtherSharedTreeViewModel implements TreeViewModel { app.sessionExpired(); } }; - getFolder.setHeader("X-Auth-Token", app.getToken()); + getFolder.setHeader("X-Auth-Token", app.getUserToken()); Scheduler.get().scheduleDeferred(getFolder); }