return;
if (menu != null)
menu.hide();
- menu = new FolderContextMenu(images);
- menu.setPopupPosition(x, y);
- menu.show();
+// menu = new FolderContextMenu(images);
+// menu.setPopupPosition(x, y);
+// menu.show();
}
private boolean init=false;
public boolean fetchRootFolders() {
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.GssSimplePager;
-import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
*/
private final Images images;
- private FileContextMenu contextMenu;
-
private DragAndDropCellTable<File> celltable;
private final MultiSelectionModel<File> selectionModel;
vp.addHandler(new ContextMenuHandler() {
@Override
public void onContextMenu(ContextMenuEvent event) {
- contextMenu = new FileContextMenu(images, treeView.getSelection(), false);
+ FileContextMenu contextMenu = new FileContextMenu(images, treeView.getSelection(), false);
int x = event.getNativeEvent().getClientX();
int y = event.getNativeEvent().getClientY();
contextMenu.setPopupPosition(x, y);
celltable.setPageSize(GSS.VISIBLE_FILE_COUNT);
sinkEvents(Event.ONCONTEXTMENU);
- sinkEvents(Event.ONMOUSEUP);
- sinkEvents(Event.ONMOUSEDOWN);
- sinkEvents(Event.ONCLICK);
- sinkEvents(Event.ONKEYDOWN);
- sinkEvents(Event.ONDBLCLICK);
+// sinkEvents(Event.ONMOUSEUP);
+// sinkEvents(Event.ONMOUSEDOWN);
+// sinkEvents(Event.ONCLICK);
+// sinkEvents(Event.ONKEYDOWN);
+// sinkEvents(Event.ONDBLCLICK);
GSS.preventIESelection();
}
boolean newFolderVisible = !(selectedItem != null && (selectedItem instanceof TrashResource || selectedItem instanceof TrashFolderResource || selectedItem instanceof SharedResource || selectedItem instanceof OthersResource || selectedItem instanceof OtherUserResource));
boolean uploadVisible = !(selectedItem != null && (selectedItem instanceof TrashResource || selectedItem instanceof TrashFolderResource || selectedItem instanceof SharedResource || selectedItem instanceof OthersResource || selectedItem instanceof OtherUserResource));
if(newFolderVisible){
- MenuItem newFolderItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
- newFolderItem.getElement().setId("topMenu.file.newFolder");
- contextMenu.addItem(newFolderItem);
+// MenuItem newFolderItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
+// newFolderItem.getElement().setId("topMenu.file.newFolder");
+// contextMenu.addItem(newFolderItem);
}
if(uploadVisible){
MenuItem uploadItem = new MenuItem("<span id='topMenu.file.upload'>" + AbstractImagePrototype.create(images.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(this));
import gr.grnet.pithos.web.client.commands.RestoreTrashCommand;
import gr.grnet.pithos.web.client.commands.ToTrashCommand;
import gr.grnet.pithos.web.client.commands.UploadFileCommand;
+import gr.grnet.pithos.web.client.foldertree.Folder;
+import gr.grnet.pithos.web.client.foldertree.FolderTreeView;
import gr.grnet.pithos.web.client.rest.resource.MyFolderResource;
import gr.grnet.pithos.web.client.rest.resource.OtherUserResource;
import gr.grnet.pithos.web.client.rest.resource.OthersFolderResource;
*
* @param newImages the image bundle passed on by the parent object
*/
- public FolderContextMenu(final Images newImages) {
+ public FolderContextMenu(final Images newImages, Folder folder) {
// 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);
- pasteItem = new MenuItem("<span id = 'folderContextMenu.paste'>" + AbstractImagePrototype.create(newImages.paste()).getHTML() + " Paste</span>", true, new PasteCommand(this));
- MenuBar contextMenu = new MenuBar(true);
-
- RestResource selectedItem = GSS.get().getTreeView().getSelection();
+ MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, folder, images));
+ contextMenu.addItem(newFolder);
- if(selectedItem != null)
- if(selectedItem instanceof MyFolderResource){
- MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
- contextMenu.addItem(newFolder);
-
- MenuItem upload = new MenuItem("<span id = 'folderContextMenu.upload'>" + AbstractImagePrototype.create(newImages.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(this));
- contextMenu.addItem(upload);
-
- boolean notRootFolder =(((MyFolderResource) selectedItem).getResource()).getParentURI() != null ? true : false;
- if (notRootFolder) {
- // do not show the copy & cut option for the user's root folder
- MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(this));
- contextMenu.addItem(cut);
-
- }
- MenuItem copy = new MenuItem("<span id = 'folderContextMenu.copy'>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(this));
- contextMenu.addItem(copy);
- contextMenu.addItem(pasteItem);
- if (notRootFolder) {
- // do not show delete options for the user's root folder
- MenuItem moveToTrash = new MenuItem("<span id = 'folderContextMenu.moveToTrash'>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(this));
- contextMenu.addItem(moveToTrash);
-
- MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem(delete);
- }
-
- MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem(refresh);
-
- MenuItem sharing = new MenuItem("<span id = 'folderContextMenu.sharing'>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, newImages, 1));
- contextMenu.addItem(sharing);
-
- MenuItem properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(this, newImages, 0));
- contextMenu.addItem(properties);
- }
-
- if(selectedItem instanceof SharedFolderResource){
- MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
- contextMenu.addItem(newFolder);
-
- MenuItem upload = new MenuItem("<span id = 'folderContextMenu.upload'>" + AbstractImagePrototype.create(newImages.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(this));
- contextMenu.addItem(upload);
-
- MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(this));
- contextMenu.addItem(cut);
-
- MenuItem copy = new MenuItem("<span id = 'folderContextMenu.copy'>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(this));
- contextMenu.addItem(copy);
-
- contextMenu.addItem(pasteItem);
-
- MenuItem moveToTrash = new MenuItem("<span id = 'folderContextMenu.moveToTrash'>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(this));
- contextMenu.addItem(moveToTrash);
-
- MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem(delete);
+ // do not show the copy & cut option for the user's root folder
+ MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(this));
+ contextMenu.addItem(cut);
- MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem(refresh);
-
- MenuItem sharing = new MenuItem("<span id = 'folderContextMenu.sharing'>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, newImages, 1));
- contextMenu.addItem(sharing);
-
- MenuItem properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(this, newImages, 0));
- contextMenu.addItem(properties);
-
- }
- if(selectedItem instanceof TrashFolderResource){
- MenuItem restore = new MenuItem("<span id = 'folderContextMenu.restore'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Restore folder and contents</span>", true, new RestoreTrashCommand(this));
- contextMenu.addItem(restore);
-
- MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem(delete);
-
- MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem(refresh);
-
- }
- if(selectedItem instanceof OthersFolderResource){
- MenuItem newFolder = new MenuItem("<span id = 'folderContextMenu.newFolder'>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
- contextMenu.addItem(newFolder);
+ MenuItem copy = new MenuItem("<span id = 'folderContextMenu.copy'>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(this));
+ contextMenu.addItem(copy);
- MenuItem upload = new MenuItem("<span id ='folderContextMenu.upload'>" + AbstractImagePrototype.create(newImages.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(this));
- contextMenu.addItem(upload);
-
- MenuItem cut = new MenuItem("<span id = 'folderContextMenu.cut'>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(this));
- contextMenu.addItem(cut);
-
- MenuItem copy = new MenuItem("<span id = 'folderContextMenu.copy'>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(this));
- contextMenu.addItem(copy);
-
- contextMenu.addItem(pasteItem);
-
- MenuItem moveToTrash = new MenuItem("<span id = 'folderContextMenu.moveToTrash'>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(this));
- contextMenu.addItem(moveToTrash);
-
- MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem(delete);
+ pasteItem = new MenuItem("<span id = 'folderContextMenu.paste'>" + AbstractImagePrototype.create(newImages.paste()).getHTML() + " Paste</span>", true, new PasteCommand(this));
+ contextMenu.addItem(pasteItem);
+
+ // do not show delete options for the user's root folder
+ MenuItem moveToTrash = new MenuItem("<span id = 'folderContextMenu.moveToTrash'>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(this));
+ contextMenu.addItem(moveToTrash);
+
+ MenuItem delete = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
+ contextMenu.addItem(delete);
+
+ MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
+ contextMenu.addItem(refresh);
+
+ MenuItem sharing = new MenuItem("<span id = 'folderContextMenu.sharing'>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, newImages, 1));
+ contextMenu.addItem(sharing);
+
+ MenuItem properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(this, newImages, 0));
+ contextMenu.addItem(properties);
- MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.delete'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem(refresh);
-
- MenuItem sharing = new MenuItem("<span id = 'folderContextMenu.sharing'>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, newImages, 1));
- contextMenu.addItem(sharing);
-
- MenuItem properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(this, newImages, 0));
- contextMenu.addItem(properties);
-
- }
- if(selectedItem instanceof TrashResource){
- MenuItem restore = new MenuItem("<span id ='folderContextMenu.restore'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Restore Trash</span>", true, new RestoreTrashCommand(this));
- contextMenu.addItem(restore);
-
- MenuItem emptyTrash = new MenuItem("<span id = 'folderContextMenu.emptyTrash'>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Empty Trash</span>", true, new EmptyTrashCommand(this));
- contextMenu.addItem(emptyTrash);
-
- MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem(refresh);
-
- }
- if(selectedItem instanceof SharedResource || selectedItem instanceof OthersResource || selectedItem instanceof OtherUserResource){
- MenuItem refresh = new MenuItem("<span id = 'folderContextMenu.refresh'>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem(refresh);
-
- }
-
- /*
- if(folders.isTrashItem(selectedItem)){
- if (folders.isTrash(selectedItem)){
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Empty Trash</span>", true, new EmptyTrashCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- }
- else {
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Restore folder and contents</span>", true, new RestoreTrashCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- }
- }
- else if(folders.isFileItem(selectedItem)){
-
- }
- else if(!folders.isMyShares(selectedItem) && folders.isMySharedItem(selectedItem)){
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(this));
- contextMenu.addItem(pasteItem);
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, newImages, 1));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(this, newImages, 0));
- }
- else if(!folders.isOthersShared(selectedItem) && folders.isOthersSharedItem(selectedItem) && !(GSS.get().getCurrentSelection() instanceof OtherUserResource)){
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.folderNew()).getHTML() + " New Folder</span>", true, new NewFolderCommand(this, images));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.fileUpdate()).getHTML() + " Upload</span>", true, new UploadFileCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.cut()).getHTML() + " Cut</span>", true, new CutCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + " Copy</span>", true, new CopyCommand(this));
- contextMenu.addItem(pasteItem);
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + " Move to Trash</span>", true, new ToTrashCommand(this));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + " Delete</span>", true, new DeleteCommand(this, newImages));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.sharing()).getHTML() + " Sharing</span>", true, new PropertiesCommand(this, newImages, 1));
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(this, newImages, 0));
- } else if(!selectedItem.equals(folders.getSharesItem()))
- contextMenu.addItem("<span>" + AbstractImagePrototype.create(images.refresh()).getHTML() + " Refresh</span>", true, new RefreshCommand(this, images));
- */
-
add(contextMenu);
- if (GSS.get().getClipboard().hasFolderOrFileItem())
- pasteItem.setVisible(true);
- else
- pasteItem.setVisible(false);
}
-
}
*/\r
package gr.grnet.pithos.web.client;\r
\r
-import gr.grnet.pithos.web.client.FilePropertiesDialog.Images;\r
+import com.google.gwt.event.dom.client.KeyDownEvent;\r
+import com.google.gwt.user.client.Event;\r
+import gr.grnet.pithos.web.client.foldertree.Folder;\r
import gr.grnet.pithos.web.client.rest.PostCommand;\r
import gr.grnet.pithos.web.client.rest.RestException;\r
-import gr.grnet.pithos.web.client.rest.resource.FolderResource;\r
-import gr.grnet.pithos.web.client.rest.resource.GroupResource;\r
-import gr.grnet.pithos.web.client.rest.resource.PermissionHolder;\r
import gr.grnet.pithos.web.client.rest.resource.RestResourceWrapper;\r
\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
import com.google.gwt.core.client.GWT;\r
import com.google.gwt.dom.client.NativeEvent;\r
-import com.google.gwt.event.dom.client.ChangeEvent;\r
-import com.google.gwt.event.dom.client.ChangeHandler;\r
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.URL;\r
import com.google.gwt.i18n.client.DateTimeFormat;\r
-import com.google.gwt.json.client.JSONArray;\r
-import com.google.gwt.json.client.JSONBoolean;\r
-import com.google.gwt.json.client.JSONObject;\r
-import com.google.gwt.json.client.JSONString;\r
import com.google.gwt.user.client.DeferredCommand;\r
import com.google.gwt.user.client.Event.NativePreviewEvent;\r
import com.google.gwt.user.client.ui.Button;\r
*/\r
public class FolderPropertiesDialog extends DialogBox {\r
\r
- private List<GroupResource> groups = null;\r
-\r
- final PermissionsList permList;\r
-\r
private CheckBox readForAll;\r
\r
/**\r
*/\r
private final boolean create;\r
\r
- final FolderResource folder;\r
+ final Folder folder;\r
\r
final TabPanel inner;\r
\r
/**\r
* The widget's constructor.\r
*\r
- * @param images the image icons from the file properties dialog\r
* @param _create true if the dialog is displayed for creating a new\r
* sub-folder of the selected folder, false if it is displayed\r
* for modifying the selected folder\r
*/\r
- public FolderPropertiesDialog(Images images, boolean _create, final List<GroupResource> _groups) {\r
+ public FolderPropertiesDialog(boolean _create, Folder selected) {\r
setAnimationEnabled(true);\r
\r
// Enable IE selection for the dialog (must disable it upon closing it)\r
\r
create = _create;\r
\r
- folder = ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource();\r
- permList = new PermissionsList(images, folder.getPermissions(), folder.getOwner());\r
- groups = _groups;\r
+ folder = selected;\r
\r
// Use this opportunity to set the dialog's caption.\r
if (create)\r
inner.add(permPanel, "Sharing");\r
inner.selectTab(0);\r
\r
- final Label folderNameNote = new Label("Please note that slashes ('/') are not allowed in folder names.", true);\r
- folderNameNote.setVisible(false);\r
- folderNameNote.setStylePrimaryName("pithos-readForAllNote");\r
-\r
FlexTable generalTable = new FlexTable();\r
generalTable.setText(0, 0, "Name");\r
generalTable.setText(1, 0, "Parent");\r
generalTable.setText(2, 0, "Creator");\r
generalTable.setText(3, 0, "Last modified");\r
folderName.setText(create ? "" : folder.getName());\r
- folderName.getElement().setId("folderPropertiesDialog.textBox.name");\r
generalTable.setWidget(0, 1, folderName);\r
- folderName.addChangeHandler(new ChangeHandler() {\r
- \r
- @Override\r
- public void onChange(ChangeEvent event) {\r
- if(folderName.getText().contains("/"))\r
- folderNameNote.setVisible(true);\r
- else\r
- folderNameNote.setVisible(false); \r
- \r
- }\r
- });\r
-\r
\r
if (create)\r
generalTable.setText(1, 1, folder.getName());\r
- else if(folder.getParentName() == null)\r
- generalTable.setText(1, 1, "-");\r
else\r
- generalTable.setText(1, 1, folder.getParentName());\r
- generalTable.setWidget(0, 2, folderNameNote);\r
- generalTable.setText(2, 1, folder.getOwner());\r
+ generalTable.setText(1, 1, folder.getPrefix());\r
+ generalTable.setText(2, 1, "");\r
DateTimeFormat formatter = DateTimeFormat.getFormat("d/M/yyyy h:mm a");\r
- if(folder.getModificationDate() != null)\r
- generalTable.setText(3, 1, formatter.format(folder.getModificationDate()));\r
+ if(folder.getLastModified() != null)\r
+ generalTable.setText(3, 1, formatter.format(folder.getLastModified()));\r
generalTable.getFlexCellFormatter().setStyleName(0, 0, "props-labels");\r
generalTable.getFlexCellFormatter().setStyleName(1, 0, "props-labels");\r
generalTable.getFlexCellFormatter().setStyleName(2, 0, "props-labels");\r
okLabel = "Update";\r
Button ok = new Button(okLabel, new ClickHandler() {\r
@Override\r
- public void onClick(ClickEvent event) { \r
- if(folderName.getText().contains("/"))\r
- folderNameNote.setVisible(true);\r
- else {\r
- folderNameNote.setVisible(false);\r
- createOrUpdateFolder();\r
- closeDialog();\r
- }\r
-\r
+ public void onClick(ClickEvent event) {\r
+ createOrUpdateFolder();\r
+ closeDialog();\r
}\r
});\r
- ok.getElement().setId("folderPropertiesDialog.button.ok");\r
buttons.add(ok);\r
buttons.setCellHorizontalAlignment(ok, HasHorizontalAlignment.ALIGN_CENTER);\r
// Create the 'Cancel' button, along with a listener that hides the\r
closeDialog();\r
}\r
});\r
- cancel.getElement().setId("folderPropertiesDialog.button.cancel");\r
buttons.add(cancel);\r
buttons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER);\r
buttons.setSpacing(8);\r
buttons.addStyleName("pithos-TabPanelBottom");\r
\r
- Button add = new Button("Add Group", new ClickHandler() {\r
- @Override\r
- public void onClick(ClickEvent event) {\r
- PermissionsAddDialog dlg = new PermissionsAddDialog(groups, permList, false);\r
- dlg.center();\r
- }\r
- });\r
- add.getElement().setId("folderPropertiesDialog.button.addGroup");\r
- permButtons.add(add);\r
- permButtons.setCellHorizontalAlignment(add, HasHorizontalAlignment.ALIGN_CENTER);\r
-\r
- Button addUser = new Button("Add User", new ClickHandler() {\r
- @Override\r
- public void onClick(ClickEvent event) {\r
- PermissionsAddDialog dlg = new PermissionsAddDialog(groups, permList, true);\r
- dlg.center();\r
- }\r
- });\r
- addUser.getElement().setId("folderPropertiesDialog.button.addUser");\r
- permButtons.add(addUser);\r
- permButtons.setCellHorizontalAlignment(addUser, HasHorizontalAlignment.ALIGN_CENTER);\r
-\r
- permButtons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER);\r
- permButtons.setSpacing(8);\r
- permButtons.addStyleName("pithos-TabPanelBottom");\r
-\r
- final Label readForAllNote = new Label("When this option is enabled, the folder will be readable" +\r
- " by everyone. By checking this option, you are certifying that you have the right to " +\r
- "distribute this folder's contents and that it does not violate the Terms of Use.", true);\r
- readForAllNote.setVisible(false);\r
- readForAllNote.setStylePrimaryName("pithos-readForAllNote");\r
-\r
- readForAll = new CheckBox();\r
- readForAll.getElement().setId("folderPropertiesDialog.checkBox.public");\r
- readForAll.setValue(folder.isReadForAll());\r
- readForAll.addClickHandler(new ClickHandler() {\r
- @Override\r
- public void onClick(ClickEvent event) {\r
- readForAllNote.setVisible(readForAll.getValue());\r
- }\r
-\r
- });\r
-\r
generalPanel.add(generalTable);\r
- permPanel.add(permList);\r
- permPanel.add(permButtons);\r
-\r
- // Only show the read for all permission if the user is the owner.\r
- if (folder.getOwner().equals(GSS.get().getCurrentUserResource().getUsername())) {\r
- permForAll.add(new Label("Public"));\r
- permForAll.add(readForAll);\r
- permForAll.setSpacing(8);\r
- permForAll.addStyleName("pithos-TabPanelBottom");\r
- permForAll.add(readForAllNote);\r
- permPanel.add(permForAll);\r
- }\r
- TextBox path = new TextBox();\r
- path.getElement().setId("folderPropertiesDialog.textBox.link");\r
- path.setWidth("100%");\r
- path.addClickHandler(new ClickHandler() {\r
- @Override\r
- public void onClick(ClickEvent event) {\r
- GSS.enableIESelection();\r
- ((TextBox) event.getSource()).selectAll();\r
- GSS.preventIESelection();\r
- }\r
\r
- });\r
- path.setText(folder.getUri());\r
- path.setTitle("Use this link for sharing the folder via e-mail, IM, etc. (crtl-C/cmd-C to copy to system clipboard)");\r
- path.setWidth("100%");\r
- path.setReadOnly(true);\r
- pathPanel.setWidth("100%");\r
- pathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);\r
- pathPanel.add(new Label("Link"));\r
- pathPanel.setSpacing(8);\r
- pathPanel.addStyleName("pithos-TabPanelBottom");\r
- pathPanel.add(path);\r
- permPanel.add(pathPanel);\r
\r
outer.add(inner);\r
outer.add(buttons);\r
super.onPreviewNativeEvent(preview);\r
\r
NativeEvent evt = preview.getNativeEvent();\r
- if (evt.getType().equals("keydown"))\r
+ if (evt.getType().equals(KeyDownEvent.getType().getName()))\r
// Use the popup's key preview hooks to close the dialog when either\r
// enter or escape is pressed.\r
switch (evt.getKeyCode()) {\r
\r
/**\r
* Generate an RPC request to create a new folder.\r
- *\r
- * @param userId the ID of the user whose namespace will be searched for\r
- * folders\r
- * @param _folderName the name of the folder to create\r
*/\r
private void createFolder() {\r
String name = folderName.getText();\r
- if (!GSS.isValidResourceName(name)) {\r
- GSS.get().displayError("The folder name '" + name + "' is invalid");\r
- return;\r
- }\r
- PostCommand ep = new PostCommand(folder.getUri() + "?new=" +\r
- URL.encodeComponent(name), "", 201) {\r
\r
- @Override\r
- public void onComplete() {\r
- //TODO:CELLTREE\r
- if(folder.getUri().equals(GSS.get().getTreeView().getMyFolders().getUri())){\r
- GSS.get().getTreeView().updateRootNode();\r
- }\r
- else\r
- GSS.get().getTreeView().updateNodeChildren((RestResourceWrapper) GSS.get().getTreeView().getSelection());\r
- //GSS.get().getFolders().updateFolder((DnDTreeItem) GSS.get().getFolders().getCurrent());\r
- }\r
-\r
- @Override\r
- public void onError(Throwable t) {\r
- GWT.log("", t);\r
- if(t instanceof RestException){\r
- int statusCode = ((RestException)t).getHttpStatusCode();\r
- if(statusCode == 405)\r
- GSS.get().displayError("You don't have the necessary" +\r
- " permissions or a folder with same name " +\r
- "already exists");\r
- else if(statusCode == 404)\r
- GSS.get().displayError("Resource not found");\r
- else\r
- GSS.get().displayError("Unable to create folder:" +\r
- ((RestException)t).getHttpStatusText());\r
- }\r
- else\r
- GSS.get().displayError("System error creating folder:" +\r
- t.getMessage());\r
- }\r
- };\r
- DeferredCommand.addCommand(ep);\r
+// PostCommand ep = new PostCommand(folder.getUri() + "?new=" +\r
+// URL.encodeComponent(name), "", 201) {\r
+//\r
+// @Override\r
+// public void onComplete() {\r
+// //TODO:CELLTREE\r
+// if(folder.getUri().equals(GSS.get().getTreeView().getMyFolders().getUri())){\r
+// GSS.get().getTreeView().updateRootNode();\r
+// }\r
+// else\r
+// GSS.get().getTreeView().updateNodeChildren((RestResourceWrapper) GSS.get().getTreeView().getSelection());\r
+// //GSS.get().getFolders().updateFolder((DnDTreeItem) GSS.get().getFolders().getCurrent());\r
+// }\r
+//\r
+// @Override\r
+// public void onError(Throwable t) {\r
+// GWT.log("", t);\r
+// if(t instanceof RestException){\r
+// int statusCode = ((RestException)t).getHttpStatusCode();\r
+// if(statusCode == 405)\r
+// GSS.get().displayError("You don't have the necessary" +\r
+// " permissions or a folder with same name " +\r
+// "already exists");\r
+// else if(statusCode == 404)\r
+// GSS.get().displayError("Resource not found");\r
+// else\r
+// GSS.get().displayError("Unable to create folder:" +\r
+// ((RestException)t).getHttpStatusText());\r
+// }\r
+// else\r
+// GSS.get().displayError("System error creating folder:" +\r
+// t.getMessage());\r
+// }\r
+// };\r
+// DeferredCommand.addCommand(ep);\r
\r
}\r
\r
* Upon closing the dialog by clicking OK or pressing ENTER this method does\r
* the actual work of modifying folder properties or creating a new Folder\r
* depending on the value of the create field\r
- *\r
- * @param userId\r
*/\r
private void createOrUpdateFolder() {\r
if (create)\r
}\r
\r
private void updateFolder() {\r
- permList.updatePermissionsAccordingToInput();\r
- Set<PermissionHolder> perms = permList.getPermissions();\r
- JSONObject json = new JSONObject();\r
- if(!folder.getName().equals(folderName.getText()))\r
- json.put("name", new JSONString(folderName.getText()));\r
- //only update the read for all perm if the user is the owner\r
- if (readForAll.getValue() != folder.isReadForAll())\r
- if (folder.getOwner().equals(GSS.get().getCurrentUserResource().getUsername()))\r
- json.put("readForAll", JSONBoolean.getInstance(readForAll.getValue()));\r
- if (permList.hasChanges()) {\r
- JSONArray perma = new JSONArray();\r
- int i=0;\r
- for(PermissionHolder p : perms){\r
- JSONObject po = new JSONObject();\r
- if(p.getUser() != null)\r
- po.put("user", new JSONString(p.getUser()));\r
- if(p.getGroup() != null)\r
- po.put("group", new JSONString(p.getGroup()));\r
- po.put("read", JSONBoolean.getInstance(p.isRead()));\r
- po.put("write", JSONBoolean.getInstance(p.isWrite()));\r
- po.put("modifyACL", JSONBoolean.getInstance(p.isModifyACL()));\r
- perma.set(i,po);\r
- i++;\r
- }\r
- json.put("permissions", perma);\r
- GWT.log(json.toString(), null);\r
- }\r
- PostCommand ep = new PostCommand(folder.getUri()+"?update=", json.toString(), 200){\r
-\r
- @Override\r
- public void onComplete() {\r
- //TODO:CELLTREE\r
- \r
- if(getPostBody() != null && !"".equals(getPostBody().trim())){\r
- \r
- \r
- FolderResource fres = ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource();\r
- String initialPath = fres.getUri();\r
- String newPath = getPostBody().trim();\r
- fres.setUri(newPath);\r
- ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource().setUri(newPath);\r
- ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).setUri(newPath);\r
- GSS.get().getTreeView().updateNodeChildren(fres.getParentURI());\r
- if (permList.hasChanges()) {\r
- GSS.get().getTreeView().updateMySharedNode();\r
- }\r
- /*\r
- if(folderItem.getParentItem() != null && ((DnDTreeItem)folderItem.getParentItem()).getFolderResource() != null){\r
- ((DnDTreeItem)folderItem.getParentItem()).getFolderResource().removeSubfolderPath(initialPath);\r
- ((DnDTreeItem)folderItem.getParentItem()).getFolderResource().getSubfolderPaths().add(newPath);\r
- }*/\r
- }\r
- //GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
- \r
- GSS.get().showFileList(true);\r
- }\r
-\r
- @Override\r
- public void onError(Throwable t) {\r
- GWT.log("", t);\r
- if(t instanceof RestException){\r
- int statusCode = ((RestException)t).getHttpStatusCode();\r
- if(statusCode == 405)\r
- GSS.get().displayError("You don't have the necessary permissions or" +\r
- " a folder with same name already exists");\r
- else if(statusCode == 404)\r
- GSS.get().displayError("Resource not found, or user specified in sharing does not exist");\r
- else\r
- GSS.get().displayError("Unable to update folder: "+((RestException)t).getHttpStatusText());\r
- }\r
- else\r
- GSS.get().displayError("System error moifying file: "+t.getMessage());\r
- //TODO:CELLTREE\r
- //GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
- }\r
- };\r
- DeferredCommand.addCommand(ep);\r
+// permList.updatePermissionsAccordingToInput();\r
+// Set<PermissionHolder> perms = permList.getPermissions();\r
+// JSONObject json = new JSONObject();\r
+// if(!folder.getName().equals(folderName.getText()))\r
+// json.put("name", new JSONString(folderName.getText()));\r
+// //only update the read for all perm if the user is the owner\r
+// if (readForAll.getValue() != folder.isReadForAll())\r
+// if (folder.getOwner().equals(GSS.get().getCurrentUserResource().getUsername()))\r
+// json.put("readForAll", JSONBoolean.getInstance(readForAll.getValue()));\r
+// if (permList.hasChanges()) {\r
+// JSONArray perma = new JSONArray();\r
+// int i=0;\r
+// for(PermissionHolder p : perms){\r
+// JSONObject po = new JSONObject();\r
+// if(p.getUser() != null)\r
+// po.put("user", new JSONString(p.getUser()));\r
+// if(p.getGroup() != null)\r
+// po.put("group", new JSONString(p.getGroup()));\r
+// po.put("read", JSONBoolean.getInstance(p.isRead()));\r
+// po.put("write", JSONBoolean.getInstance(p.isWrite()));\r
+// po.put("modifyACL", JSONBoolean.getInstance(p.isModifyACL()));\r
+// perma.set(i,po);\r
+// i++;\r
+// }\r
+// json.put("permissions", perma);\r
+// GWT.log(json.toString(), null);\r
+// }\r
+// PostCommand ep = new PostCommand(folder.getUri()+"?update=", json.toString(), 200){\r
+//\r
+// @Override\r
+// public void onComplete() {\r
+// //TODO:CELLTREE\r
+//\r
+// if(getPostBody() != null && !"".equals(getPostBody().trim())){\r
+//\r
+//\r
+// FolderResource fres = ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource();\r
+// String initialPath = fres.getUri();\r
+// String newPath = getPostBody().trim();\r
+// fres.setUri(newPath);\r
+// ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource().setUri(newPath);\r
+// ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).setUri(newPath);\r
+// GSS.get().getTreeView().updateNodeChildren(fres.getParentURI());\r
+// if (permList.hasChanges()) {\r
+// GSS.get().getTreeView().updateMySharedNode();\r
+// }\r
+// /*\r
+// if(folderItem.getParentItem() != null && ((DnDTreeItem)folderItem.getParentItem()).getFolderResource() != null){\r
+// ((DnDTreeItem)folderItem.getParentItem()).getFolderResource().removeSubfolderPath(initialPath);\r
+// ((DnDTreeItem)folderItem.getParentItem()).getFolderResource().getSubfolderPaths().add(newPath);\r
+// }*/\r
+// }\r
+// //GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
+//\r
+// GSS.get().showFileList(true);\r
+// }\r
+//\r
+// @Override\r
+// public void onError(Throwable t) {\r
+// GWT.log("", t);\r
+// if(t instanceof RestException){\r
+// int statusCode = ((RestException)t).getHttpStatusCode();\r
+// if(statusCode == 405)\r
+// GSS.get().displayError("You don't have the necessary permissions or" +\r
+// " a folder with same name already exists");\r
+// else if(statusCode == 404)\r
+// GSS.get().displayError("Resource not found, or user specified in sharing does not exist");\r
+// else\r
+// GSS.get().displayError("Unable to update folder: "+((RestException)t).getHttpStatusText());\r
+// }\r
+// else\r
+// GSS.get().displayError("System error moifying file: "+t.getMessage());\r
+// //TODO:CELLTREE\r
+// //GSS.get().getFolders().updateFolder( (DnDTreeItem) GSS.get().getFolders().getCurrent());\r
+// }\r
+// };\r
+// DeferredCommand.addCommand(ep);\r
}\r
\r
public void selectTab(int _tab) {\r
*/
package gr.grnet.pithos.web.client.commands;
+import com.google.gwt.event.logical.shared.CloseEvent;
+import com.google.gwt.event.logical.shared.CloseHandler;
import gr.grnet.pithos.web.client.FileMenu.Images;
import gr.grnet.pithos.web.client.FolderPropertiesDialog;
import gr.grnet.pithos.web.client.GSS;
+import gr.grnet.pithos.web.client.foldertree.Folder;
+import gr.grnet.pithos.web.client.foldertree.FolderTreeView;
import gr.grnet.pithos.web.client.rest.GetCommand;
import gr.grnet.pithos.web.client.rest.MultipleGetCommand;
import gr.grnet.pithos.web.client.rest.resource.GroupResource;
*/
public class NewFolderCommand implements Command{
private PopupPanel containerPanel;
+
+ private Folder folder;
final Images images;
private List<GroupResource> groups = null;
* @param aContainerPanel
* @param newImages the images of the new folder dialog
*/
- public NewFolderCommand(PopupPanel aContainerPanel, final Images newImages){
+ public NewFolderCommand(PopupPanel aContainerPanel, Folder folder, final Images newImages){
containerPanel = aContainerPanel;
images=newImages;
+ this.folder = folder;
}
@Override
public void execute() {
containerPanel.hide();
- getGroups();
- DeferredCommand.addCommand(new IncrementalCommand() {
-
- @Override
- public boolean execute() {
- boolean res = canContinue();
- if (res) {
- displayNewFolder();
- return false;
- }
- return true;
- }
-
- });
+ displayNewFolderDialog();
}
- private boolean canContinue() {
- if (groups == null)
- return false;
- return true;
+ void displayNewFolderDialog() {
+ if (folder != null) {
+ FolderPropertiesDialog dlg = new FolderPropertiesDialog(true, folder);
+ dlg.center();
+ }
}
-
- void displayNewFolder() {
- RestResource currentFolder = GSS.get().getTreeView().getSelection();
- if (currentFolder == null) {
- GSS.get().displayError("You have to select the parent folder first");
- return;
- }
- FolderPropertiesDialog dlg = new FolderPropertiesDialog(images, true, groups);
- dlg.center();
- }
-
- private void getGroups() {
- GetCommand<GroupsResource> gg = new GetCommand<GroupsResource>(GroupsResource.class, GSS.get().getCurrentUserResource().getGroupsPath(), null){
-
- @Override
- public void onComplete() {
- GroupsResource res = getResult();
- MultipleGetCommand<GroupResource> ga = new MultipleGetCommand<GroupResource>(GroupResource.class, res.getGroupPaths().toArray(new String[]{}), null){
-
- @Override
- public void onComplete() {
- List<GroupResource> groupList = getResult();
- groups = groupList;
- }
-
- @Override
- public void onError(Throwable t) {
- GWT.log("", t);
- GSS.get().displayError("Unable to fetch groups");
- groups = new ArrayList<GroupResource>();
- }
-
- @Override
- public void onError(String p, Throwable throwable) {
- GWT.log("Path:"+p, throwable);
- }
- };
- DeferredCommand.addCommand(ga);
- }
-
- @Override
- public void onError(Throwable t) {
- GWT.log("", t);
- GSS.get().displayError("Unable to fetch groups");
- groups = new ArrayList<GroupResource>();
- }
- };
- DeferredCommand.addCommand(gg);
- }
-
}
*/
void displayProperties(final Images propImages, final String _userName) {
if (GSS.get().getCurrentSelection() instanceof RestResourceWrapper) {
- FolderPropertiesDialog dlg = new FolderPropertiesDialog(propImages, false, groups);
- dlg.selectTab(tabToShow);
- dlg.center();
+// FolderPropertiesDialog dlg = new FolderPropertiesDialog(propImages, false, groups);
+// dlg.selectTab(tabToShow);
+// dlg.center();
} else if (GSS.get().getCurrentSelection() instanceof FileResource) {
FilePropertiesDialog dlg = new FilePropertiesDialog(propImages, groups, versions, _userName);
dlg.selectTab(tabToShow);
package gr.grnet.pithos.web.client.foldertree;
-import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ImageResource.ImageOptions;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
-import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellTree;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
-import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Tree;
import gr.grnet.pithos.web.client.FolderContextMenu;
ImageResource home();
@Source("gr/grnet/pithos/resources/folder_yellow.png")
- ImageResource folderYellow();
+ public ImageResource folderYellow();
}
- private static Images images = GWT.create(Images.class);
+ static Images images = GWT.create(Images.class);
static interface Templates extends SafeHtmlTemplates {
- Templates INSTANCE = GWT.create(Templates.class);
+ public Templates INSTANCE = GWT.create(Templates.class);
@Template("<span>{0}</span>")
public SafeHtml nameSpan(String name);
}
- static class FolderCell extends AbstractCell<Folder> {
-
- @Override
- public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
- String html = AbstractImagePrototype.create(images.folderYellow()).getHTML();
- safeHtmlBuilder.appendHtmlConstant(html);
- safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
- }
- }
-
-
private FolderTreeViewModel model;
public FolderTreeView(FolderTreeViewModel viewModel) {
tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
- sinkEvents(Event.ONCONTEXTMENU);
- sinkEvents(Event.ONMOUSEUP);
initWidget(tree);
}
+
public Folder getSelection() {
return model.getSelection();
}
package gr.grnet.pithos.web.client.foldertree;
+import com.google.gwt.cell.client.AbstractCell;
+import com.google.gwt.cell.client.Cell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.event.dom.client.ContextMenuEvent;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.view.client.ListDataProvider;
-import com.google.gwt.view.client.SelectionChangeEvent;
-import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SingleSelectionModel;
import com.google.gwt.view.client.TreeViewModel;
+import gr.grnet.pithos.web.client.FolderContextMenu;
import gr.grnet.pithos.web.client.GSS;
-import gr.grnet.pithos.web.client.foldertree.FolderTreeView.FolderCell;
+import gr.grnet.pithos.web.client.foldertree.FolderTreeView.Templates;
import gr.grnet.pithos.web.client.rest.GetRequest;
import gr.grnet.pithos.web.client.rest.RestException;
import java.util.Iterator;
public class FolderTreeViewModel implements TreeViewModel {
+ private Cell<Folder> folderCell = new AbstractCell<Folder>(ContextMenuEvent.getType().getName()) {
+
+ @Override
+ public void render(Context context, Folder folder, SafeHtmlBuilder safeHtmlBuilder) {
+ String html = AbstractImagePrototype.create(FolderTreeView.images.folderYellow()).getHTML();
+ safeHtmlBuilder.appendHtmlConstant(html);
+ safeHtmlBuilder.append(Templates.INSTANCE.nameSpan(folder.getName()));
+ }
+
+ @Override
+ public void onBrowserEvent(Cell.Context context, com.google.gwt.dom.client.Element parent, Folder folder, com.google.gwt.dom.client.NativeEvent event, com.google.gwt.cell.client.ValueUpdater<Folder> valueUpdater) {
+ if (event.getType().equals(ContextMenuEvent.getType().getName())) {
+ Folder target = (Folder) context.getKey();
+ FolderTreeViewModel.this.selectionModel.setSelected(target, true);
+ FolderContextMenu menu = new FolderContextMenu(FolderTreeView.images, target);
+ menu.setPopupPosition(event.getClientX(), event.getClientY());
+ menu.show();
+ }
+ }
+ };
+
private ListDataProvider<Folder> rootDataProvider = new ListDataProvider<Folder>();
private SingleSelectionModel<Folder> selectionModel;
if (value == null) {
Folder f = new Folder("Loading ...");
rootDataProvider.getList().add(f);
- return new DefaultNodeInfo<Folder>(rootDataProvider, new FolderCell(), selectionModel, null);
+ return new DefaultNodeInfo<Folder>(rootDataProvider, folderCell, selectionModel, null);
}
else {
final Folder f = (Folder) value;
Scheduler.get().scheduleDeferred(getFolder);
}
});
- return new DefaultNodeInfo<Folder>(dataProvider, new FolderCell(), selectionModel, null);
+ return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null);
}
}