import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
-import com.google.gwt.i18n.client.DateTimeFormat;
-import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
otherSharedTreeView.updateFolder(f, showfiles);
}
- public void updateTag(Tag t) {
- tagTreeView.updateTag(t);
- }
-
- public void updateTags() {
- tagTreeViewModel.initialize(getAllTags());
- }
-
public List<Tag> getAllTags() {
List<Tag> tagList = new ArrayList<Tag>();
for (Folder f : account.getContainers()) {
*/
private String token;
+ VerticalPanel trees;
+
SingleSelectionModel<Folder> folderTreeSelectionModel;
FolderTreeViewModel folderTreeViewModel;
FolderTreeView folderTreeView;
SingleSelectionModel<Folder> mysharedTreeSelectionModel;
- private MysharedTreeViewModel mysharedTreeViewModel;
- MysharedTreeView mysharedTreeView;
+ MysharedTreeViewModel mysharedTreeViewModel;
+ MysharedTreeView mysharedTreeView = null;;
protected SingleSelectionModel<Folder> otherSharedTreeSelectionModel;
- private OtherSharedTreeViewModel otherSharedTreeViewModel;
- OtherSharedTreeView otherSharedTreeView;
-
- protected SingleSelectionModel<Tag> tagTreeSelectionModel;
- private TagTreeViewModel tagTreeViewModel;
- private TagTreeView tagTreeView;
+ OtherSharedTreeViewModel otherSharedTreeViewModel;
+ OtherSharedTreeView otherSharedTreeView = null;
GroupTreeViewModel groupTreeViewModel;
private GroupTreeView groupTreeView;
Folder trash;
- @SuppressWarnings("rawtypes")
- private List<SingleSelectionModel> selectionModels = new ArrayList<SingleSelectionModel>();
+ @SuppressWarnings("rawtypes") List<SingleSelectionModel> selectionModels = new ArrayList<SingleSelectionModel>();
Button upload;
fileList = new FileList(this, images, folderTreeView);
inner.add(fileList);
- mysharedTreeSelectionModel = new SingleSelectionModel<Folder>();
- mysharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
- @Override
- public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
- if (mysharedTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(mysharedTreeView, mysharedTreeSelectionModel);
- upload.setEnabled(false);
- updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
- }
- }
- });
- selectionModels.add(mysharedTreeSelectionModel);
- mysharedTreeViewModel = new MysharedTreeViewModel(this, mysharedTreeSelectionModel);
- mysharedTreeView = new MysharedTreeView(mysharedTreeViewModel);
-
- otherSharedTreeSelectionModel = new SingleSelectionModel<Folder>();
- otherSharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
- @Override
- public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
- if (otherSharedTreeSelectionModel.getSelectedObject() != null) {
- deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel);
- applyPermissions(otherSharedTreeSelectionModel.getSelectedObject());
- updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true);
- }
- }
- });
- selectionModels.add(otherSharedTreeSelectionModel);
- otherSharedTreeViewModel = new OtherSharedTreeViewModel(this, otherSharedTreeSelectionModel);
- otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
-
groupTreeViewModel = new GroupTreeViewModel(this);
groupTreeView = new GroupTreeView(groupTreeViewModel);
- VerticalPanel trees = new VerticalPanel();
+ trees = new VerticalPanel();
upload = new Button("Upload File", new ClickHandler() {
@Override
trees.add(treeHeader);
trees.add(folderTreeView);
- trees.add(mysharedTreeView);
- trees.add(otherSharedTreeView);
-// trees.add(tagTreeView);
trees.add(groupTreeView);
// Add the left and right panels to the split panel.
splitPanel.setLeftWidget(trees);
}
folderTreeViewModel.initialize(account);
groupTreeViewModel.initialize();
+ createMySharedTree();
showStatistics();
}
}
public void updateRootFolder(Command callback) {
updateFolder(account.getPithos(), false, callback);
}
+
+ void createMySharedTree() {
+ mysharedTreeSelectionModel = new SingleSelectionModel<Folder>();
+ mysharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
+ @Override
+ public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
+ if (mysharedTreeSelectionModel.getSelectedObject() != null) {
+ deselectOthers(mysharedTreeView, mysharedTreeSelectionModel);
+ upload.setEnabled(false);
+ updateSharedFolder(mysharedTreeSelectionModel.getSelectedObject(), true);
+ }
+ }
+ });
+ selectionModels.add(mysharedTreeSelectionModel);
+ mysharedTreeViewModel = new MysharedTreeViewModel(Pithos.this, mysharedTreeSelectionModel);
+ mysharedTreeViewModel.initialize(new Command() {
+
+ @Override
+ public void execute() {
+ mysharedTreeView = new MysharedTreeView(mysharedTreeViewModel);
+ trees.insert(mysharedTreeView, 3);
+ createOtherSharedTree();
+ }
+ });
+ }
+
+ void createOtherSharedTree() {
+ otherSharedTreeSelectionModel = new SingleSelectionModel<Folder>();
+ otherSharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
+ @Override
+ public void onSelectionChange(@SuppressWarnings("unused") SelectionChangeEvent event) {
+ if (otherSharedTreeSelectionModel.getSelectedObject() != null) {
+ deselectOthers(otherSharedTreeView, otherSharedTreeSelectionModel);
+ applyPermissions(otherSharedTreeSelectionModel.getSelectedObject());
+ updateOtherSharedFolder(otherSharedTreeSelectionModel.getSelectedObject(), true);
+ }
+ }
+ });
+ selectionModels.add(otherSharedTreeSelectionModel);
+ otherSharedTreeViewModel = new OtherSharedTreeViewModel(Pithos.this, otherSharedTreeSelectionModel);
+ otherSharedTreeViewModel.initialize(new Command() {
+
+ @Override
+ public void execute() {
+ otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
+ trees.insert(otherSharedTreeView, 4);
+ }
+ });
+ }
}
}), selectionModel2, null);
}
else if (value instanceof String) {
- fetchSharedContainers();
+ fetchSharedContainers(null);
return new DefaultNodeInfo<Folder>(firstLevelDataProvider, folderCell, selectionModel, null);
}
else {
});
}
- private void fetchSharedContainers() {
+ private void fetchSharedContainers(final Command callback) {
final List<Folder> containers = app.getAccount().getContainers();
final ListDataProvider<Folder> tempProvider = new ListDataProvider<Folder>();
Iterator<Folder> iter = containers.iterator();
public void execute() {
firstLevelDataProvider.getList().clear();
firstLevelDataProvider.getList().addAll(tempProvider.getList());
+ if (callback != null)
+ callback.execute();
}
});
}
@Override
public boolean isLeaf(Object o) {
- if (o instanceof Folder) {
+ if (o == null)
+ return false;
+ else if (o instanceof Folder) {
Folder f = (Folder) o;
return f.getSubfolders().isEmpty();
}
- return false;
+ else {
+ return firstLevelDataProvider.getList().isEmpty();
+ }
}
protected void fetchFolder(final Iterator<Folder> iter, final ListDataProvider<Folder> dataProvider, final Command callback) {
getFolder.setHeader("X-Auth-Token", app.getToken());
Scheduler.get().scheduleDeferred(getFolder);
}
+
+ public void initialize(Command callback) {
+ fetchSharedContainers(callback);
+ }
}
public class OtherSharedTreeViewModel implements TreeViewModel {
+ private static final String treeTitle = "Other 's shared";
protected Pithos app;
private Cell<Folder> folderCell = new AbstractCell<Folder>(ContextMenuEvent.getType().getName()) {
@Override
public <T> NodeInfo<?> getNodeInfo(T value) {
if (value == null) {
- rootDataProvider.getList().add("Other 's Shared");
+ rootDataProvider.getList().add(treeTitle);
final SingleSelectionModel<String> selectionModel2 = new SingleSelectionModel<String>();
selectionModel2.addSelectionChangeHandler(new Handler() {
}), selectionModel2, null);
}
else if (value instanceof String) {
- if (value.equals("Other 's Shared")) {
- fetchSharingUsers();
+ if (value.equals(treeTitle)) {
+ fetchSharingUsers(null);
final SingleSelectionModel<String> selectionModel3 = new SingleSelectionModel<String>();
selectionModel3.addSelectionChangeHandler(new Handler() {
userDataProviderMap.put(username, new ListDataProvider<Folder>());
}
final ListDataProvider<Folder> dataProvider = userDataProviderMap.get(username);
- fetchSharedContainers(username, dataProvider);
+ fetchSharedContainers(username, dataProvider, null);
return new DefaultNodeInfo<Folder>(dataProvider, folderCell, selectionModel, null);
}
else {
}
}
- private void fetchSharingUsers() {
+ private void fetchSharingUsers(final Command callback) {
GetRequest<SharingUsers> getSharingUsers = new GetRequest<SharingUsers>(SharingUsers.class, app.getApiPath(), "", "?format=json") {
@Override
public void onSuccess(final SharingUsers _result) {
for (String name : _result.getUsers()) {
sharedFiles.put(name, new HashSet<File>());
}
+ Iterator<String> iter = _result.getUsers().iterator();
+ fetchSharedContainers(iter, callback);
}
@Override
Scheduler.get().scheduleDeferred(getSharingUsers);
}
+ protected void fetchSharedContainers(final Iterator<String> iter, final Command callback) {
+ if (iter.hasNext()) {
+ String username = iter.next();
+ if (userDataProviderMap.get(username) == null) {
+ userDataProviderMap.put(username, new ListDataProvider<Folder>());
+ }
+ final ListDataProvider<Folder> dataProvider = userDataProviderMap.get(username);
+ fetchSharedContainers(username, dataProvider, new Command() {
+
+ @Override
+ public void execute() {
+ fetchSharedContainers(iter, callback);
+
+ }
+ });
+ }
+ else
+ if (callback != null)
+ callback.execute();
+ }
+
@Override
public boolean isLeaf(Object o) {
- if (o instanceof Folder) {
+ if (o == null)
+ return false;
+ else if (o instanceof Folder) {
Folder f = (Folder) o;
return f.getSubfolders().isEmpty();
}
- return false;
+ else {
+ if (o.equals(treeTitle))
+ return userLevelDataProvider.getList().isEmpty();
+ ListDataProvider<Folder> dp = userDataProviderMap.get(o);
+ if (dp != null)
+ return dp.getList().isEmpty();
+ return true;
+ }
}
- private void fetchSharedContainers(final String username, final ListDataProvider<Folder> dataProvider) {
+ private void fetchSharedContainers(final String username, final ListDataProvider<Folder> dataProvider, final Command callback) {
GetRequest<AccountResource> getUserSharedContainers = new GetRequest<AccountResource>(AccountResource.class, app.getApiPath(), username, "?format=json") {
@Override
public void execute() {
dataProvider.getList().clear();
dataProvider.getList().addAll(tempProvider.getList());
+ if (callback != null)
+ callback.execute();
}
});
}
getFolder.setHeader("X-Auth-Token", app.getToken());
Scheduler.get().scheduleDeferred(getFolder);
}
+
+ public void initialize(Command callback) {
+ fetchSharingUsers(callback);
+ }
}