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 2015/06/05 11:21:49 UTC
svn commit: r1683686 - in
/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag:
TreeListboxNodeRenderer.java TreeListboxRenderer.java
Author: lofwyr
Date: Fri Jun 5 09:21:49 2015
New Revision: 1683686
URL: http://svn.apache.org/r1683686
Log:
TOBAGO-1469: tc:treeListbox doesn't show the current selection state
Modified:
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxNodeRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxRenderer.java
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxNodeRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxNodeRenderer.java?rev=1683686&r1=1683685&r2=1683686&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxNodeRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxNodeRenderer.java Fri Jun 5 09:21:49 2015
@@ -21,9 +21,7 @@ package org.apache.myfaces.tobago.render
import org.apache.myfaces.tobago.component.UITreeNode;
import org.apache.myfaces.tobago.component.UITreeSelect;
-import org.apache.myfaces.tobago.context.Markup;
-import org.apache.myfaces.tobago.event.TreeExpansionEvent;
-import org.apache.myfaces.tobago.event.TreeMarkedEvent;
+import org.apache.myfaces.tobago.internal.component.AbstractUIData;
import org.apache.myfaces.tobago.internal.component.AbstractUITree;
import org.apache.myfaces.tobago.model.Selectable;
import org.apache.myfaces.tobago.renderkit.CommandRendererBase;
@@ -36,7 +34,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.faces.component.UIComponent;
-import javax.faces.component.UINamingContainer;
import javax.faces.context.FacesContext;
import java.io.IOException;
import java.util.Map;
@@ -45,8 +42,6 @@ public class TreeListboxNodeRenderer ext
private static final Logger LOG = LoggerFactory.getLogger(TreeListboxNodeRenderer.class);
- // TODO cleanup: there might be some stuff to remove after tree refactoring
-
@Override
public void decode(final FacesContext facesContext, final UIComponent component) {
@@ -59,19 +54,25 @@ public class TreeListboxNodeRenderer ext
}
final AbstractUITree tree = ComponentUtils.findAncestor(node, AbstractUITree.class);
+ if (tree == null) {
+ LOG.warn("No AbstractUITree found as ancestor.");
+ return;
+ }
final String treeId = tree.getClientId(facesContext);
- final String nodeStateId = node.nodeStateId(facesContext);
final Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
final String id = node.getClientId(facesContext);
final boolean folder = node.isFolder();
// expand state
+/* TODO
if (folder) {
final boolean expanded = Boolean.parseBoolean(requestParameterMap.get(id + "-expanded"));
- if (node.isExpanded() != expanded) {
- new TreeExpansionEvent(node, node.isExpanded(), expanded).queue();
+ final boolean oldExpanded = node.isExpanded(); // XXX this no longer works, get state from state object
+ if (oldExpanded != expanded) {
+ new TreeExpansionEvent(node, oldExpanded, expanded).queue();
}
}
+*/
// select
if (tree.getSelectableAsEnum() != Selectable.NONE) { // selection
@@ -82,45 +83,28 @@ public class TreeListboxNodeRenderer ext
treeSelect.setSubmittedValue(selected.contains(searchString));
}
}
-
- // marked
- final String marked = requestParameterMap.get(treeId + ComponentUtils.SUB_SEPARATOR + AbstractUITree.SUFFIX_MARKED);
- if (marked != null) {
- final String searchString = treeId + UINamingContainer.getSeparatorChar(facesContext) + nodeStateId;
- final boolean markedValue = marked.equals(searchString);
- if (node.isMarked() != markedValue) {
- new TreeMarkedEvent(node, node.isMarked(), markedValue).queue();
- }
- } else {
- LOG.warn("This log message is help clarifying the occurrence of this else case.");
- }
- }
-
- @Override
- public void prepareRender(final FacesContext facesContext, final UIComponent component) throws IOException {
- super.prepareRender(facesContext, component);
-
- final UITreeNode node = (UITreeNode) component;
- if (node.isMarked()) {
- node.setMarkup(Markup.MARKED.add(node.getMarkup()));
- }
}
@Override
public void encodeBegin(final FacesContext facesContext, final UIComponent component) throws IOException {
final UITreeNode node = (UITreeNode) component;
- final boolean folder = node.isFolder();
+ final UITreeSelect select = ComponentUtils.findDescendant(node, UITreeSelect.class);
+ final AbstractUIData data = ComponentUtils.findAncestor(node, AbstractUIData.class);
final String id = node.getClientId(facesContext);
- final boolean expanded = folder && node.isExpanded();
+
+ final boolean selected;
+ if (select != null && data != null && select.isValueStoredInState()) {
+ selected = data.getSelectedState().isSelected(node.getPath());
+ } else {
+ selected = "true".equals(getCurrentValue(facesContext, select));
+ }
final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
writer.startElement(HtmlElements.OPTION, null);
- // todo: define where to store the selection of a tree, node.getValue() seems not to be a god place.
- // writer.writeAttribute(HtmlAttributes.VALUE, node.getValue().toString(), true); // XXX converter?
writer.writeAttribute(HtmlAttributes.VALUE, id, true);
writer.writeIdAttribute(id);
- writer.writeAttribute(HtmlAttributes.SELECTED, expanded);
+ writer.writeAttribute(HtmlAttributes.SELECTED, selected);
}
@Override
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxRenderer.java?rev=1683686&r1=1683685&r2=1683686&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TreeListboxRenderer.java Fri Jun 5 09:21:49 2015
@@ -94,13 +94,6 @@ public class TreeListboxRenderer extends
writer.writeAttribute(HtmlAttributes.VALUE, ";", false);
writer.endElement(HtmlElements.INPUT);
- writer.startElement(HtmlElements.INPUT, tree);
- writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.HIDDEN, false);
- writer.writeNameAttribute(clientId + ComponentUtils.SUB_SEPARATOR + AbstractUITree.SUFFIX_MARKED);
- writer.writeIdAttribute(clientId + ComponentUtils.SUB_SEPARATOR + AbstractUITree.SUFFIX_MARKED);
- writer.writeAttribute(HtmlAttributes.VALUE, "", false);
- writer.endElement(HtmlElements.INPUT);
-
if (tree.getSelectableAsEnum().isSupportedByTreeListbox()) {
writer.startElement(HtmlElements.INPUT, tree);
writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.HIDDEN, false);