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);