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())
vp.addHandler(new ContextMenuHandler() {
@Override
public void onContextMenu(ContextMenuEvent event) {
- Folder selectedFolder = treeView.getSelection();
- FileContextMenu contextMenu = new FileContextMenu(app, images, selectedFolder, getSelectedFiles(), false);
- int x = event.getNativeEvent().getClientX();
- int y = event.getNativeEvent().getClientY();
- contextMenu.setPopupPosition(x, y);
- contextMenu.show();
+ 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);
+ int x = event.getNativeEvent().getClientX();
+ int y = event.getNativeEvent().getClientY();
+ contextMenu.setPopupPosition(x, y);
+ contextMenu.show();
+ }
}
}, ContextMenuEvent.getType());
initWidget(vp);
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()) {
import com.google.gwt.event.dom.client.ClickEvent;\r
import com.google.gwt.event.dom.client.ClickHandler;\r
import com.google.gwt.event.dom.client.KeyCodes;\r
+import com.google.gwt.http.client.Response;\r
import com.google.gwt.i18n.client.DateTimeFormat;\r
import com.google.gwt.user.client.Event.NativePreviewEvent;\r
import com.google.gwt.user.client.ui.Button;\r
updateMetadata(folder.getUri() + "?update=", perms);\r
}\r
\r
- protected void updateMetadata(String path, Map<String, Boolean[]> newPermissions) {\r
+ protected void updateMetadata(final String path, final Map<String, Boolean[]> newPermissions) {\r
if (newPermissions != null) {\r
PostRequest updateFolder = new PostRequest(app.getApiPath(), folder.getOwner(), path) {\r
@Override\r
@Override\r
public void onError(Throwable t) {\r
GWT.log("", t);\r
- app.displayError("System error modifying folder: " + t.getMessage());\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
+ @Override\r
+ public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
+ updateMetadata(path, newPermissions);\r
+ }\r
+\r
+ @Override\r
+ public void onError(Throwable t) {\r
+ GWT.log("", t);\r
+ if(t instanceof RestException){\r
+ app.displayError("Unable to update folder: " + ((RestException) t).getHttpStatusText());\r
+ }\r
+ else\r
+ app.displayError("System error modifying folder: " + t.getMessage());\r
+ }\r
+ };\r
+ newFolder.setHeader("X-Auth-Token", app.getToken());\r
+ newFolder.setHeader("Content-Type", "application/folder");\r
+ newFolder.setHeader("Accept", "*/*");\r
+ newFolder.setHeader("Content-Length", "0");\r
+ Scheduler.get().scheduleDeferred(newFolder);\r
+ }\r
+ }\r
+ else\r
+ app.displayError("System error modifying folder: " + t.getMessage());\r
}\r
};\r
updateFolder.setHeader("X-Auth-Token", app.getToken());\r
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() {
*/
private String token;
- protected SingleSelectionModel<Folder> folderTreeSelectionModel;
- protected FolderTreeViewModel folderTreeViewModel;
- protected FolderTreeView folderTreeView;
+ SingleSelectionModel<Folder> folderTreeSelectionModel;
+ FolderTreeViewModel folderTreeViewModel;
+ FolderTreeView folderTreeView;
- protected SingleSelectionModel<Folder> mysharedTreeSelectionModel;
+ SingleSelectionModel<Folder> mysharedTreeSelectionModel;
private MysharedTreeViewModel mysharedTreeViewModel;
- private MysharedTreeView mysharedTreeView;
+ MysharedTreeView mysharedTreeView;
protected SingleSelectionModel<Folder> otherSharedTreeSelectionModel;
private OtherSharedTreeViewModel otherSharedTreeViewModel;
- private OtherSharedTreeView otherSharedTreeView;
+ OtherSharedTreeView otherSharedTreeView;
protected SingleSelectionModel<Tag> tagTreeSelectionModel;
private TagTreeViewModel tagTreeViewModel;
private GroupTreeViewModel groupTreeViewModel;
private GroupTreeView groupTreeView;
+ private TreeView selectedTree;
protected AccountResource account;
private Folder trash;
@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);
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (folderTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(folderTreeSelectionModel);
+ deselectOthers(folderTreeView, folderTreeSelectionModel);
+ applyPermissions(folderTreeSelectionModel.getSelectedObject());
Folder f = folderTreeSelectionModel.getSelectedObject();
updateFolder(f, true, null);
}
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (mysharedTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(mysharedTreeSelectionModel);
+ deselectOthers(mysharedTreeView, mysharedTreeSelectionModel);
+ upload.setEnabled(false);
updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
}
}
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (otherSharedTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(otherSharedTreeSelectionModel);
+ deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel);
+ applyPermissions(otherSharedTreeSelectionModel.getSelectedObject());
updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true);
}
}
otherSharedTreeViewModel = new OtherSharedTreeViewModel(this, otherSharedTreeSelectionModel);
otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
- tagTreeSelectionModel = new SingleSelectionModel<Tag>();
- tagTreeSelectionModel.addSelectionChangeHandler(new Handler() {
- @Override
- public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
- if (tagTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(tagTreeSelectionModel);
- Tag t = tagTreeSelectionModel.getSelectedObject();
- updateTag(t);
- }
- }
- });
- selectionModels.add(tagTreeSelectionModel);
- tagTreeViewModel = new TagTreeViewModel(this, tagTreeSelectionModel);
- tagTreeView = new TagTreeView(tagTreeViewModel);
-
groupTreeViewModel = new GroupTreeViewModel(this);
groupTreeView = new GroupTreeView(groupTreeViewModel);
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 deselectOthers(SingleSelectionModel model) {
+ 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)
if (!s.equals(model))
s.setSelected(s.getSelectedObject(), false);
*/
protected void authenticateUser() {
Configuration conf = (Configuration) GWT.create(Configuration.class);
- Window.Location.assign(Window.Location.getHost() + conf.loginUrl() + "?next=" + Window.Location.getHref());
+ Window.Location.assign(conf.loginUrl() + "?next=" + Window.Location.getHref());
}
protected void fetchAccount() {
account.removeGroup(group);
updateGroupsNode();
}
+
+ public TreeView getSelectedTree() {
+ return selectedTree;
+ }
+
+ public Folder getSelection() {
+ return selectedTree.getSelection();
+ }
}
--- /dev/null
+package gr.grnet.pithos.web.client;
+
+import gr.grnet.pithos.web.client.foldertree.Folder;
+
+public interface TreeView {
+ public Folder getSelection();
+}
*/
package gr.grnet.pithos.web.client.commands;
+import java.util.Iterator;
+
import gr.grnet.pithos.web.client.Pithos;
+import gr.grnet.pithos.web.client.foldertree.File;
+import gr.grnet.pithos.web.client.foldertree.Folder;
+import gr.grnet.pithos.web.client.foldertree.Resource;
+import gr.grnet.pithos.web.client.rest.DeleteRequest;
+import gr.grnet.pithos.web.client.rest.RestException;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.Scheduler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.PopupPanel;
public class EmptyTrashCommand implements Command{
private PopupPanel containerPanel;
- private Pithos app;
+ Pithos app;
public EmptyTrashCommand(Pithos _app, PopupPanel _containerPanel){
app = _app;
public void execute() {
if (containerPanel != null)
containerPanel.hide();
+
+ final Folder trash = app.getAccount().getTrash();
+ if (trash != null) {
+ Iterator<File> iter = trash.getFiles().iterator();
+ deleteFile(iter, new Command() {
+
+ @Override
+ public void execute() {
+ Iterator<Folder> iter2 = trash.getSubfolders().iterator();
+ deleteSubfolder(iter2, new Command() {
+
+ @Override
+ public void execute() {
+ app.updateTrash(true, null);
+ }
+ });
+ }
+ });
+ }
+ }
+
+ protected void deleteSubfolder(final Iterator<Folder> iter2, final Command callback) {
+ if (iter2.hasNext()) {
+ final Folder f = iter2.next();
+ Iterator<File> iter3 = f.getFiles().iterator();
+ deleteFile(iter3, new Command() {
+
+ @Override
+ public void execute() {
+ Iterator<Folder> iter4 = f.getSubfolders().iterator();
+ deleteSubfolder(iter4, new Command() {
+
+ @Override
+ public void execute() {
+ String path = f.getUri();
+ DeleteRequest deleteF = new DeleteRequest(app.getApiPath(), f.getOwner(), path) {
+
+ @Override
+ public void onSuccess(Resource result) {
+ deleteSubfolder(iter2, callback);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ if (t instanceof RestException) {
+ app.displayError("Unable to delete file:" + ((RestException) t).getHttpStatusText());
+ }
+ else
+ app.displayError("System error deleting file:" + t.getMessage());
+ }
+ };
+ deleteF.setHeader("X-Auth-Token", app.getToken());
+ Scheduler.get().scheduleDeferred(deleteF);
+ }
+ });
+ }
+ });
+ }
+ else {
+ if (callback != null)
+ callback.execute();
+ }
+ }
+
+ void deleteFile(final Iterator<File> iter, final Command callback) {
+ if (iter.hasNext()) {
+ File f = iter.next();
+ String path = f.getUri();
+ DeleteRequest deleteF = new DeleteRequest(app.getApiPath(), f.getOwner(), path) {
+
+ @Override
+ public void onSuccess(Resource result) {
+ deleteFile(iter, callback);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ if (t instanceof RestException) {
+ app.displayError("Unable to delete file:" + ((RestException) t).getHttpStatusText());
+ }
+ else
+ app.displayError("System error deleting file:" + t.getMessage());
+ }
+ };
+ deleteF.setHeader("X-Auth-Token", app.getToken());
+ Scheduler.get().scheduleDeferred(deleteF);
+ }
+ else {
+ if (callback != null)
+ callback.execute();
+ }
}
}
public void removeGroup(Group group) {
groups.remove(group);
}
+
+ public Folder getTrash() {
+ for (Folder c : containers) {
+ if (c.getName().equals(Pithos.TRASH_CONTAINER))
+ return c;
+ }
+ return null;
+ }
}
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Tree;
import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
-public class FolderTreeView extends Composite {
+public class FolderTreeView extends Composite implements TreeView {
public void updateChildren(Folder folder) {
TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
private void updateChildren(TreeNode node, Folder folder) {
for (int i=0; i<node.getChildCount(); i++) {
- if (node.isChildOpen(i)) {
- if (folder.equals(node.getChildValue(i))) {
- node.setChildOpen(i, false, true);
- node.setChildOpen(i, true, true);
- }
- else {
+ if (folder.equals(node.getChildValue(i))) {
+ node.setChildOpen(i, false, true);
+ node.setChildOpen(i, true, true);
+ }
+ else {
+ if (node.isChildOpen(i)) {
TreeNode n = node.setChildOpen(i, true);
updateChildren(n, folder);
}
}
- }
+ }
}
static interface BasicResources extends CellTree.Resources {
package gr.grnet.pithos.web.client.mysharedtree;
import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
import gr.grnet.pithos.web.client.foldertree.Folder;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Tree;
-public class MysharedTreeView extends Composite {
+public class MysharedTreeView extends Composite implements TreeView {
public void updateChildren(Folder folder) {
TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
protected Pithos app;
- private Cell<Folder> folderCell = new AbstractCell<Folder>(ContextMenuEvent.getType().getName()) {
+ private Cell<Folder> folderCell = new AbstractCell<Folder>() {
@Override
public void render(@SuppressWarnings("unused") Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel2.getSelectedObject() != null) {
- app.deselectOthers(selectionModel2);
+ app.deselectOthers(app.getMySharedTreeView(), selectionModel2);
+ app.applyPermissions(null);
fetchSharedFiles();
}
}
package gr.grnet.pithos.web.client.othersharedtree;
import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
import gr.grnet.pithos.web.client.foldertree.Folder;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Tree;
-public class OtherSharedTreeView extends Composite {
+public class OtherSharedTreeView extends Composite implements TreeView {
public void updateChildren(Folder folder) {
TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel2.getSelectedObject() != null) {
- app.deselectOthers(selectionModel2);
+ app.deselectOthers(app.getOtherSharedTreeView(), selectionModel2);
+ app.applyPermissions(null);
app.showFiles(new HashSet<File>());
}
}
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel3.getSelectedObject() != null) {
- app.deselectOthers(selectionModel3);
+ app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3);
+ app.applyPermissions(null);
String username = selectionModel3.getSelectedObject();
fetchSharedFiles(username, userDataProviderMap.get(username));
}