shuber 2005/02/23 15:26:19 CET
Modified files:
core/src/java/org/jahia/taglibs/categories CategoryTag.java
core/src/java/org/jahia/taglibs/html/controls TreeTag.java
core/src/webapp/WEB-INF/etc/taglibs content.tld
Log:
First try at implementing a category selection if present in a pageContext
attribute.
Revision Changes Path
1.3 +51 -3
jahia/core/src/java/org/jahia/taglibs/categories/CategoryTag.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/taglibs/categories/CategoryTag.java.diff?r1=1.2&r2=1.3&f=h
1.2 +17 -11
jahia/core/src/java/org/jahia/taglibs/html/controls/TreeTag.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/taglibs/html/controls/TreeTag.java.diff?r1=1.1&r2=1.2&f=h
1.4 +5 -0 jahia/core/src/webapp/WEB-INF/etc/taglibs/content.tld
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/etc/taglibs/content.tld.diff?r1=1.3&r2=1.4&f=h
Index: CategoryTag.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/taglibs/categories/CategoryTag.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CategoryTag.java 6 Aug 2004 19:39:31 -0000 1.2
+++ CategoryTag.java 23 Feb 2005 14:26:19 -0000 1.3
@@ -1,8 +1,8 @@
package org.jahia.taglibs.categories;
import java.util.ArrayList;
+import java.util.Date;
import java.util.Iterator;
-import java.util.Map;
import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
@@ -16,7 +16,8 @@
import org.jahia.data.beans.CategoryBean;
import org.jahia.exceptions.JahiaException;
import org.jahia.services.categories.Category;
-import java.util.Date;
+import javax.swing.tree.TreePath;
+import java.util.Enumeration;
/**
* <p>Title: The category tag gives access to a category, it's children
@@ -41,6 +42,7 @@
private String name = null;
private String childCategoriesID = null;
private String subTreeID;
+ private String selectedCategoryKeyName = null;
/**
* Empty constructor. Does nothing.
@@ -91,6 +93,16 @@
this.subTreeID = subTreeID;
}
+ /**
+ * The name of a pageContext attribute that contains a category key to
+ * select in the current tree.
+ * @param selectedCategoryKeyName the name of the page context attribute
+ * key that contains a category key to select by default in the tree.
+ */
+ public void setSelectedCategoryKeyName (String selectedCategoryKeyName) {
+ this.selectedCategoryKeyName = selectedCategoryKeyName;
+ }
+
public int doStartTag ()
throws JspException {
Category curCategory = null;
@@ -149,6 +161,23 @@
if (tree == null) {
tree = buildJTree(curCategory);
}
+
+ // now let's handle default selection of a category.
+ String selectedCategoryKey = (String)
pageContext.findAttribute(selectedCategoryKeyName);
+ if (selectedCategoryKey != null) {
+ if (tree.getSelectionCount() != 0) {
+ tree.clearSelection();
+ }
+ // now we must find the path for the category key we want to
+ // select.
+ DefaultMutableTreeNode curNode =
+ (DefaultMutableTreeNode)tree.getModel().getRoot();
+ selectCategoryInTree(tree, selectedCategoryKey, curNode);
+ } else {
+ // no selection was enforced, we do nothing in case there was
+ // a previous selection.
+ }
+
if (subTreeID != null) {
pageContext.setAttribute(subTreeID, tree,
pageContext.SESSION_SCOPE);
pageContext.setAttribute(subTreeID + TREEID_DATE_POSTFIX, new
Date(), pageContext.SESSION_SCOPE);
@@ -172,6 +201,21 @@
return EVAL_BODY_BUFFERED;
}
+ private void selectCategoryInTree (JTree tree, String
selectedCategoryKey,
+ DefaultMutableTreeNode curNode) {
+ Category category = (Category) curNode.getUserObject();
+ if (category.getKey().equals(selectedCategoryKey)) {
+ TreePath selectionPath = new TreePath(curNode.getPath());
+ tree.setSelectionPath(selectionPath);
+ return;
+ }
+ Enumeration childNodeEnum = curNode.children();
+ while (childNodeEnum.hasMoreElements()) {
+ DefaultMutableTreeNode curChildNode = (DefaultMutableTreeNode)
childNodeEnum.nextElement();
+ selectCategoryInTree(tree, selectedCategoryKey, curChildNode);
+ }
+ }
+
// loops through the next elements
public int doAfterBody ()
throws JspException {
@@ -222,4 +266,8 @@
}
}
-}
\ No newline at end of file
+ public String getSelectedCategoryKeyName () {
+ return selectedCategoryKeyName;
+ }
+
+}
Index: TreeTag.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/taglibs/html/controls/TreeTag.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TreeTag.java 30 Mar 2004 14:13:16 -0000 1.1
+++ TreeTag.java 23 Feb 2005 14:26:19 -0000 1.2
@@ -232,18 +232,24 @@
String selectedNodeIndexStr =
request.getParameter(selectionParamName);
if (selectedNodeIndexStr != null) {
selectedNodeIndex =
Integer.parseInt(selectedNodeIndexStr);
+ } else {
+ // no selection found in URL
}
- ArrayList nodeList =
- GUITreeTools.getFlatTree(tree, rootNode);
- if (selectedNodeIndex > (nodeList.size() - 1) ) {
- selectedNodeIndex = 0;
+
+ TreePath selectedNodePath = tree.getSelectionPath();
+ if ((selectedNodePath == null) && (selectedNodeIndexStr ==
null)) {
+ ArrayList nodeList =
+ GUITreeTools.getFlatTree(tree, rootNode);
+ if (selectedNodeIndex > (nodeList.size() - 1)) {
+ selectedNodeIndex = 0;
+ }
+ selectedNode
+ = (DefaultMutableTreeNode)
+ nodeList.get(selectedNodeIndex);
+ selectedNodePath = new TreePath(selectedNode.getPath());
+ tree.clearSelection();
+ tree.setSelectionPath(selectedNodePath);
}
- selectedNode
- = (DefaultMutableTreeNode)
- nodeList.get(selectedNodeIndex);
- TreePath selectedNodePath = new
TreePath(selectedNode.getPath());
- tree.clearSelection();
- tree.setSelectionPath(selectedNodePath);
GUITreeTools.updateGUITree(tree, request);
@@ -511,4 +517,4 @@
}
-}
\ No newline at end of file
+}
Index: content.tld
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/webapp/WEB-INF/etc/taglibs/content.tld,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- content.tld 26 Oct 2004 15:18:09 -0000 1.3
+++ content.tld 23 Feb 2005 14:26:19 -0000 1.4
@@ -2005,6 +2005,11 @@
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
+ <attribute>
+ <name>selectedCategoryKeyName</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
</tag>
<tag>