diff --git a/source/java/org/alfresco/web/bean/ajax/NavigatorPluginBean.java b/source/java/org/alfresco/web/bean/ajax/NavigatorPluginBean.java index 48a6f1933d..c556447149 100644 --- a/source/java/org/alfresco/web/bean/ajax/NavigatorPluginBean.java +++ b/source/java/org/alfresco/web/bean/ajax/NavigatorPluginBean.java @@ -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 childRefs = this.nodeService.getChildAssocs(parentNodeRef, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL); - - StringBuilder xml = new StringBuilder(""); + List sortedNodes = new ArrayList(); 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(""); + for (TreeNode childNode : sortedNodes) + { + xml.append(childNode.toXML()); + } xml.append(""); // send the generated XML back to the tree diff --git a/source/java/org/alfresco/web/ui/repo/component/UINavigator.java b/source/java/org/alfresco/web/ui/repo/component/UINavigator.java index 9ecf83ef93..48325bb1e8 100644 --- a/source/java/org/alfresco/web/ui/repo/component/UINavigator.java +++ b/source/java/org/alfresco/web/ui/repo/component/UINavigator.java @@ -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("
"); diff --git a/source/java/org/alfresco/web/ui/repo/renderer/YahooTreeRenderer.java b/source/java/org/alfresco/web/ui/repo/renderer/YahooTreeRenderer.java index c2eccaf165..e36cdf1b7b 100644 --- a/source/java/org/alfresco/web/ui/repo/renderer/YahooTreeRenderer.java +++ b/source/java/org/alfresco/web/ui/repo/renderer/YahooTreeRenderer.java @@ -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 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); }