/*
- * Copyright 2011 GRNET S.A. All rights reserved.
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
package gr.grnet.pithos.web.client.foldertree;
+import gr.grnet.pithos.web.client.FolderContextMenu;
+import gr.grnet.pithos.web.client.TreeView;
+
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ImageResource.ImageOptions;
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;
-public class FolderTreeView extends Composite {
+public class FolderTreeView extends Composite implements TreeView {
- public void updateChildren(Folder folder) {
+ public boolean isFolderOpen(Folder folder) {
+ TreeNode root = ((CellTree) getWidget()).getRootTreeNode();
+ 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);
+ }
+ 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();
- updateChildren(root, folder);
+ 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 (node.isChildOpen(i)) {
- if (folder.equals(node.getChildValue(i))) {
- node.setChildOpen(i, false, true);
- node.setChildOpen(i, true, true);
- }
- else {
- TreeNode n = node.setChildOpen(i, true);
- updateChildren(n, folder);
- }
+ if (folder.equals(node.getChildValue(i))) {
+ node.setChildOpen(i, false, true);
+ node.setChildOpen(i, true, true);
+ break;
}
- }
+ if (node.isChildOpen(i)) {
+ TreeNode n = node.setChildOpen(i, true);
+ openFolder(n, folder);
+ break;
+ }
+ }
}
static interface BasicResources extends CellTree.Resources {
@Override
@ImageOptions(flipRtl = true)
- @Source("gr/grnet/pithos/web/client/cellTreeClosedItem.gif")
+ @Source("gr/grnet/pithos/web/client/cellTreeClosedItem.png")
ImageResource cellTreeClosedItem();
@Override
@Override
@ImageOptions(flipRtl = true)
- @Source("gr/grnet/pithos/web/client/cellTreeOpenItem.gif")
+ @Source("gr/grnet/pithos/web/client/cellTreeOpenItem.png")
ImageResource cellTreeOpenItem();
@Override
- @Source({"gr/grnet/pithos/web/client/GssCellTreeBasic.css"})
+ @Source({"gr/grnet/pithos/web/client/PithosCellTreeBasic.css"})
CellTree.Style cellTreeStyle();
}
public static interface Images extends Tree.Resources, FolderContextMenu.Images {
- @Source("gr/grnet/pithos/resources/folder_home.png")
+ @Source("gr/grnet/pithos/resources/home22.png")
ImageResource home();
- @Source("gr/grnet/pithos/resources/2folder22.png")
+ @Source("gr/grnet/pithos/resources/folder22.png")
public ImageResource folderYellow();
@Source("gr/grnet/pithos/resources/mimetypes/document.png")
static interface Templates extends SafeHtmlTemplates {
public Templates INSTANCE = GWT.create(Templates.class);
- @Template("<span>{0}</span>")
+ @Template("<span style='vertical-align: middle;'>{0}</span>")
public SafeHtml nameSpan(String name);
- }
+
+ @Template("<span class='pithos-folderLabel'>{0}</span>")
+ public SafeHtml imageSpan(String name);
+ }
private FolderTreeViewModel model;
}
- public Folder getSelection() {
+ @Override
+ public Folder getSelection() {
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);
}
}