- 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.BrowseBean;
import org.alfresco.web.bean.NavigationBean; import org.alfresco.web.bean.NavigationBean;
import org.alfresco.web.bean.repository.Repository; 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.alfresco.web.ui.repo.component.UITree.TreeNode;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@@ -103,8 +105,7 @@ public class NavigatorPluginBean implements IContextListener
// get all the child folder objects for the parent // get all the child folder objects for the parent
List<ChildAssociationRef> childRefs = this.nodeService.getChildAssocs(parentNodeRef, List<ChildAssociationRef> childRefs = this.nodeService.getChildAssocs(parentNodeRef,
ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL); ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
List<TreeNode> sortedNodes = new ArrayList<TreeNode>();
StringBuilder xml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?><nodes>");
for (ChildAssociationRef ref: childRefs) for (ChildAssociationRef ref: childRefs)
{ {
NodeRef nodeRef = ref.getChildRef(); NodeRef nodeRef = ref.getChildRef();
@@ -115,9 +116,23 @@ public class NavigatorPluginBean implements IContextListener
TreeNode childNode = createTreeNode(nodeRef); TreeNode childNode = createTreeNode(nodeRef);
parentNode.addChild(childNode); parentNode.addChild(childNode);
currentNodes.put(childNode.getNodeRef(), 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>"); xml.append("</nodes>");
// send the generated XML back to the tree // 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.NavigationBean;
import org.alfresco.web.bean.ajax.NavigatorPluginBean; import org.alfresco.web.bean.ajax.NavigatorPluginBean;
import org.alfresco.web.bean.repository.Repository; 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.Utils;
import org.alfresco.web.ui.common.component.SelfRenderingComponent; import org.alfresco.web.ui.common.component.SelfRenderingComponent;
import org.alfresco.web.ui.repo.component.UITree.TreeNode; 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); 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 // main container div
out.write("<div id=\"navigator\" class=\"navigator\">"); 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.FacesContext;
import javax.faces.context.ResponseWriter; 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.Utils;
import org.alfresco.web.ui.common.renderer.BaseRenderer; import org.alfresco.web.ui.common.renderer.BaseRenderer;
import org.alfresco.web.ui.repo.component.UITree; 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 // iterate through the child nodes and generate them
if (node.isExpanded() && node.getChildren().size() > 0) 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); generateNode(child, out, currentVarName);
} }