images = newImages;
MenuBar contextMenu = new MenuBar(true);
+ 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 (app.getClipboard().hasFiles()) {
+ 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);
}
- MenuItem upload = new MenuItem("<span>" + AbstractImagePrototype.create(images.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(app, this, selectedFolder));
- contextMenu.addItem(upload);
-
- cutItem = new MenuItem("<span id='fileContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(app, this, selectedFiles));
- contextMenu.addItem(cutItem);
+ if (canWrite) {
+ MenuItem upload = new MenuItem("<span>" + AbstractImagePrototype.create(images.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(app, this, selectedFolder));
+ contextMenu.addItem(upload);
+
+ cutItem = new MenuItem("<span id='fileContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(app, this, selectedFiles));
+ contextMenu.addItem(cutItem);
+ }
copyItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(app, this, selectedFiles));
contextMenu.addItem(copyItem);
- trashItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(app, this, selectedFiles));
- contextMenu.addItem(trashItem);
+ if (canWrite) {
+ trashItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(app, this, selectedFiles));
+ contextMenu.addItem(trashItem);
+ }
}
else {
MenuItem restore = new MenuItem("<span>" + AbstractImagePrototype.create(images.versions()).getHTML() + " Restore</span>", true, new RestoreTrashCommand(app, this, selectedFiles));
contextMenu.addItem(restore);
}
- deleteItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(app, this, selectedFiles, MessagePanel.images));
- contextMenu.addItem(deleteItem);
+ if (canWrite) {
+ deleteItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(app, this, selectedFiles, MessagePanel.images));
+ contextMenu.addItem(deleteItem);
+ }
// MenuItem refresh = new MenuItem("<span>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
// contextMenu.addItem(refresh);
// sharingItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, images, 1));
// contextMenu.addItem(sharingItem);
if (!selectedFolder.isInTrash()) {
- if (selectedFiles.size() == 1)
+ if (canWrite && selectedFiles.size() == 1)
contextMenu.addItem(new MenuItem("<span>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(app, this, selectedFiles, images, 0)));
if (!selectedFiles.isEmpty())
GWT.log(results, null);
app.displayError(results);
}
- app.updateFolder(folder, true, null);
+ if (app.getSelectedTree().equals(app.getFolderTreeView()))
+ app.updateFolder(folder, true, null);
+ else
+ app.updateOtherSharedFolder(folder, true);
hide();
}
});
return;
}
final String fname = getFilename(upload.getFilename());
- String apath = app.getApiPath() + app.getUsername() + folder.getUri() + "/" + fname;
+ String apath = app.getApiPath() + folder.getOwner() + folder.getUri() + "/" + fname;
form.setAction(apath);
submit.setEnabled(false);
upload.setVisible(false);
images = newImages;
MenuBar contextMenu = new MenuBar(true);
- if (!folder.isInTrash()) {
- MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(app, this, folder, images));
- contextMenu.addItem(newFolder);
+ Boolean[] permissions = folder.getPermissions().get(app.getUsername());
+ boolean canWrite = folder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
- if (!folder.isContainer()) {
- MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(app, this, folder));
- contextMenu.addItem(cut);
- }
+ if (!folder.isInTrash()) {
+ if (canWrite) {
+ MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(app, this, folder, images));
+ contextMenu.addItem(newFolder);
+
+ if (!folder.isContainer()) {
+ MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(app, this, folder));
+ contextMenu.addItem(cut);
+ }
+ }
MenuItem copy = new MenuItem("<span id = 'folderContextMenu.copy'>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(app, this, folder));
contextMenu.addItem(copy);
- if (!app.getClipboard().isEmpty()) {
- pasteItem = new MenuItem("<span id = 'folderContextMenu.paste'>" + AbstractImagePrototype.create(newImages.paste()).getHTML() + " Paste</span>", true, new PasteCommand(app, this, folder));
- contextMenu.addItem(pasteItem);
- }
-
- if (!folder.isContainer()) {
- MenuItem moveToTrash = new MenuItem("<span id = 'folderContextMenu.moveToTrash'>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(app, this, folder));
- contextMenu.addItem(moveToTrash);
-
- MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(app, this, folder, MessagePanel.images));
- contextMenu.addItem(delete);
-
- MenuItem properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(app, this, folder, newImages, 0));
- contextMenu.addItem(properties);
- }
+ if (canWrite) {
+ if (!app.getClipboard().isEmpty()) {
+ pasteItem = new MenuItem("<span id = 'folderContextMenu.paste'>" + AbstractImagePrototype.create(newImages.paste()).getHTML() + " Paste</span>", true, new PasteCommand(app, this, folder));
+ contextMenu.addItem(pasteItem);
+ }
+
+ if (!folder.isContainer()) {
+ MenuItem moveToTrash = new MenuItem("<span id = 'folderContextMenu.moveToTrash'>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(app, this, folder));
+ contextMenu.addItem(moveToTrash);
+
+ MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(app, this, folder, MessagePanel.images));
+ contextMenu.addItem(delete);
+
+ MenuItem properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(app, this, folder, newImages, 0));
+ contextMenu.addItem(properties);
+ }
+ }
}
else {
if (!folder.isTrash()) {
public void onValueChange(ValueChangeEvent<Boolean> booleanValueChangeEvent) {
Boolean[] ps = permissions.get(user);
ps[0] = booleanValueChangeEvent.getValue();
+ hasChanges = true;
}
});
write.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
public void onValueChange(ValueChangeEvent<Boolean> booleanValueChangeEvent) {
Boolean[] ps = permissions.get(user);
ps[1] = booleanValueChangeEvent.getValue();
+ hasChanges = true;
}
});
PushButton removeButton = new PushButton(AbstractImagePrototype.create(images.delete()).createImage(), new ClickHandler() {
@SuppressWarnings("rawtypes")
private List<SingleSelectionModel> selectionModels = new ArrayList<SingleSelectionModel>();
+
+ Button upload;
@Override
public void onModuleLoad() {
rightside.addStyleName("pithos-rightSide");
rightside.setSpacing(5);
- PushButton parentButton = new PushButton(new Image(images.asc()), new ClickHandler() {
- @Override
- public void onClick(@SuppressWarnings("unused") ClickEvent event) {
-
- }
- });
- parentButton.addStyleName("pithos-parentButton");
- rightside.add(parentButton);
-
HTML folderStatistics = new HTML("5 Files (size: 1.1GB)");
folderStatistics.addStyleName("pithos-folderStatistics");
rightside.add(folderStatistics);
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (folderTreeSelectionModel.getSelectedObject() != null) {
deselectOthers(folderTreeView, folderTreeSelectionModel);
+ applyPermissions(folderTreeSelectionModel.getSelectedObject());
Folder f = folderTreeSelectionModel.getSelectedObject();
updateFolder(f, true, null);
}
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (mysharedTreeSelectionModel.getSelectedObject() != null) {
deselectOthers(mysharedTreeView, mysharedTreeSelectionModel);
+ upload.setEnabled(false);
updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
}
}
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (otherSharedTreeSelectionModel.getSelectedObject() != null) {
deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel);
+ applyPermissions(otherSharedTreeSelectionModel.getSelectedObject());
updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true);
}
}
VerticalPanel trees = new VerticalPanel();
- Button upload = new Button("Upload File", new ClickHandler() {
+ upload = new Button("Upload File", new ClickHandler() {
@Override
public void onClick(@SuppressWarnings("unused") ClickEvent event) {
- new UploadFileCommand(Pithos.this, null, folderTreeView.getSelection()).execute();
+ new UploadFileCommand(Pithos.this, null, getSelection()).execute();
}
});
upload.addStyleName("pithos-uploadButton");
});
}
- @SuppressWarnings({ "rawtypes", "unchecked" })
+ public void applyPermissions(Folder f) {
+ if (f != null) {
+ if (f.isInTrash())
+ upload.setEnabled(false);
+ else {
+ Boolean[] perms = f.getPermissions().get(username);
+ if (f.getOwner().equals(username) || (perms != null && perms[1] != null && perms[1])) {
+ upload.setEnabled(true);
+ }
+ else
+ upload.setEnabled(false);
+ }
+ }
+ else
+ upload.setEnabled(false);
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public void deselectOthers(TreeView _selectedTree, SingleSelectionModel model) {
selectedTree = _selectedTree;
for (SingleSelectionModel s : selectionModels)
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel2.getSelectedObject() != null) {
app.deselectOthers(app.getMySharedTreeView(), selectionModel2);
+ app.applyPermissions(null);
fetchSharedFiles();
}
}
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel2.getSelectedObject() != null) {
app.deselectOthers(app.getOtherSharedTreeView(), selectionModel2);
+ app.applyPermissions(null);
app.showFiles(new HashSet<File>());
}
}
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel3.getSelectedObject() != null) {
app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3);
+ app.applyPermissions(null);
String username = selectionModel3.getSelectedObject();
fetchSharedFiles(username, userDataProviderMap.get(username));
}