DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), getUsername(), path) {
@Override
public void onSuccess(@SuppressWarnings("unused") Resource result) {
+// folderTreeSelectionModel.setSelected(folder.getParent(), true);
updateFolder(folder.getParent(), true, new Command() {
@Override
public class FolderTreeView extends Composite implements TreeView {
- public void updateChildren(Folder folder) {
+ public boolean isFolderOpen(Folder folder) {
TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
- updateChildren(root, folder);
+ return isFolderOpen(root, folder);
+ }
+
+ private boolean isFolderOpen(TreeNode node, Folder folder) {
+ for (int i=0; i<node.getChildCount(); i++) {
+ if (folder.equals(node.getChildValue(i))) {
+ return node.isChildOpen(i);
+ }
+ else {
+ if (node.isChildOpen(i)) {
+ TreeNode n = node.setChildOpen(i, true);
+ return isFolderOpen(n, folder);
+ }
+ }
+ }
+ return false;
+ }
+
+ public void openFolder(Folder folder) {
+ TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
+ openFolder(root, folder);
}
- private void updateChildren(TreeNode node, Folder folder) {
+ private void openFolder(TreeNode node, Folder folder) {
for (int i=0; i<node.getChildCount(); i++) {
if (folder.equals(node.getChildValue(i))) {
- node.setChildOpen(i, false, false);
- node.setChildOpen(i, true, false);
+ node.setChildOpen(i, false, true);
+ node.setChildOpen(i, true, true);
+ break;
}
else {
if (node.isChildOpen(i)) {
TreeNode n = node.setChildOpen(i, true);
- updateChildren(n, folder);
+ openFolder(n, folder);
+ break;
}
}
}
@Override
protected void onRangeChanged(HasData<Folder> display) {
- fetchFolder(folder, this, showfiles, callback);
+ fetchFolder(folder, this, showfiles, null);
}
});
}
final AsyncDataProvider<Folder> dataProvider = dataProviderMap.get(folder);
- fetchFolder(folder, dataProvider, showfiles, callback);
+ fetchFolder(folder, dataProvider, showfiles, new Command() {
+
+ @Override
+ public void execute() {
+ app.getFolderTreeView().openFolder(folder);
+ if (callback != null)
+ callback.execute();
+ }
+ });
}
public void fetchFolder(final Folder f, final AsyncDataProvider<Folder> dataProvider, final boolean showfiles, final Command callback) {