if (iter.hasNext()) {\r
File f = iter.next();\r
String path = f.getUri();\r
- DeleteRequest deleteFile = new DeleteRequest(app.getApiPath(), app.getUsername(), path) {\r
+ DeleteRequest deleteFile = new DeleteRequest(app.getApiPath(), f.getOwner(), path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
deleteFile(iter);\r
*
* @param newImages the image bundle passed on by the parent object
*/
- public FileContextMenu(final Pithos app, Images newImages, Folder selectedFolder, List<File> selectedFiles, boolean isTrash) {
+ public FileContextMenu(final Pithos app, Images newImages, TreeView selectedTree, Folder selectedFolder, List<File> selectedFiles, boolean isTrash) {
// The popup's constructor's argument is a boolean specifying that it
// auto-close itself when the user clicks outside of it.
super(true);
setAnimationEnabled(true);
images = newImages;
MenuBar contextMenu = new MenuBar(true);
+ Boolean[] permissions = null;
+ boolean canWrite = true;
+ if (selectedFolder != null) {
+ permissions = selectedFolder.getPermissions().get(app.getUsername());
+ canWrite = selectedFolder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
+ }
+ else {
+ for (File f : selectedFiles) {
+ permissions = f.getPermissions().get(app.getUsername());
+ canWrite &= (f.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]));
+ }
+ }
- Boolean[] permissions = selectedFolder.getPermissions().get(app.getUsername());
- boolean canWrite = selectedFolder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
-
- if (!selectedFolder.isInTrash()) {
+ if (selectedFolder != null && !selectedFolder.isInTrash()) {
if (canWrite && app.getClipboard().hasFiles()) {
pasteItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.paste()).getHTML() + " Paste</span>", true, new PasteCommand(app, this, selectedFolder));
contextMenu.addItem(pasteItem);
copyItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(app, this, selectedFiles));
contextMenu.addItem(copyItem);
- if (canWrite) {
+ if (selectedTree.equals(app.getFolderTreeView())) {
trashItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(app, this, selectedFiles));
contextMenu.addItem(trashItem);
}
TreeView tree = app.getSelectedTree();
if (tree != null && (tree.equals(app.getFolderTreeView()) || tree.equals(app.getOtherSharedTreeView()))) {
Folder selectedFolder = app.getSelection();
- FileContextMenu contextMenu = new FileContextMenu(app, images, selectedFolder, getSelectedFiles(), false);
+ FileContextMenu contextMenu = new FileContextMenu(app, images, tree, selectedFolder, getSelectedFiles(), false);
int x = event.getNativeEvent().getClientX();
int y = event.getNativeEvent().getClientY();
contextMenu.setPopupPosition(x, y);
PutRequest updateFile = new PutRequest(app.getApiPath(), app.getUsername(), path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
- updateMetaData(app.getApiPath(), app.getUsername(), path + "?update=", newTags, finalPublished, perms);\r
+ updateMetaData(app.getApiPath(), file.getOwner(), path + "?update=", newTags, finalPublished, perms);\r
}\r
\r
@Override\r
private void createFolder() {\r
String name = folderName.getText();\r
String path = folder.getUri() + "/" + name;\r
- PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {\r
+ PutRequest createFolder = new PutRequest(app.getApiPath(), folder.getOwner(), path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
app.updateFolder(folder, true, null);\r
final String newName = folderName.getText().trim();\r
if (!folder.isContainer() && !folder.getName().equals(newName)) {\r
final String path = folder.getParent().getUri() + "/" + newName;\r
- PutRequest newFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {\r
+ PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getParent().getOwner(), path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
Iterator<File> iter = folder.getFiles().iterator();\r
- app.copyFiles(iter, folder.getParent().getUri() + "/" + newName, new Command() {\r
+ app.copyFiles(iter, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
@Override\r
public void execute() {\r
Iterator<Folder> iterf = folder.getSubfolders().iterator();\r
- app.copySubfolders(iterf, folder.getParent().getUri() + "/" + newName, new Command() {\r
+ app.copySubfolders(iterf, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
@Override\r
public void execute() {\r
app.deleteFolder(folder);\r
if (t instanceof RestException) {\r
if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) { //Probably a virtual folder\r
final String path1 = folder.getUri();\r
- PutRequest newFolder = new PutRequest(app.getApiPath(), app.getUsername(), path1) {\r
+ PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getOwner(), path1) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
updateMetadata(path, newPermissions);\r
}
public void deleteFolder(final Folder folder) {
- String path = getApiPath() + getUsername() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + folder.getPrefix();
+ String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + folder.getPrefix();
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
builder.setHeader("If-Modified-Since", "0");
builder.setHeader("X-Auth-Token", getToken());
if (o != null && !o.containsKey("subdir")) {
JSONString name = o.get("name").isString();
String path = "/" + folder.getContainer() + "/" + name.stringValue();
- DeleteRequest delete = new DeleteRequest(getApiPath(), getUsername(), path) {
+ DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
deleteObject(folder, i + 1, array);
return folderTreeView;
}
- public void copyFiles(final Iterator<File> iter, final String targetUri, final Command callback) {
+ public void copyFiles(final Iterator<File> iter, final String targetUsername, final String targetUri, final Command callback) {
if (iter.hasNext()) {
File file = iter.next();
String path = targetUri + "/" + file.getName();
- PutRequest copyFile = new PutRequest(getApiPath(), getUsername(), path) {
+ PutRequest copyFile = new PutRequest(getApiPath(), targetUsername, path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
- copyFiles(iter, targetUri, callback);
+ copyFiles(iter, targetUsername, targetUri, callback);
}
@Override
}
}
- public void copySubfolders(final Iterator<Folder> iter, final String targetUri, final Command callback) {
+ public void copySubfolders(final Iterator<Folder> iter, final String targetUsername, final String targetUri, final Command callback) {
if (iter.hasNext()) {
final Folder f = iter.next();
- copyFolder(f, targetUri, callback);
+ copyFolder(f, targetUsername, targetUri, callback);
}
else if (callback != null) {
callback.execute();
}
}
- public void copyFolder(final Folder f, final String targetUri, final Command callback) {
+ public void copyFolder(final Folder f, final String targetUsername, final String targetUri, final Command callback) {
String path = targetUri + "/" + f.getName();
- PutRequest createFolder = new PutRequest(getApiPath(), getUsername(), path) {
+ PutRequest createFolder = new PutRequest(getApiPath(), targetUsername, path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
Iterator<File> iter = f.getFiles().iterator();
- copyFiles(iter, targetUri + "/" + f.getName(), new Command() {
+ copyFiles(iter, targetUsername, targetUri + "/" + f.getName(), new Command() {
@Override
public void execute() {
Iterator<Folder> iterf = f.getSubfolders().iterator();
- copySubfolders(iterf, targetUri + "/" + f.getName(), new Command() {
+ copySubfolders(iterf, targetUsername, targetUri + "/" + f.getName(), new Command() {
@Override
public void execute() {
callback.execute();
downloadHtml.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
- String fileUrl = app.getApiPath() + app.getUsername() + file.getUri() + "?X-Auth-Token=" + app.getToken() + "&version=" + v.getVersion();
+ String fileUrl = app.getApiPath() + file.getOwner() + file.getUri() + "?X-Auth-Token=" + app.getToken() + "&version=" + v.getVersion();
Window.open(fileUrl, "_BLANK", "");
}
});
if (clipboardItem instanceof Folder) {
final Folder tobeCopied = (Folder) clipboardItem;
if (operation == Clipboard.COPY) {
- app.copyFolder(tobeCopied, folder.getUri(), new Command() {
+ app.copyFolder(tobeCopied, folder.getOwner(), folder.getUri(), new Command() {
@Override
public void execute() {
app.getClipboard().clear();
});
}
else {
- app.copyFolder(tobeCopied, folder.getUri(), new Command() {
+ app.copyFolder(tobeCopied, folder.getOwner(), folder.getUri(), new Command() {
@Override
public void execute() {
app.getClipboard().clear();
List<File> tobeCopied = (List<File>) clipboardItem;
Iterator<File> iter = tobeCopied.iterator();
if (operation == Clipboard.COPY) {
- app.copyFiles(iter, folder.getUri(), new Command() {
+ app.copyFiles(iter, folder.getOwner(), folder.getUri(), new Command() {
@Override
public void execute() {
app.getClipboard().clear();
if (iter.hasNext()) {
File file = iter.next();
String path = folder.getUri() + "/" + file.getName();
- PutRequest copyFile = new PutRequest(app.getApiPath(), app.getUsername(), path) {
+ PutRequest copyFile = new PutRequest(app.getApiPath(), folder.getOwner(), path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
moveFiles(iter, callback);
final Folder f = iter.next();
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
- GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
@Override
public void onSuccess(@SuppressWarnings("unused") Folder _result) {
fetchFolder(iter, callback);
@Override
public void execute() {
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
- GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
@Override
public void onSuccess(final Folder _result) {
if (showfiles)
final Folder f = iter.next();
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
- GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
@Override
public void onSuccess(Folder _result) {
if (!_result.isShared()) {
public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles) {
String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
- GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+ GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
@Override
public void onSuccess(final Folder _result) {
if (showfiles)
app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3);
app.applyPermissions(null);
String username = selectionModel3.getSelectedObject();
+ if (userDataProviderMap.get(username) == null) {
+ userDataProviderMap.put(username, new ListDataProvider<Folder>());
+ }
fetchSharedFiles(username, userDataProviderMap.get(username));
}
}