You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2010/08/13 18:30:42 UTC
svn commit: r985268 - in /myfaces/tobago/trunk:
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/
tobago-core/src/main/java/org/apache/myfaces/tobago/model/ tobago...
Author: lofwyr
Date: Fri Aug 13 16:30:41 2010
New Revision: 985268
URL: http://svn.apache.org/viewvc?rev=985268&view=rev
Log:
TOBAGO-377: new tree
- write expand state into the model and no longer in the state
- clean up
Removed:
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/reference/TreeCommandController.java
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/reference/tree/tree-state.xhtml
Modified:
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/TreeUtils.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/model/TreeState.java
myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Navigation.java
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TreeController.java
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/WEB-INF/faces-config.xml
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.jsp
myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.xhtml
myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeIndentRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxNodeRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeMenuNodeRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeNodeRenderer.java
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java Fri Aug 13 16:30:41 2010
@@ -18,6 +18,7 @@ package org.apache.myfaces.tobago.intern
*/
import org.apache.myfaces.tobago.compat.FacesUtils;
+import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.component.SupportsMarkup;
import org.apache.myfaces.tobago.component.TreeModelBuilder;
import org.apache.myfaces.tobago.config.Configurable;
@@ -25,6 +26,7 @@ import org.apache.myfaces.tobago.event.T
import org.apache.myfaces.tobago.event.TreeExpansionListener;
import org.apache.myfaces.tobago.model.MixedTreeModel;
import org.apache.myfaces.tobago.model.TreePath;
+import org.apache.myfaces.tobago.util.ComponentUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,7 +74,7 @@ public abstract class AbstractUITreeNode
@Override
public void encodeBegin(FacesContext context) throws IOException {
- AbstractUITree tree = findTree();
+ AbstractUITree tree = ComponentUtils.findAncestor(this, AbstractUITree.class);
MixedTreeModel mixedModel = tree.getModel();
mixedModel.onEncodeBegin();
setPath(mixedModel.getPath());
@@ -84,7 +86,7 @@ public abstract class AbstractUITreeNode
@Override
public void encodeEnd(FacesContext context) throws IOException {
super.encodeEnd(context);
- AbstractUITree tree = findTree();
+ AbstractUITree tree = ComponentUtils.findAncestor(this, AbstractUITree.class);
MixedTreeModel mixedModel = tree.getModel();
mixedModel.onEncodeEnd();
}
@@ -187,29 +189,24 @@ public abstract class AbstractUITreeNode
public String nodeStateId(FacesContext facesContext) {
String clientId = getClientId(facesContext);
- AbstractUITree tree = findTree(this);
+ AbstractUITree tree = ComponentUtils.findAncestor(this, AbstractUITree.class);
String treeId = tree.getClientId(facesContext);
return clientId.substring(treeId.length() + 1);
}
- public AbstractUITree findTree() {
- return findTree(this);
- }
-
- private AbstractUITree findTree(UIComponent component) {
- while (component != null) {
- if (component instanceof AbstractUITree) {
- return (AbstractUITree) component;
- }
- component = component.getParent();
- }
- return null;
- }
-
@Override
public void broadcast(FacesEvent event) throws AbortProcessingException {
super.broadcast(event);
if (event instanceof TreeExpansionEvent) {
+
+ boolean expanded = ((TreeExpansionEvent) event).isNewExpanded();
+
+ if (FacesUtils.hasValueBindingOrValueExpression(this, Attributes.EXPANDED)) {
+ FacesUtils.setValueOfBindingOrExpression(getFacesContext(), expanded, this, Attributes.EXPANDED);
+ } else {
+ setExpanded(expanded);
+ }
+
FacesUtils.invokeMethodBinding(getFacesContext(), getTreeExpansionListener(), event);
}
}
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/TreeUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/TreeUtils.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/TreeUtils.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/TreeUtils.java Fri Aug 13 16:30:41 2010
@@ -17,7 +17,6 @@ package org.apache.myfaces.tobago.intern
* limitations under the License.
*/
-import org.apache.myfaces.tobago.event.TreeExpansionEvent;
import org.apache.myfaces.tobago.internal.component.AbstractUITree;
import org.apache.myfaces.tobago.internal.component.AbstractUITreeNode;
import org.apache.myfaces.tobago.model.TreeState;
@@ -28,32 +27,6 @@ public final class TreeUtils {
// utils class
}
- public static boolean isExpanded(AbstractUITree tree, AbstractUITreeNode node) {
- TreeState state = (TreeState) tree.getState();
- if (state != null) {
- return state.getExpanded().contains(node.getPath());
- } else {
- return node.isExpanded();
- }
- }
-
- public static void setExpanded(AbstractUITree tree, AbstractUITreeNode node, boolean expanded) {
- boolean oldExpanded = isExpanded(tree, node);
-
- if (tree.getState() != null) {
- if (expanded) {
- ((TreeState) tree.getState()).getExpanded().add(node.getPath());
- } else {
- ((TreeState) tree.getState()).getExpanded().remove(node.getPath());
- }
- } else {
- node.setExpanded(expanded);
- }
- if (oldExpanded != expanded) {
- new TreeExpansionEvent(node, node.isExpanded(), expanded).queue();
- }
- }
-
public static boolean isSelected(AbstractUITree tree, AbstractUITreeNode node) {
TreeState state = (TreeState) tree.getState();
if (state != null) {
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/model/TreeState.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/model/TreeState.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/model/TreeState.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/model/TreeState.java Fri Aug 13 16:30:41 2010
@@ -20,27 +20,22 @@ package org.apache.myfaces.tobago.model;
import org.apache.commons.lang.StringUtils;
import javax.swing.tree.DefaultMutableTreeNode;
-import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
/**
* Manages the state on a Tree:<br />
* 1. selection: selected tree-nodes<br />
- * 2. expandState: open/close folder state<br />
* 3. marked: last used action object<br />
*/
public class TreeState {
- private Set<TreePath> expanded;
private Set<TreePath> selected;
- private Set<TreePath> marked; // XXX Wy a set and not only a TreePath?
+ private Set<TreePath> marked; // XXX Why a set and not only a TreePath?
@Deprecated
private Set<DefaultMutableTreeNode> selection;
@Deprecated
- private Set<DefaultMutableTreeNode> expandState;
- @Deprecated
private DefaultMutableTreeNode marker;
@Deprecated
private DefaultMutableTreeNode lastMarker;
@@ -51,16 +46,10 @@ public class TreeState {
public TreeState() {
selection = new HashSet<DefaultMutableTreeNode>();
- expandState = new HashSet<DefaultMutableTreeNode>();
- expanded = new HashSet<TreePath>();
selected = new HashSet<TreePath>();
marked = new HashSet<TreePath>();
}
- public Set<TreePath> getExpanded() {
- return expanded;
- }
-
public Set<TreePath> getSelected() {
return selected;
}
@@ -70,21 +59,11 @@ public class TreeState {
}
@Deprecated
- public void addExpandState(DefaultMutableTreeNode expandStateItem) {
- expandState.add(expandStateItem);
- }
-
- @Deprecated
public void addSelection(DefaultMutableTreeNode selectItem) {
selection.add(selectItem);
}
@Deprecated
- public void clearExpandState() {
- expandState.clear();
- }
-
- @Deprecated
public void clearSelection() {
selection.clear();
}
@@ -100,45 +79,6 @@ public class TreeState {
}
@Deprecated
- public void expand(DefaultMutableTreeNode node, int level) {
- if (level > 0) {
- if (!expandState.contains(node)) {
- expandState.add(node);
- }
- for (Enumeration i = node.children(); i.hasMoreElements();) {
- DefaultMutableTreeNode child = (DefaultMutableTreeNode) i.nextElement();
- expand(child, level - 1);
- }
- }
- }
-
- /**
- * Expands all parents which contains selected children.
- */
- @Deprecated
- public void expandSelection() {
- for (DefaultMutableTreeNode treeNode : selection) {
- expandTo(treeNode);
- }
- }
-
- @Deprecated
- public void expandTo(DefaultMutableTreeNode node) {
- node = (DefaultMutableTreeNode) node.getParent();
- while (node != null) {
- if (!expandState.contains(node)) {
- expandState.add(node);
- }
- node = (DefaultMutableTreeNode) node.getParent();
- }
- }
-
- @Deprecated
- public boolean isExpanded(DefaultMutableTreeNode node) {
- return expandState.contains(node);
- }
-
- @Deprecated
public boolean isMarked(DefaultMutableTreeNode node) {
return node != null && node.equals(marker);
}
@@ -149,16 +89,6 @@ public class TreeState {
}
@Deprecated
- public Set<DefaultMutableTreeNode> getExpandState() {
- return expandState;
- }
-
- @Deprecated
- public void setExpandState(Set<DefaultMutableTreeNode> expandState) {
- this.expandState = expandState;
- }
-
- @Deprecated
public String getLastCommand() {
return lastCommand;
}
Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/util/ComponentUtils.java Fri Aug 13 16:30:41 2010
@@ -200,7 +200,7 @@ public class ComponentUtils {
public static <T> T findAncestor(UIComponent component, Class<T> type) {
while (component != null) {
- if (component.getClass().equals(type)) {
+ if (type.isAssignableFrom(component.getClass())) {
return (T) component;
}
component = component.getParent();
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Navigation.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Navigation.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Navigation.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Navigation.java Fri Aug 13 16:30:41 2010
@@ -18,11 +18,11 @@ package org.apache.myfaces.tobago.exampl
*/
import org.apache.myfaces.tobago.context.ResourceManagerUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.myfaces.tobago.example.demo.jsp.JspFormatter;
import org.apache.myfaces.tobago.model.TreePath;
import org.apache.myfaces.tobago.model.TreeState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
@@ -34,10 +34,6 @@ import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Enumeration;
-/*
- * Date: 09.01.2007
- * Time: 10:41:49
- */
public class Navigation {
private static final Logger LOG = LoggerFactory.getLogger(Navigation.class);
@@ -95,10 +91,11 @@ public class Navigation {
reference.add(new DefaultMutableTreeNode(new Node("reference_upload", "reference/upload")));
tree.add(reference);
+ ((Node) tree.getUserObject()).setExpanded(true);
+ ((Node) overview.getUserObject()).setExpanded(true);
+ ((Node) bestPractice.getUserObject()).setExpanded(true);
+
state = new TreeState();
- state.getExpanded().add(new TreePath(0));
- state.getExpanded().add(new TreePath(0, 0));
- state.getExpanded().add(new TreePath(0, 1));
state.getMarked().add(new TreePath(0, 0));
}
@@ -194,6 +191,7 @@ public class Navigation {
private String title;
private String id;
private String outcome;
+ private boolean expanded;
public Node(String key, String outcome) {
@@ -233,5 +231,13 @@ public class Navigation {
public void setOutcome(String outcome) {
this.outcome = outcome;
}
+
+ public boolean isExpanded() {
+ return expanded;
+ }
+
+ public void setExpanded(boolean expanded) {
+ this.expanded = expanded;
+ }
}
}
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TobagoDemoController.java Fri Aug 13 16:30:41 2010
@@ -17,14 +17,12 @@ package org.apache.myfaces.tobago.exampl
* limitations under the License.
*/
-import org.apache.myfaces.tobago.context.ResourceManagerUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.component.CreateComponentUtils;
import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.component.UIInput;
import org.apache.myfaces.tobago.component.UIToolBar;
+import org.apache.myfaces.tobago.context.ResourceManagerUtils;
import org.apache.myfaces.tobago.event.TabChangeListener;
import org.apache.myfaces.tobago.example.data.CategoryTree;
import org.apache.myfaces.tobago.example.data.Solar;
@@ -32,6 +30,8 @@ import org.apache.myfaces.tobago.example
import org.apache.myfaces.tobago.model.SheetState;
import org.apache.myfaces.tobago.model.TreeState;
import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIColumn;
@@ -124,16 +124,16 @@ public class TobagoDemoController {
public TobagoDemoController() {
String[] salutationKeys = {
- "salutation_unknown",
- "salutation_mr",
- "salutation_mrs",
- "salutation_family"
+ "salutation_unknown",
+ "salutation_mr",
+ "salutation_mrs",
+ "salutation_family"
};
salutationItems = getSelectItems(salutationKeys, "demo");
this.salutation = new String[]{"", "", "", ""};
- bool = new Boolean[] {true, false, true, false, true, false, true, false, true, false};
+ bool = new Boolean[]{true, false, true, false, true, false, true, false, true, false};
boolTest = Boolean.TRUE;
text = new String[11];
@@ -156,10 +156,6 @@ public class TobagoDemoController {
solarArrayColumnLayout = "3*; 3*; 3*";
tree = CategoryTree.createSample();
- treeState = new TreeState();
- treeState.addExpandState(tree);
- treeState.addSelection((DefaultMutableTreeNode) tree.getChildAt(2).getChildAt(2));
- treeState.setMarker((DefaultMutableTreeNode) tree.getChildAt(1));
String[] values = {"none", "single", "singleLeafOnly", "multi", "multiLeafOnly"};
selectionItems = getSelectItems(values, "demo");
selectionType = (String) selectionItems[0].getValue();
@@ -401,14 +397,6 @@ public class TobagoDemoController {
this.tree = tree;
}
- public TreeState getTreeState() {
- return treeState;
- }
-
- public void setTreeState(TreeState treeState) {
- this.treeState = treeState;
- }
-
public boolean isShowJunctions() {
return showJunctions;
}
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TreeController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TreeController.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TreeController.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/TreeController.java Fri Aug 13 16:30:41 2010
@@ -17,9 +17,9 @@ package org.apache.myfaces.tobago.exampl
* limitations under the License.
*/
+import org.apache.myfaces.tobago.model.TreeState;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.myfaces.tobago.model.TreeState;
import javax.faces.event.ActionEvent;
import javax.swing.tree.DefaultMutableTreeNode;
@@ -68,12 +68,11 @@ public class TreeController {
bulk.add(new DefaultMutableTreeNode(new Node("1.6." + (i + 1) + " Some Node")));
}
tree.add(bulk);
+ ((Node) tree.getUserObject()).setExpanded(true);
+ ((Node) temp.getUserObject()).setExpanded(true);
// state
-
state = new TreeState();
- state.addExpandState(tree);
- state.addExpandState(temp);
state.addSelection(temp2);
state.setMarker(music);
}
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/WEB-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/WEB-INF/faces-config.xml?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/WEB-INF/faces-config.xml (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/WEB-INF/faces-config.xml Fri Aug 13 16:30:41 2010
@@ -358,12 +358,6 @@
</managed-bean>
<managed-bean>
- <managed-bean-name>treeCommandController</managed-bean-name>
- <managed-bean-class>org.apache.myfaces.tobago.example.reference.TreeCommandController</managed-bean-class>
- <managed-bean-scope>session</managed-bean-scope>
- </managed-bean>
-
- <managed-bean>
<managed-bean-name>partialReloadController</managed-bean-name>
<managed-bean-class>org.apache.myfaces.tobago.example.reference.PartialReloadController</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.jsp?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.jsp (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.jsp Fri Aug 13 16:30:41 2010
@@ -25,7 +25,7 @@
<tc:treeMenu id="nav" state="#{navigation.state}">
<tc:treeData value="#{navigation.tree}" var="node" id="data">
- <tc:treeNode>
+ <tc:treeNode expanded="#{node.userObject.expanded}">
<tc:treeCommand
label="#{node.userObject.title}"
action="#{node.userObject.action}"
Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.xhtml?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.xhtml (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/navigation.xhtml Fri Aug 13 16:30:41 2010
@@ -27,7 +27,7 @@
<tc:treeMenu id="nav" state="#{navigation.state}">
<tc:treeData value="#{navigation.tree}" var="node" id="data">
- <tc:treeNode>
+ <tc:treeNode expanded="#{node.userObject.expanded}">
<tc:treeCommand
label="#{node.userObject.title}"
action="#{node.userObject.action}"
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeIndentRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeIndentRenderer.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeIndentRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeIndentRenderer.java Fri Aug 13 16:30:41 2010
@@ -23,7 +23,6 @@ import org.apache.myfaces.tobago.compone
import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.context.ResourceManagerUtils;
import org.apache.myfaces.tobago.internal.component.AbstractUITree;
-import org.apache.myfaces.tobago.internal.util.TreeUtils;
import org.apache.myfaces.tobago.renderkit.LayoutComponentRendererBase;
import org.apache.myfaces.tobago.renderkit.css.Classes;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
@@ -44,7 +43,7 @@ public class TreeIndentRenderer extends
final UITreeIndent indent = (UITreeIndent) component;
final UITreeNode node = ComponentUtils.findAncestor(indent, UITreeNode.class);
- final AbstractUITree tree = node.findTree();
+ final AbstractUITree tree = ComponentUtils.findAncestor(indent, AbstractUITree.class);
final boolean folder = node.isFolder();
final int level = node.getLevel();
@@ -54,7 +53,7 @@ public class TreeIndentRenderer extends
final boolean showRoot = ((UITree) tree).isShowRoot(); //XXX
final boolean showJunctions = indent.isShowJunctions();
final boolean showRootJunction = ((UITree) tree).isShowRootJunction(); //XXX
- final boolean expanded = TreeUtils.isExpanded(tree, node) || !showRoot && level == 0;
+ final boolean expanded = node.isExpanded() || !showRoot && level == 0;
TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxNodeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxNodeRenderer.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxNodeRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeListboxNodeRenderer.java Fri Aug 13 16:30:41 2010
@@ -20,12 +20,11 @@ package org.apache.myfaces.tobago.render
import org.apache.commons.lang.StringUtils;
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.component.UITreeLabel;
-import org.apache.myfaces.tobago.component.UITreeListbox;
import org.apache.myfaces.tobago.component.UITreeNode;
import org.apache.myfaces.tobago.context.Markup;
+import org.apache.myfaces.tobago.event.TreeExpansionEvent;
import org.apache.myfaces.tobago.internal.component.AbstractUITree;
import org.apache.myfaces.tobago.internal.context.ResponseWriterDivider;
-import org.apache.myfaces.tobago.internal.util.TreeUtils;
import org.apache.myfaces.tobago.layout.Display;
import org.apache.myfaces.tobago.layout.Measure;
import org.apache.myfaces.tobago.model.TreeSelectable;
@@ -63,7 +62,8 @@ public class TreeListboxNodeRenderer ext
return;
}
- AbstractUITree tree = node.findTree();
+ AbstractUITree tree = ComponentUtils.findAncestor(node, AbstractUITree.class);
+ ;
String treeId = tree.getClientId(facesContext);
String nodeStateId = node.nodeStateId(facesContext);
Map requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
@@ -71,7 +71,9 @@ public class TreeListboxNodeRenderer ext
// expand state
boolean expanded = Boolean.parseBoolean((String) requestParameterMap.get(id + "-expanded"));
- TreeUtils.setExpanded(tree, node, expanded);
+ if (node.isExpanded() != expanded) {
+ new TreeExpansionEvent(node, node.isExpanded(), expanded).queue();
+ }
// select
String searchString;
@@ -96,7 +98,7 @@ public class TreeListboxNodeRenderer ext
@Override
public void prepareRender(FacesContext facesContext, UIComponent component) throws IOException {
- super.prepareRender(facesContext, component);
+ super.prepareRender(facesContext, component);
final UITreeNode node = (UITreeNode) component;
if (node.isMarked()) {
@@ -107,13 +109,13 @@ public class TreeListboxNodeRenderer ext
@Override
public void encodeBegin(FacesContext facesContext, UIComponent component) throws IOException {
UITreeNode node = (UITreeNode) component;
- AbstractUITree tree = node.findTree();
+ AbstractUITree tree = ComponentUtils.findAncestor(node, AbstractUITree.class);
TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
boolean folder = node.isFolder();
int level = node.getLevel();
String id = node.getClientId(facesContext);
- boolean expanded = TreeUtils.isExpanded(tree, node);
+ boolean expanded = node.isExpanded();
if (level > 0) { // root will not rendered as an option
writer.startElement(HtmlElements.OPTION, null);
@@ -129,13 +131,13 @@ public class TreeListboxNodeRenderer ext
}
if (folder) {
- boolean siblingMode = "siblingLeafOnly".equals(((UITreeListbox) tree).getAttributes().get(Attributes.SELECTABLE));
+ boolean siblingMode = "siblingLeafOnly".equals(tree.getAttributes().get(Attributes.SELECTABLE));
ResponseWriterDivider divider = ResponseWriterDivider.getInstance(facesContext, TreeListboxRenderer.DIVIDER);
boolean alreadyExists = divider.activateBranch(facesContext);
writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
if (!alreadyExists) {
writer.startElement(HtmlElements.DIV, null);
- writer.writeClassAttribute(Classes.create((UITreeListbox) tree, "level"));
+ writer.writeClassAttribute(Classes.create(tree, "level"));
Style levelStyle = new Style();
levelStyle.setLeft(Measure.valueOf(level * 160)); // xxx 160 should be configurable
writer.writeStyleAttribute(levelStyle);
@@ -145,14 +147,14 @@ public class TreeListboxNodeRenderer ext
writer.startElement(HtmlElements.SELECT, null);
writer.writeAttribute(HtmlAttributes.DISABLED, true);
writer.writeAttribute(HtmlAttributes.SIZE, 2); // must be > 1, but the size comes from the layout
- writer.writeClassAttribute(Classes.create((UITreeListbox) tree, "select"));
+ writer.writeClassAttribute(Classes.create(tree, "select"));
writer.endElement(HtmlElements.SELECT);
}
}
writer.startElement(HtmlElements.SELECT, node);
writer.writeIdAttribute(id + ComponentUtils.SUB_SEPARATOR + "select");
- writer.writeClassAttribute(Classes.create((UITreeListbox) tree, "select"));
+ writer.writeClassAttribute(Classes.create(tree, "select"));
if (!expanded) {
Style selectStyle = new Style();
selectStyle.setDisplay(Display.NONE);
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeMenuNodeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeMenuNodeRenderer.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeMenuNodeRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeMenuNodeRenderer.java Fri Aug 13 16:30:41 2010
@@ -22,9 +22,8 @@ import org.apache.myfaces.tobago.compone
import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.context.ResourceManagerUtils;
import org.apache.myfaces.tobago.context.UserAgent;
+import org.apache.myfaces.tobago.event.TreeExpansionEvent;
import org.apache.myfaces.tobago.internal.component.AbstractUITree;
-import org.apache.myfaces.tobago.internal.component.AbstractUITreeNode;
-import org.apache.myfaces.tobago.internal.util.TreeUtils;
import org.apache.myfaces.tobago.layout.Display;
import org.apache.myfaces.tobago.renderkit.LayoutComponentRendererBase;
import org.apache.myfaces.tobago.renderkit.css.Classes;
@@ -52,7 +51,7 @@ public class TreeMenuNodeRenderer extend
@Override
public void decode(FacesContext facesContext, UIComponent component) {
- AbstractUITreeNode node = (AbstractUITreeNode) component;
+ UITreeNode node = (UITreeNode) component;
super.decode(facesContext, node);
@@ -60,7 +59,7 @@ public class TreeMenuNodeRenderer extend
return;
}
- AbstractUITree tree = node.findTree();
+ UITreeMenu tree = ComponentUtils.findAncestor(node, UITreeMenu.class);
String treeId = tree.getClientId(facesContext);
String nodeStateId = node.nodeStateId(facesContext);
Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
@@ -68,7 +67,9 @@ public class TreeMenuNodeRenderer extend
// expand state
boolean expanded = Boolean.parseBoolean(requestParameterMap.get(id + ComponentUtils.SUB_SEPARATOR + "expanded"));
- TreeUtils.setExpanded(tree, node, expanded);
+ if (node.isExpanded() != expanded) {
+ new TreeExpansionEvent(node, node.isExpanded(), expanded).queue();
+ }
// marker
String marked = requestParameterMap.get(treeId + AbstractUITree.MARKED);
@@ -101,7 +102,7 @@ public class TreeMenuNodeRenderer extend
final String id = node.getClientId(facesContext);
final int level = node.getLevel();
final boolean root = level == 0;
- final boolean expanded = TreeUtils.isExpanded(tree, node) || level == 0;
+ final boolean expanded = node.isExpanded() || level == 0;
final boolean showRoot = tree.isShowRoot();
final boolean ie6
= VariableResolverUtils.resolveClientProperties(facesContext).getUserAgent().equals(UserAgent.MSIE_6_0);
@@ -148,7 +149,7 @@ public class TreeMenuNodeRenderer extend
}
private void encodeExpandedHidden(
- TobagoResponseWriter writer, AbstractUITreeNode node, String clientId, boolean expanded) throws IOException {
+ TobagoResponseWriter writer, UITreeNode node, String clientId, boolean expanded) throws IOException {
writer.startElement(HtmlElements.INPUT, node);
writer.writeAttribute(HtmlAttributes.TYPE, "hidden", false);
writer.writeClassAttribute(Classes.create(node, "expanded", Markup.NULL));
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeNodeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeNodeRenderer.java?rev=985268&r1=985267&r2=985268&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeNodeRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/TreeNodeRenderer.java Fri Aug 13 16:30:41 2010
@@ -23,11 +23,12 @@ import org.apache.myfaces.tobago.compone
import org.apache.myfaces.tobago.component.UITreeNode;
import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.context.ResourceUtils;
+import org.apache.myfaces.tobago.event.TreeExpansionEvent;
import org.apache.myfaces.tobago.internal.component.AbstractUITree;
import org.apache.myfaces.tobago.internal.component.AbstractUITreeNode;
-import org.apache.myfaces.tobago.internal.util.TreeUtils;
+import org.apache.myfaces.tobago.layout.Display;
import org.apache.myfaces.tobago.model.TreeSelectable;
-import org.apache.myfaces.tobago.renderkit.CommandRendererBase;
+import org.apache.myfaces.tobago.renderkit.LayoutComponentRendererBase;
import org.apache.myfaces.tobago.renderkit.css.Classes;
import org.apache.myfaces.tobago.renderkit.css.Style;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
@@ -46,7 +47,7 @@ import java.io.IOException;
import java.util.List;
import java.util.Map;
-public class TreeNodeRenderer extends CommandRendererBase {
+public class TreeNodeRenderer extends LayoutComponentRendererBase {
private static final Logger LOG = LoggerFactory.getLogger(TreeNodeRenderer.class);
@@ -68,16 +69,17 @@ public class TreeNodeRenderer extends Co
return;
}
- AbstractUITree tree = node.findTree();
+ AbstractUITree tree = ComponentUtils.findAncestor(node, AbstractUITree.class);
String treeId = tree.getClientId(facesContext);
String nodeStateId = node.nodeStateId(facesContext);
- Map requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
+ Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
String id = node.getClientId(facesContext);
// expand state
- boolean expanded
- = Boolean.parseBoolean((String) requestParameterMap.get(id + ComponentUtils.SUB_SEPARATOR + "expanded"));
- TreeUtils.setExpanded(tree, node, expanded);
+ boolean expanded = Boolean.parseBoolean(requestParameterMap.get(id + ComponentUtils.SUB_SEPARATOR + "expanded"));
+ if (node.isExpanded() != expanded) {
+ new TreeExpansionEvent(node, node.isExpanded(), expanded).queue();
+ }
// select
String searchString;
@@ -113,19 +115,17 @@ public class TreeNodeRenderer extends Co
@Override
public void encodeBegin(FacesContext facesContext, UIComponent component) throws IOException {
UITreeNode node = (UITreeNode) component;
- AbstractUITree tree = node.findTree();
+ AbstractUITree tree = ComponentUtils.findAncestor(node, AbstractUITree.class);
- final String treeId = tree.getClientId(facesContext);
final boolean folder = node.isFolder();
final boolean marked = node.isMarked();
final String id = node.getClientId(facesContext);
final int level = node.getLevel();
final boolean root = level == 0;
- final boolean hasNextSibling = node.isHasNextSibling();
final List<Boolean> junctions = node.getJunctions();
final boolean showRoot = ((UITree) tree).isShowRoot();
// if the root is hidden, the root node must be expanded (otherwise you will see nothing)
- final boolean expanded = TreeUtils.isExpanded(tree, node) || !showRoot && root;
+ final boolean expanded = node.isExpanded() || !showRoot && root;
if (!showRoot && junctions.size() > 0) {
junctions.remove(0);
@@ -171,10 +171,11 @@ public class TreeNodeRenderer extends Co
}
if (folder) {
- String contentStyle = "display: " + (expanded ? "block" : "none") + ";";
writer.startElement(HtmlElements.DIV, null);
writer.writeIdAttribute(id + ComponentUtils.SUB_SEPARATOR + "content");
- writer.writeStyleAttribute(contentStyle);
+ Style style = new Style();
+ style.setDisplay(expanded ? Display.BLOCK : Display.NONE);
+ writer.writeStyleAttribute(style);
}
}
@@ -191,12 +192,8 @@ public class TreeNodeRenderer extends Co
@Override
public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException {
UITreeNode node = (UITreeNode) component;
-
- boolean folder = node.isFolder();
- String id = node.getClientId(facesContext);
-
TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
-
+ boolean folder = node.isFolder();
if (folder) {
writer.endElement(HtmlElements.DIV);
}