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);
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
*/
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;
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (folderTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(folderTreeSelectionModel);
+ deselectOthers(folderTreeView, folderTreeSelectionModel);
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);
updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
}
}
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (otherSharedTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(otherSharedTreeSelectionModel);
+ deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel);
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);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
- public void deselectOthers(SingleSelectionModel model) {
+ public void deselectOthers(TreeView _selectedTree, SingleSelectionModel model) {
+ selectedTree = _selectedTree;
for (SingleSelectionModel s : selectionModels)
if (!s.equals(model))
s.setSelected(s.getSelectedObject(), false);
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();
+}
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();
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);
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.showFiles(new HashSet<File>());
}
}
@Override
public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
if (selectionModel3.getSelectedObject() != null) {
- app.deselectOthers(selectionModel3);
+ app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3);
String username = selectionModel3.getSelectedObject();
fetchSharedFiles(username, userDataProviderMap.get(username));
}