Scheduler.get().scheduleDeferred(deleteFile);\r
}\r
else {\r
- app.updateFolder(files.get(0).getParent(), true);\r
+ app.updateFolder(files.get(0).getParent(), true, null);\r
}\r
}\r
\r
PostRequest updateFile = new PostRequest(api, owner, path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
- app.updateFolder(file.getParent(), true);\r
+ app.updateFolder(file.getParent(), true, null);\r
}\r
\r
@Override\r
Scheduler.get().scheduleDeferred(updateFile);\r
}\r
else\r
- app.updateFolder(file.getParent(), true);\r
+ app.updateFolder(file.getParent(), true, null);\r
}\r
\r
private void removeAllOldVersions() {\r
GWT.log(results, null);
app.displayError(results);
}
- app.updateFolder(folder, true);
+ app.updateFolder(folder, true, null);
hide();
}
});
PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
- app.updateFolder(folder, true);\r
+ app.updateFolder(folder, true, null);\r
}\r
\r
@Override\r
PostRequest updateFolder = new PostRequest(app.getApiPath(), folder.getOwner(), path) {\r
@Override\r
public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
- app.updateFolder(folder.getParent(), false);\r
+ app.updateFolder(folder.getParent(), false, null);\r
}\r
\r
@Override\r
Scheduler.get().scheduleDeferred(updateFolder);\r
}\r
else\r
- app.updateFolder(folder.getParent(), false);\r
+ app.updateFolder(folder.getParent(), false, null);\r
}\r
\r
public void selectTab(int _tab) {\r
return account;
}
- public void updateFolder(Folder f, boolean showfiles) {
- folderTreeView.updateFolder(f, showfiles);
+ public void updateFolder(Folder f, boolean showfiles, Command callback) {
+ folderTreeView.updateFolder(f, showfiles, callback);
}
public void updateSharedFolder(Folder f, boolean showfiles) {
private TagTreeView tagTreeView;
protected AccountResource account;
+
+ private Folder trash;
@SuppressWarnings("rawtypes")
private List<SingleSelectionModel> selectionModels = new ArrayList<SingleSelectionModel>();
if (folderTreeSelectionModel.getSelectedObject() != null) {
deselectOthers(folderTreeSelectionModel);
Folder f = folderTreeSelectionModel.getSelectedObject();
- updateFolder(f, true);
+ updateFolder(f, true, null);
}
}
});
else if (!account.hasTrashContainer())
createTrashContainer();
else {
+ for (Folder f : account.getContainers())
+ if (f.getName().equals(Pithos.TRASH_CONTAINER)) {
+ trash = f;
+ break;
+ }
folderTreeViewModel.initialize(account);
}
}
DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), getUsername(), path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
- updateFolder(folder.getParent(), true);
+ updateFolder(folder.getParent(), true, null);
}
@Override
public OtherSharedTreeView getOtherSharedTreeView() {
return otherSharedTreeView;
}
+
+ public void updateTrash(boolean showFiles, Command callback) {
+ updateFolder(trash, showFiles, callback);
+ }
}
@Override
public void execute() {
app.getClipboard().clear();
- app.updateFolder(folder, true);
+ app.updateFolder(folder, true, null);
}
});
}
public void execute() {
app.getClipboard().clear();
app.deleteFolder(tobeCopied);
- app.updateFolder(folder, true);
+ app.updateFolder(folder, true, null);
}
});
}
@Override
public void execute() {
app.getClipboard().clear();
- app.updateFolder(folder, true);
+ app.updateFolder(folder, true, null);
}
});
}
@Override
public void execute() {
app.getClipboard().clear();
- app.updateFolder(folder, true);
+ app.updateFolder(folder, true, null);
}
});
}
package gr.grnet.pithos.web.client.commands;
import com.google.gwt.core.client.Scheduler;
+
+import gr.grnet.pithos.web.client.DeleteFolderDialog;
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.PostRequest;
import gr.grnet.pithos.web.client.rest.PutRequest;
import gr.grnet.pithos.web.client.rest.RestException;
@SuppressWarnings("unchecked")
@Override
public void execute() {
- app.updateFolder(((List<File>) resource).get(0).getParent(), true);
+ app.updateFolder(((List<File>) resource).get(0).getParent(), true, null);
}
});
}
trashFolder(toBeTrashed, new Command() {
@Override
public void execute() {
- app.updateFolder(toBeTrashed.getParent(), true);
+ app.updateFolder(toBeTrashed.getParent(), true, null);
}
});
}
private void trashFolder(final Folder f, final Command callback) {
- String path = "/" + Pithos.TRASH_CONTAINER + "/" + f.getPrefix() + "/" + f.getName();
+ String path = "/" + Pithos.TRASH_CONTAINER + "/" + f.getPrefix();
PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
@Override
public void execute() {
Iterator<Folder> iterf = f.getSubfolders().iterator();
- trashSubfolders(iterf, callback);
+ trashSubfolders(iterf, new Command() {
+
+ @Override
+ public void execute() {
+ DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), f.getOwner(), f.getUri()) {
+
+ @Override
+ public void onSuccess(Resource result) {
+ if (callback != null)
+ callback.execute();
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ GWT.log("", t);
+ if (t instanceof RestException) {
+ app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
+ }
+ else
+ app.displayError("System error unable to delete folder: "+t.getMessage());
+ }
+ };
+ deleteFolder.setHeader("X-Auth-Token", app.getToken());
+ Scheduler.get().scheduleDeferred(deleteFolder);
+ }
+ });
}
});
}
final Folder f = iter.next();
trashFolder(f, callback);
}
- else if (callback != null) {
- callback.execute();
+ else {
+ app.updateTrash(false, callback);
}
}
}
import com.google.gwt.user.cellview.client.CellTree;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.TreeNode;
+import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Tree;
import gr.grnet.pithos.web.client.FolderContextMenu;
return model.getSelection();
}
- public void updateFolder(Folder folder, boolean showfiles) {
- model.updateFolder(folder, showfiles);
+ public void updateFolder(Folder folder, boolean showfiles, Command callback) {
+ model.updateFolder(folder, showfiles, callback);
}
}
dataProviderMap.put(f, new ListDataProvider<Folder>());
}
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(f);
- fetchFolder(f, dataProvider, false);
+ fetchFolder(f, dataProvider, false, null);
return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null);
}
return selectionModel.getSelectedObject();
}
- public void updateFolder(Folder folder, boolean showfiles) {
+ public void updateFolder(Folder folder, boolean showfiles, Command callback) {
if (dataProviderMap.get(folder) == null) {
dataProviderMap.put(folder, new ListDataProvider<Folder>());
}
final ListDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
- if (!folder.isTrash())
- fetchFolder(folder, dataProvider, showfiles);
- else
- app.showFiles(folder);
+ fetchFolder(folder, dataProvider, showfiles, callback);
}
- public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles) {
+ public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
dataProvider.getList().clear();
dataProvider.getList().addAll(_result.getSubfolders());
app.getFolderTreeView().updateChildren(f);
+ if (callback != null)
+ callback.execute();
}
});
}