X-Git-Url: https://code.grnet.gr/git/pithos-web-client/blobdiff_plain/a7b6e46409a6fc0a6defacbb8a7135e7aa640637..a43ef959d44a31363d531edda3d7094c257659f5:/src/gr/grnet/pithos/web/client/foldertree/FolderTreeView.java diff --git a/src/gr/grnet/pithos/web/client/foldertree/FolderTreeView.java b/src/gr/grnet/pithos/web/client/foldertree/FolderTreeView.java index 9a6cc61..55c40d2 100644 --- a/src/gr/grnet/pithos/web/client/foldertree/FolderTreeView.java +++ b/src/gr/grnet/pithos/web/client/foldertree/FolderTreeView.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 GRNET S.A. All rights reserved. + * Copyright 2011-2013 GRNET S.A. All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following @@ -36,11 +36,15 @@ package gr.grnet.pithos.web.client.foldertree; import gr.grnet.pithos.web.client.FolderContextMenu; +import gr.grnet.pithos.web.client.Pithos; +import gr.grnet.pithos.web.client.PithosDisclosurePanel; import gr.grnet.pithos.web.client.TreeView; import com.google.gwt.core.client.GWT; +import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.resources.client.ImageResource.ImageOptions; +import com.google.gwt.resources.client.ImageResource.RepeatStyle; import com.google.gwt.safehtml.client.SafeHtmlTemplates; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.user.cellview.client.CellTree; @@ -48,7 +52,11 @@ import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSe 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.HTML; +import com.google.gwt.user.client.ui.HasHorizontalAlignment; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Tree; +import com.google.gwt.user.client.ui.VerticalPanel; public class FolderTreeView extends Composite implements TreeView { @@ -62,18 +70,16 @@ public class FolderTreeView extends Composite implements TreeView { 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); - } - } + 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(); + TreeNode root = tree.getRootTreeNode(); openFolder(root, folder); } @@ -84,13 +90,11 @@ public class FolderTreeView extends Composite implements TreeView { node.setChildOpen(i, true, true); break; } - else { - if (node.isChildOpen(i)) { - TreeNode n = node.setChildOpen(i, true); - openFolder(n, folder); - break; - } - } + if (node.isChildOpen(i)) { + TreeNode n = node.setChildOpen(i, true); + openFolder(n, folder); + break; + } } } @@ -98,7 +102,7 @@ public class FolderTreeView extends Composite implements TreeView { @Override @ImageOptions(flipRtl = true) - @Source("gr/grnet/pithos/web/client/cellTreeClosedItem.gif") + @Source("gr/grnet/pithos/web/client/cellTreeClosedItem.png") ImageResource cellTreeClosedItem(); @Override @@ -108,12 +112,16 @@ public class FolderTreeView extends Composite implements TreeView { @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/PithosCellTreeBasic.css"}) CellTree.Style cellTreeStyle(); + + @Source("gr/grnet/pithos/web/client/cellTreeLoadingBasic.gif") + @ImageOptions(repeatStyle=RepeatStyle.None) + ImageResource cellTreeLoadingBasic(); } public static interface Images extends Tree.Resources, FolderContextMenu.Images { @@ -121,15 +129,12 @@ public class FolderTreeView extends Composite implements TreeView { @Source("gr/grnet/pithos/resources/home22.png") ImageResource home(); - @Source("gr/grnet/pithos/resources/folder22.png") + @Source("gr/grnet/pithos/resources/2folder22.png") public ImageResource folderYellow(); @Source("gr/grnet/pithos/resources/mimetypes/document.png") ImageResource document(); - @Source("gr/grnet/pithos/resources/othersshared.png") - ImageResource othersShared(); - @Source("gr/grnet/pithos/resources/myshared22.png") ImageResource myShared(); @@ -145,27 +150,64 @@ public class FolderTreeView extends Composite implements TreeView { static interface Templates extends SafeHtmlTemplates { public Templates INSTANCE = GWT.create(Templates.class); - @Template("{0}") + @Template("{0}") public SafeHtml nameSpan(String name); @Template("{0}") public SafeHtml imageSpan(String name); } + interface Resources extends gr.grnet.pithos.web.client.PithosDisclosurePanel.Resources { + @Override + @Source("gr/grnet/pithos/resources/home22.png") + ImageResource icon(); + } + private FolderTreeViewModel model; + + CellTree tree; + + private HTML usedBytes; + + private HTML totalBytes; + + private HTML usedPercent; public FolderTreeView(FolderTreeViewModel viewModel) { this.model = viewModel; + + PithosDisclosurePanel panel = new PithosDisclosurePanel((Resources) GWT.create(Resources.class), "My Files", false, true); + + VerticalPanel content = new VerticalPanel(); + /* * Create the tree using the model. We use null as the default * value of the root node. The default value will be passed to * CustomTreeModel#getNodeInfo(); */ CellTree.Resources res = GWT.create(BasicResources.class); - CellTree tree = new CellTree(model, null, res); + tree = new CellTree(model, null, res); tree.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); - - initWidget(tree); + tree.setDefaultNodeSize(5000); + content.add(tree); + + HorizontalPanel statistics = new HorizontalPanel(); + statistics.addStyleName(Pithos.resources.pithosCss().statistics()); + statistics.add(new HTML("Used: ")); + usedBytes = new HTML(); + statistics.add(usedBytes); + statistics.add(new HTML(" of ")); + totalBytes = new HTML(); + statistics.add(totalBytes); + statistics.add(new HTML(" (")); + usedPercent = new HTML(); + statistics.add(usedPercent); + statistics.add(new HTML(")")); + content.add(statistics); + content.setCellHorizontalAlignment(statistics, HasHorizontalAlignment.ALIGN_CENTER); + + panel.setContent(content); + initWidget(panel); } @@ -174,7 +216,14 @@ public class FolderTreeView extends Composite implements TreeView { return model.getSelection(); } - public void updateFolder(Folder folder, boolean showfiles, Command callback) { - model.updateFolder(folder, showfiles, callback); + public void updateFolder(Folder folder, boolean showfiles, Command callback, final boolean openParent) { + model.updateFolder(folder, showfiles, callback, openParent); } + + public void showStatistics(AccountResource account) { + usedBytes.setHTML(String.valueOf(account.getFileSizeAsString())); + totalBytes.setHTML(String.valueOf(account.getQuotaAsString())); + NumberFormat nf = NumberFormat.getPercentFormat(); + usedPercent.setHTML(nf.format(account.getUsedPercentage())); + } }