import gr.grnet.pithos.web.client.rest.HeadRequest;
import gr.grnet.pithos.web.client.rest.PutRequest;
import gr.grnet.pithos.web.client.rest.RestException;
-import gr.grnet.pithos.web.client.tagtree.Tag;
import java.util.ArrayList;
import java.util.HashMap;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.RepeatingCommand;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
return account;
}
- public void updateFolder(Folder f, boolean showfiles, Command callback) {
- folderTreeView.updateFolder(f, showfiles, callback);
+ public void updateFolder(Folder f, boolean showfiles, Command callback, final boolean openParent) {
+ folderTreeView.updateFolder(f, showfiles, callback, openParent);
}
public void updateGroupNode(Group group) {
public void execute() {
updateStatistics();
}
- });
+ }, true);
+ showRelevantToolbarButtons();
}
- showRelevantToolbarButtons();
+ else {
+ if (getSelectedTree().equals(folderTreeView))
+ setSelectedTree(null);
+ if (getSelectedTree() == null)
+ showRelevantToolbarButtons();
+ }
}
});
selectionModels.add(folderTreeSelectionModel);
}
});
-// Scheduler.get().scheduleDeferred(new Command() {
-//
-// @Override
-// public void execute() {
-// displayError("lalala");
-//
-// }
-// });
+ Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
+
+ @Override
+ public boolean execute() {
+ Folder f = getSelection();
+ if (f != null) {
+ if (getSelectedTree().equals(folderTreeView))
+ updateFolder(f, true, null, false);
+ else if (getSelectedTree().equals(mysharedTreeView))
+ updateSharedFolder(f, true);
+ }
+ return true;
+ }
+ }, 3000);
}
public void applyPermissions(Folder f) {
c.removeStyleName("cellTreeWidget-selectedTree");
for (SingleSelectionModel s : selectionModels)
- if (!s.equals(model))
+ if (!s.equals(model) && s.getSelectedObject() != null)
s.setSelected(s.getSelectedObject(), false);
}
}
username = authSplit[0];
token = authSplit[1];
- return true;
}
-
- Cookies.setCookie(otherProperties.get("authCookie"), username + conf.cookieSeparator() + token, null, "", "/", false);
+ else
+ Cookies.setCookie(otherProperties.get("authCookie"), username + conf.cookieSeparator() + token, null, "", "/", false);
+
+ String gotoUrl = Window.Location.getParameter("goto");
+ if (gotoUrl != null && gotoUrl.length() > 0) {
+ Window.Location.assign(gotoUrl);
+ return false;
+ }
return true;
}
*/
protected void authenticateUser() {
Dictionary otherProperties = Dictionary.getDictionary("otherProperties");
- Window.Location.assign(otherProperties.get("loginUrl"));
+ Window.Location.assign(otherProperties.get("loginUrl") + Window.Location.getHref());
}
protected void fetchAccount(final Command callback) {
History.newItem(key);
}
- public void deleteFolder(final Folder folder) {
+ public void deleteFolder(final Folder folder, final Command callback) {
String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(folder.getPrefix()) + "&t=" + System.currentTimeMillis();
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
builder.setHeader("X-Auth-Token", getToken());
JSONArray array = json.isArray();
int i = 0;
if (array != null) {
- deleteObject(folder, i, array);
+ deleteObject(folder, i, array, callback);
}
}
}
}
}
- void deleteObject(final Folder folder, final int i, final JSONArray array) {
+ void deleteObject(final Folder folder, final int i, final JSONArray array, final Command callback) {
if (i < array.size()) {
JSONObject o = array.get(i).isObject();
if (o != null && !o.containsKey("subdir")) {
DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), URL.encode(path)) {
@Override
public void onSuccess(Resource result) {
- deleteObject(folder, i + 1, array);
+ deleteObject(folder, i + 1, array, callback);
}
@Override
array.set(l++, array2.get(j));
}
}
- deleteObject(folder, i + 1, array);
+ deleteObject(folder, i + 1, array, callback);
}
}
@Override
public void execute() {
+ folderTreeSelectionModel.setSelected(folder.getParent(), true);
updateStatistics();
+ if (callback != null)
+ callback.execute();
}
- });
+ }, true);
}
@Override
}
public void updateTrash(boolean showFiles, Command callback) {
- updateFolder(trash, showFiles, callback);
+ updateFolder(trash, showFiles, callback, true);
}
public void updateGroupsNode() {
return selectedTree;
}
+ public void setSelectedTree(TreeView selected) {
+ selectedTree = selected;
+ }
+
public Folder getSelection() {
return selectedTree.getSelection();
}
}
public void updateRootFolder(Command callback) {
- updateFolder(account.getPithos(), false, callback);
+ updateFolder(account.getPithos(), false, callback, true);
}
void createMySharedTree() {
deselectOthers(mysharedTreeView, mysharedTreeSelectionModel);
upload.setEnabled(false);
updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
+ showRelevantToolbarButtons();
}
- showRelevantToolbarButtons();
+ else {
+ if (getSelectedTree().equals(mysharedTreeView))
+ setSelectedTree(null);
+ if (getSelectedTree() == null)
+ showRelevantToolbarButtons();
+ }
}
});
selectionModels.add(mysharedTreeSelectionModel);
otherSharedTreeView.addStyleName("cellTreeWidget-selectedTree");
applyPermissions(otherSharedTreeSelectionModel.getSelectedObject());
updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true);
+ showRelevantToolbarButtons();
}
- showRelevantToolbarButtons();
+ else {
+ if (getSelectedTree().equals(otherSharedTreeView))
+ setSelectedTree(null);
+ if (getSelectedTree() == null)
+ showRelevantToolbarButtons();
+ }
}
});
selectionModels.add(otherSharedTreeSelectionModel);
@Override
public void execute() {
otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
- trees.insert(otherSharedTreeView, 3);
+ trees.insert(otherSharedTreeView, 2);
treeViews.add(otherSharedTreeView);
}
});
}
public void scheduleFolderHeadCommand(final Folder folder, final Command callback) {
- HeadRequest<Folder> headFolder = new HeadRequest<Folder>(Folder.class, getApiPath(), folder.getOwner(), folder.getUri(), folder) {
-
- @Override
- public void onSuccess(Folder _result) {
- if (callback != null)
- callback.execute();
- }
-
- @Override
- public void onError(Throwable t) {
- if (t instanceof RestException) {
- if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) {
- final String path = folder.getUri();
- PutRequest newFolder = new PutRequest(getApiPath(), folder.getOwner(), path) {
- @Override
- public void onSuccess(Resource _result) {
- scheduleFolderHeadCommand(folder, callback);
- }
-
- @Override
- public void onError(Throwable _t) {
- GWT.log("", _t);
- setError(_t);
- if(_t instanceof RestException){
- displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText());
- }
- else
- displayError("System error creating folder: " + _t.getMessage());
- }
-
- @Override
- protected void onUnauthorized(Response response) {
- sessionExpired();
- }
- };
- newFolder.setHeader("X-Auth-Token", getToken());
- newFolder.setHeader("Content-Type", "application/folder");
- newFolder.setHeader("Accept", "*/*");
- newFolder.setHeader("Content-Length", "0");
- Scheduler.get().scheduleDeferred(newFolder);
- }
- else
- displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
- }
- else
- displayError("System error heading folder: " + t.getMessage());
-
- GWT.log("Error heading folder", t);
- setError(t);
- }
-
- @Override
- protected void onUnauthorized(Response response) {
- sessionExpired();
- }
- };
- headFolder.setHeader("X-Auth-Token", getToken());
- Scheduler.get().scheduleDeferred(headFolder);
+ if (folder == null) {
+ if (callback != null)
+ callback.execute();
+ }
+ else {
+ HeadRequest<Folder> headFolder = new HeadRequest<Folder>(Folder.class, getApiPath(), folder.getOwner(), folder.getUri(), folder) {
+
+ @Override
+ public void onSuccess(Folder _result) {
+ if (callback != null)
+ callback.execute();
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ if (t instanceof RestException) {
+ if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) {
+ final String path = folder.getUri();
+ PutRequest newFolder = new PutRequest(getApiPath(), folder.getOwner(), path) {
+ @Override
+ public void onSuccess(Resource _result) {
+ scheduleFolderHeadCommand(folder, callback);
+ }
+
+ @Override
+ public void onError(Throwable _t) {
+ GWT.log("", _t);
+ setError(_t);
+ if(_t instanceof RestException){
+ displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText());
+ }
+ else
+ displayError("System error creating folder: " + _t.getMessage());
+ }
+
+ @Override
+ protected void onUnauthorized(Response response) {
+ sessionExpired();
+ }
+ };
+ newFolder.setHeader("X-Auth-Token", getToken());
+ newFolder.setHeader("Content-Type", "application/folder");
+ newFolder.setHeader("Accept", "*/*");
+ newFolder.setHeader("Content-Length", "0");
+ Scheduler.get().scheduleDeferred(newFolder);
+ }
+ else
+ displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
+ }
+ else
+ displayError("System error heading folder: " + t.getMessage());
+
+ GWT.log("Error heading folder", t);
+ setError(t);
+ }
+
+ @Override
+ protected void onUnauthorized(Response response) {
+ sessionExpired();
+ }
+ };
+ headFolder.setHeader("X-Auth-Token", getToken());
+ Scheduler.get().scheduleDeferred(headFolder);
+ }
}
public void scheduleFileHeadCommand(File f, final Command callback) {