// contextMenu.addItem(sharingItem)
// .setVisible(propertiesVisible);
//
- if (selectedFiles.size() > 0) {
- MenuItem propertiesItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(GSS.get(), null, selectedFiles, images, 0));
+ if (selectedFiles.size() > 0 || selectedFolder != null) {
+ MenuItem propertiesItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(GSS.get(), null, selectedFiles.size() > 0 ? selectedFiles : selectedFolder, images, 0));
addItem(propertiesItem);
}
}
// 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 properties = new MenuItem("<span id = 'folderContextMenu.properties'>" + AbstractImagePrototype.create(newImages.viewText()).getHTML() + " Properties</span>", true, new PropertiesCommand(GSS.get(), this, folder, newImages, 0));
+ contextMenu.addItem(properties);
add(contextMenu);
}
\r
import com.google.gwt.core.client.Scheduler;\r
import com.google.gwt.event.dom.client.KeyDownEvent;\r
+import com.google.gwt.user.client.Command;\r
import com.google.gwt.user.client.Event;\r
+import gr.grnet.pithos.web.client.foldertree.File;\r
import gr.grnet.pithos.web.client.foldertree.Folder;\r
import gr.grnet.pithos.web.client.foldertree.Resource;\r
import gr.grnet.pithos.web.client.rest.PostCommand;\r
import com.google.gwt.user.client.ui.TabPanel;\r
import com.google.gwt.user.client.ui.TextBox;\r
import com.google.gwt.user.client.ui.VerticalPanel;\r
+import java.util.Iterator;\r
\r
/**\r
* The 'Folder properties' dialog box implementation.\r
generalTable.setText(2, 0, "Creator");\r
generalTable.setText(3, 0, "Last modified");\r
folderName.setText(create ? "" : folder.getName());\r
+ folderName.setReadOnly(folder.isContainer());\r
generalTable.setWidget(0, 1, folderName);\r
\r
if (create)\r
// }\r
// };\r
// DeferredCommand.addCommand(ep);\r
+ final String newName = folderName.getText();\r
+ if (!folder.isContainer() && !folder.getName().equals(newName)) {\r
+ final String path = app.getApiPath() + app.getUsername() + folder.getParent().getUri() + "/" + newName;\r
+ PutRequest newFolder = new PutRequest(path) {\r
+ @Override\r
+ public void onSuccess(Resource result) {\r
+ Iterator<File> iter = folder.getFiles().iterator();\r
+ app.copyFiles(iter, folder.getParent().getUri() + "/" + newName, new Command() {\r
+ @Override\r
+ public void execute() {\r
+ Iterator<Folder> iterf = folder.getSubfolders().iterator();\r
+ app.copySubfolders(iterf, folder.getParent().getUri() + "/" + newName, new Command() {\r
+ @Override\r
+ public void execute() {\r
+ app.deleteFolder(folder);\r
+ app.updateFolder(folder.getParent());\r
+ }\r
+ });\r
+ }\r
+ });\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
\r
public void selectTab(int _tab) {\r
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.Command;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import gr.grnet.pithos.web.client.commands.GetUserCommand;
import gr.grnet.pithos.web.client.foldertree.Resource;
import gr.grnet.pithos.web.client.rest.DeleteRequest;
import gr.grnet.pithos.web.client.rest.GetRequest;
+import gr.grnet.pithos.web.client.rest.PutRequest;
import gr.grnet.pithos.web.client.rest.RestException;
import gr.grnet.pithos.web.client.rest.resource.FileResource;
import gr.grnet.pithos.web.client.rest.resource.OtherUserResource;
public FolderTreeView getFolderTreeView() {
return folderTreeView;
}
+
+ public void copyFiles(final Iterator<File> iter, final String targetUri, final Command callback) {
+ if (iter.hasNext()) {
+ File file = iter.next();
+ String path = getApiPath() + getUsername() + targetUri + "/" + file.getName();
+ PutRequest copyFile = new PutRequest(path) {
+ @Override
+ public void onSuccess(Resource result) {
+ copyFiles(iter, targetUri, callback);
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ if (t instanceof RestException) {
+ GSS.get().displayError("Unable to copy file: " + ((RestException) t).getHttpStatusText());
+ }
+ else
+ GSS.get().displayError("System error unable to copy file: "+t.getMessage());
+ }
+ };
+ copyFile.setHeader("X-Auth-Token", getToken());
+ copyFile.setHeader("X-Copy-From", file.getUri());
+ Scheduler.get().scheduleDeferred(copyFile);
+ }
+ else if (callback != null) {
+ callback.execute();
+ }
+ }
+
+ public void copySubfolders(final Iterator<Folder> iter, final String targetUri, final Command callback) {
+ if (iter.hasNext()) {
+ final Folder f = iter.next();
+ copyFolder(f, targetUri, callback);
+ }
+ else if (callback != null) {
+ callback.execute();
+ }
+ }
+
+ public void copyFolder(final Folder f, final String targetUri, final Command callback) {
+ String path = getApiPath() + getUsername() + targetUri + "/" + f.getName();
+ PutRequest createFolder = new PutRequest(path) {
+ @Override
+ public void onSuccess(Resource result) {
+ Iterator<File> iter = f.getFiles().iterator();
+ copyFiles(iter, targetUri + "/" + f.getName(), new Command() {
+ @Override
+ public void execute() {
+ Iterator<Folder> iterf = f.getSubfolders().iterator();
+ copySubfolders(iterf, targetUri + "/" + f.getName(), new Command() {
+ @Override
+ public void execute() {
+ callback.execute();
+ }
+ });
+ }
+ });
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ if (t instanceof RestException) {
+ displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText());
+ }
+ else
+ displayError("System error creating folder:" + t.getMessage());
+ }
+ };
+ createFolder.setHeader("X-Auth-Token", getToken());
+ createFolder.setHeader("Accept", "*/*");
+ createFolder.setHeader("Content-Length", "0");
+ createFolder.setHeader("Content-Type", "application/folder");
+ Scheduler.get().scheduleDeferred(createFolder);
+ }
}
if (clipboardItem instanceof Folder) {
final Folder tobeCopied = (Folder) clipboardItem;
if (operation == Clipboard.COPY) {
- copyFolder(tobeCopied, folder.getUri(), new Command() {
+ app.copyFolder(tobeCopied, folder.getUri(), new Command() {
@Override
public void execute() {
app.getClipboard().clear();
});
}
else {
- copyFolder(tobeCopied, folder.getUri(), new Command() {
+ app.copyFolder(tobeCopied, folder.getUri(), new Command() {
@Override
public void execute() {
app.getClipboard().clear();
app.updateFolder(folder);
}
});
-
}
}
else {
List<File> tobeCopied = (List<File>) clipboardItem;
Iterator<File> iter = tobeCopied.iterator();
if (operation == Clipboard.COPY) {
- copyFiles(iter, folder.getUri(), new Command() {
+ app.copyFiles(iter, folder.getUri(), new Command() {
@Override
public void execute() {
app.getClipboard().clear();
callback.execute();
}
}
-
- private void copyFiles(final Iterator<File> iter, final String targetUri, final Command callback) {
- if (iter.hasNext()) {
- File file = iter.next();
- String path = app.getApiPath() + app.getUsername() + targetUri + "/" + file.getName();
- PutRequest copyFile = new PutRequest(path) {
- @Override
- public void onSuccess(Resource result) {
- copyFiles(iter, targetUri, callback);
- }
-
- @Override
- public void onError(Throwable t) {
- GWT.log("", t);
- if (t instanceof RestException) {
- GSS.get().displayError("Unable to copy file: " + ((RestException) t).getHttpStatusText());
- }
- else
- GSS.get().displayError("System error unable to copy file: "+t.getMessage());
- }
- };
- copyFile.setHeader("X-Auth-Token", app.getToken());
- copyFile.setHeader("X-Copy-From", file.getUri());
- Scheduler.get().scheduleDeferred(copyFile);
- }
- else if (callback != null) {
- callback.execute();
- }
- }
-
- private void copyFolder(final Folder f, final String targetUri, final Command callback) {
- String path = app.getApiPath() + app.getUsername() + targetUri + "/" + f.getName();
- PutRequest createFolder = new PutRequest(path) {
- @Override
- public void onSuccess(Resource result) {
- Iterator<File> iter = f.getFiles().iterator();
- copyFiles(iter, targetUri + "/" + f.getName(), new Command() {
- @Override
- public void execute() {
- Iterator<Folder> iterf = f.getSubfolders().iterator();
- copySubfolders(iterf, targetUri + "/" + f.getName(), new Command() {
- @Override
- public void execute() {
- callback.execute();
- }
- });
- }
- });
- }
-
- @Override
- public void onError(Throwable t) {
- GWT.log("", t);
- if (t instanceof RestException) {
- app.displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText());
- }
- else
- app.displayError("System error creating folder:" + t.getMessage());
- }
- };
- createFolder.setHeader("X-Auth-Token", app.getToken());
- createFolder.setHeader("Accept", "*/*");
- createFolder.setHeader("Content-Length", "0");
- createFolder.setHeader("Content-Type", "application/folder");
- Scheduler.get().scheduleDeferred(createFolder);
- }
-
- private void copySubfolders(final Iterator<Folder> iter, final String targetUri, final Command callback) {
- if (iter.hasNext()) {
- final Folder f = iter.next();
- copyFolder(f, targetUri, callback);
- }
- else if (callback != null) {
- callback.execute();
- }
- }
}