- AWC-1089: Nodes in tree should be ordered alphabetically

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5016 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gavin Cornwell
2007-02-02 14:32:45 +00:00
parent 28a528f534
commit af3b4b4342
3 changed files with 38 additions and 4 deletions

View File

@@ -26,6 +26,8 @@ import org.alfresco.web.app.servlet.FacesHelper;
import org.alfresco.web.bean.BrowseBean;
import org.alfresco.web.bean.NavigationBean;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort;
import org.alfresco.web.ui.repo.component.UITree.TreeNode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -103,8 +105,7 @@ public class NavigatorPluginBean implements IContextListener
// get all the child folder objects for the parent
List<ChildAssociationRef> childRefs = this.nodeService.getChildAssocs(parentNodeRef,
ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
StringBuilder xml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?><nodes>");
List<TreeNode> sortedNodes = new ArrayList<TreeNode>();
for (ChildAssociationRef ref: childRefs)
{
NodeRef nodeRef = ref.getChildRef();
@@ -115,9 +116,23 @@ public class NavigatorPluginBean implements IContextListener
TreeNode childNode = createTreeNode(nodeRef);
parentNode.addChild(childNode);
currentNodes.put(childNode.getNodeRef(), childNode);
xml.append(childNode.toXML());
sortedNodes.add(childNode);
}
}
// order the tree nodes by the tree label
if (sortedNodes.size() > 1)
{
QuickSort sorter = new QuickSort(sortedNodes, "name", true, IDataContainer.SORT_CASEINSENSITIVE);
sorter.sort();
}
// generate the XML representation
StringBuilder xml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?><nodes>");
for (TreeNode childNode : sortedNodes)
{
xml.append(childNode.toXML());
}
xml.append("</nodes>");
// send the generated XML back to the tree

View File

@@ -22,6 +22,8 @@ import org.alfresco.web.bean.BrowseBean;
import org.alfresco.web.bean.NavigationBean;
import org.alfresco.web.bean.ajax.NavigatorPluginBean;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.component.SelfRenderingComponent;
import org.alfresco.web.ui.repo.component.UITree.TreeNode;
@@ -220,6 +222,13 @@ public class UINavigator extends SelfRenderingComponent
areaTitle = Application.getMessage(context, NavigationBean.MSG_MYALFRESCO);
}
// order the root nodes by the tree label
if (rootNodesForArea != null && rootNodesForArea.size() > 1)
{
QuickSort sorter = new QuickSort(rootNodesForArea, "name", true, IDataContainer.SORT_CASEINSENSITIVE);
sorter.sort();
}
// main container div
out.write("<div id=\"navigator\" class=\"navigator\">");

View File

@@ -7,6 +7,8 @@ import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort;
import org.alfresco.web.ui.common.Utils;
import org.alfresco.web.ui.common.renderer.BaseRenderer;
import org.alfresco.web.ui.repo.component.UITree;
@@ -173,7 +175,15 @@ public class YahooTreeRenderer extends BaseRenderer
// iterate through the child nodes and generate them
if (node.isExpanded() && node.getChildren().size() > 0)
{
for (TreeNode child : node.getChildren())
// order the children
List<TreeNode> children = node.getChildren();
if (children.size() > 1)
{
QuickSort sorter = new QuickSort(children, "name", true, IDataContainer.SORT_CASEINSENSITIVE);
sorter.sort();
}
for (TreeNode child : children)
{
generateNode(child, out, currentVarName);
}