X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/bc9942d1bfe87009a02e95c472f77fec5a569095..302b2750560cd22321da9aa99da9a93b9612ed68:/src/gr/ebs/gss/client/FileList.java diff --git a/src/gr/ebs/gss/client/FileList.java b/src/gr/ebs/gss/client/FileList.java index 9cc053a..9a91a04 100644 --- a/src/gr/ebs/gss/client/FileList.java +++ b/src/gr/ebs/gss/client/FileList.java @@ -236,7 +236,6 @@ public class FileList extends Composite implements ClickHandler { nextButton.addClickHandler(this); contextMenu = new DnDSimpleFocusPanel(new HTML(AbstractImagePrototype.create(images.fileContextMenu()).getHTML())); - contextMenu.addClickHandler(new FileContextMenu(images, false, false)); GSS.get().getDragController().makeDraggable(contextMenu); // Setup the table. @@ -348,7 +347,7 @@ public class FileList extends Composite implements ClickHandler { String resource = file.getUri().substring(app.getApiPath().length() - 1, file.getUri().length()); String sig = app.getCurrentUserResource().getUsername() + " " + RestCommand.calculateSig("GET", dateString, resource, - RestCommand.base64decode(app.getToken().replaceAll(" ", "+"))); + RestCommand.base64decode(app.getToken())); Window.open(file.getUri() + "?Authorization=" + URL.encodeComponent(sig) + "&Date=" + URL.encodeComponent(dateString), "_blank", ""); event.preventDefault(); return; @@ -723,7 +722,22 @@ public class FileList extends Composite implements ClickHandler { */ private AbstractImagePrototype getFileIcon(FileResource file) { String mimetype = file.getContentType(); - boolean shared = file.isShared(); + boolean shared=false; + Folders folders = GSS.get().getFolders(); + if(folders.getCurrent() != null && folders.isOthersSharedItem(folders.getCurrent())){ + DnDTreeItem otherUser = (DnDTreeItem) folders.getUserOfSharedItem(folders.getCurrent()); + if(otherUser==null) + shared = false; + else{ + String uname = otherUser.getOtherUserResource().getUsername(); + if(uname==null) + uname = ((DnDTreeItem)folders.getSharesItem()).getOthersResource().getUsernameOfUri(otherUser.getOtherUserResource().getUri()); + if(uname != null) + shared = file.isShared(); + } + } + else + shared = file.isShared(); if (mimetype == null) return shared ? AbstractImagePrototype.create(images.documentShared()) : AbstractImagePrototype.create(images.document()); mimetype = mimetype.toLowerCase(); @@ -790,9 +804,9 @@ public class FileList extends Composite implements ClickHandler { updateFileCache(clearSelection); else if (GSS.get().getFolders().getCurrent() != null) { final DnDTreeItem folderItem = (DnDTreeItem) GSS.get().getFolders().getCurrent(); - if (folderItem.getFolderResource() != null) { + if(GSS.get().getFolders().isFileItem(folderItem) || GSS.get().getFolders().isMySharedItem(folderItem) || GSS.get().getFolders().isOthersSharedItem(folderItem)){ update(true); - GetCommand gf = new GetCommand(FolderResource.class, folderItem.getFolderResource().getUri()) { + GetCommand gf = new GetCommand(FolderResource.class, folderItem.getFolderResource().getUri(),folderItem.getFolderResource()) { @Override public void onComplete() { @@ -804,7 +818,7 @@ public class FileList extends Composite implements ClickHandler { filePaths[c] = fpath + "?" + Math.random(); c++; } - MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths){ + MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getFolderResource().getFileCache()){ @Override public void onComplete(){ @@ -815,8 +829,10 @@ public class FileList extends Composite implements ClickHandler { int indexOfQuestionMark = p.lastIndexOf('?'); if(indexOfQuestionMark>0) r.setUri(p.substring(0, indexOfQuestionMark)); + GWT.log("FETCHED:"+r.getLastModifiedSince(), null); } folderItem.getFolderResource().setFiles(result); + folderItem.getFolderResource().setFilesExpanded(true); updateFileCache(clearSelection, newFilename); } @@ -847,7 +863,7 @@ public class FileList extends Composite implements ClickHandler { }; DeferredCommand.addCommand(gf); } else if (folderItem.getTrashResource() != null) { - GetCommand gt = new GetCommand(TrashResource.class, folderItem.getTrashResource().getUri()) { + GetCommand gt = new GetCommand(TrashResource.class, folderItem.getTrashResource().getUri(), null) { @Override public void onComplete() { @@ -868,12 +884,50 @@ public class FileList extends Composite implements ClickHandler { }; DeferredCommand.addCommand(gt); } else if (folderItem.getSharedResource() != null) { - GetCommand gt = new GetCommand(SharedResource.class, folderItem.getSharedResource().getUri()) { + GetCommand gt = new GetCommand(SharedResource.class, folderItem.getSharedResource().getUri(), null) { @Override public void onComplete() { folderItem.setUserObject(getResult()); updateFileCache(clearSelection, newFilename); + String[] filePaths = new String[folderItem.getSharedResource().getFilePaths().size()]; + int c=0; + for(String fpath : folderItem.getSharedResource().getFilePaths()){ + filePaths[c] = fpath + "?" + Math.random(); + c++; + } + MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getSharedResource().getFileCache()){ + + @Override + public void onComplete(){ + List result = getResult(); + //remove random from path + for(FileResource r : result){ + String p = r.getUri(); + int indexOfQuestionMark = p.lastIndexOf('?'); + if(indexOfQuestionMark>0) + r.setUri(p.substring(0, indexOfQuestionMark)); + GWT.log("FETCHED:"+r.getLastModifiedSince(), null); + } + folderItem.getSharedResource().setFiles(result); + folderItem.getSharedResource().setFilesExpanded(true); + updateFileCache(clearSelection, newFilename); + } + + @Override + public void onError(String p, Throwable throwable) { + if(throwable instanceof RestException) + GSS.get().displayError("Unable to retrieve file details:"+((RestException)throwable).getHttpStatusText()); + } + + @Override + public void onError(Throwable t) { + GWT.log("", t); + GSS.get().displayError("Unable to fetch files for folder " + folderItem.getFolderResource().getName()); + } + + }; + DeferredCommand.addCommand(getFiles); } @Override @@ -884,12 +938,50 @@ public class FileList extends Composite implements ClickHandler { }; DeferredCommand.addCommand(gt); } else if (folderItem.getOtherUserResource() != null) { - GetCommand gt = new GetCommand(OtherUserResource.class, folderItem.getOtherUserResource().getUri()) { + GetCommand gt = new GetCommand(OtherUserResource.class, folderItem.getOtherUserResource().getUri(), null) { @Override public void onComplete() { folderItem.setUserObject(getResult()); updateFileCache(clearSelection, newFilename); + String[] filePaths = new String[folderItem.getOtherUserResource().getFilePaths().size()]; + int c=0; + for(String fpath : folderItem.getOtherUserResource().getFilePaths()){ + filePaths[c] = fpath + "?" + Math.random(); + c++; + } + MultipleHeadCommand getFiles = new MultipleHeadCommand(FileResource.class, filePaths, folderItem.getOtherUserResource().getFileCache()){ + + @Override + public void onComplete(){ + List result = getResult(); + //remove random from path + for(FileResource r : result){ + String p = r.getUri(); + int indexOfQuestionMark = p.lastIndexOf('?'); + if(indexOfQuestionMark>0) + r.setUri(p.substring(0, indexOfQuestionMark)); + GWT.log("FETCHED:"+r.getLastModifiedSince(), null); + } + folderItem.getOtherUserResource().setFiles(result); + folderItem.getOtherUserResource().setFilesExpanded(true); + updateFileCache(clearSelection, newFilename); + } + + @Override + public void onError(String p, Throwable throwable) { + if(throwable instanceof RestException) + GSS.get().displayError("Unable to retrieve file details:"+((RestException)throwable).getHttpStatusText()); + } + + @Override + public void onError(Throwable t) { + GWT.log("", t); + GSS.get().displayError("Unable to fetch files for folder " + folderItem.getFolderResource().getName()); + } + + }; + DeferredCommand.addCommand(getFiles); } @Override