cadimmek commented on code in PR #6749:
URL: https://github.com/apache/myfaces-tobago/pull/6749#discussion_r2390060629


##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ColumnSelectorRenderer.java:
##########
@@ -19,8 +19,53 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIColumnSelector;
+import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
+import org.apache.myfaces.tobago.internal.util.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class ColumnSelectorRenderer<T extends AbstractUIColumnSelector> 
extends RendererBase<T> {
+
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String SUFFIX_SELECTED = ComponentUtils.SUB_SEPARATOR + 
"selected";
+
+  @Override
+  public void decodeInternal(final FacesContext facesContext, final T 
component) {
+    super.decodeInternal(facesContext, component);
+
+    final AbstractUISheet sheet = component.getSheet();
+    decodeSelectedRows(facesContext, sheet);
+  }
+
+  static void decodeSelectedRows(final FacesContext facesContext, final 
AbstractUISheet sheet) {
+    final String sheetId = sheet.getClientId(facesContext);
+    final Map<String, String> requestParameterMap = 
facesContext.getExternalContext().getRequestParameterMap();
+    String key = sheetId + SUFFIX_SELECTED;
+    if (requestParameterMap.containsKey(key)) {
+      final String selected = requestParameterMap.get(key);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("selected = " + selected);

Review Comment:
   ```suggestion
           LOG.debug("selected = {}", selected);
   ```



##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIColumnSelector.java:
##########
@@ -33,7 +48,29 @@ public Measure getWidth() {
   }
 */
 
+  @Override
+  public void processUpdates(final FacesContext facesContext) {
+    final AbstractUISheet sheet = getSheet();
+    final SheetState sheetState = sheet.getSheetState(facesContext);
+    processSelectedRows(sheet, sheetState);
+  }
+
+  public static void processSelectedRows(final AbstractUISheet sheet, final 
SheetState sheetState) {
+    if (sheetState != null) {
+      final List<Integer> list = (List<Integer>) 
ComponentUtils.getAttribute(sheet, Attributes.selectedListString);
+      sheetState.setSelectedRows(list != null ? list : 
Collections.emptyList());
+      ComponentUtils.removeAttribute(sheet, Attributes.selectedListString);
+    }
+  }
+
   public abstract boolean isDisabled();
 
   public abstract Selectable getSelectable();
+
+  public AbstractUISheet getSheet() {
+    if (abstractUISheet == null) {

Review Comment:
   What if the day was accidentally positioned incorrectly? Wouldn't an 
exception with a meaningful error message be better?



##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ColumnSelectorRenderer.java:
##########
@@ -19,8 +19,53 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIColumnSelector;
+import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
+import org.apache.myfaces.tobago.internal.util.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class ColumnSelectorRenderer<T extends AbstractUIColumnSelector> 
extends RendererBase<T> {
+
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String SUFFIX_SELECTED = ComponentUtils.SUB_SEPARATOR + 
"selected";
+
+  @Override
+  public void decodeInternal(final FacesContext facesContext, final T 
component) {
+    super.decodeInternal(facesContext, component);
+
+    final AbstractUISheet sheet = component.getSheet();
+    decodeSelectedRows(facesContext, sheet);
+  }
+
+  static void decodeSelectedRows(final FacesContext facesContext, final 
AbstractUISheet sheet) {
+    final String sheetId = sheet.getClientId(facesContext);
+    final Map<String, String> requestParameterMap = 
facesContext.getExternalContext().getRequestParameterMap();
+    String key = sheetId + SUFFIX_SELECTED;
+    if (requestParameterMap.containsKey(key)) {
+      final String selected = requestParameterMap.get(key);
+      if (LOG.isDebugEnabled()) {

Review Comment:
   ```suggestion
   ```



##########
tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ColumnSelectorRenderer.java:
##########
@@ -19,8 +19,53 @@
 
 package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIColumnSelector;
+import org.apache.myfaces.tobago.internal.component.AbstractUISheet;
+import org.apache.myfaces.tobago.internal.util.JsonUtils;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class ColumnSelectorRenderer<T extends AbstractUIColumnSelector> 
extends RendererBase<T> {
+
+  private static final Logger LOG = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+  public static final String SUFFIX_SELECTED = ComponentUtils.SUB_SEPARATOR + 
"selected";
+
+  @Override
+  public void decodeInternal(final FacesContext facesContext, final T 
component) {
+    super.decodeInternal(facesContext, component);
+
+    final AbstractUISheet sheet = component.getSheet();
+    decodeSelectedRows(facesContext, sheet);
+  }
+
+  static void decodeSelectedRows(final FacesContext facesContext, final 
AbstractUISheet sheet) {
+    final String sheetId = sheet.getClientId(facesContext);
+    final Map<String, String> requestParameterMap = 
facesContext.getExternalContext().getRequestParameterMap();
+    String key = sheetId + SUFFIX_SELECTED;
+    if (requestParameterMap.containsKey(key)) {
+      final String selected = requestParameterMap.get(key);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("selected = " + selected);
+      }

Review Comment:
   ```suggestion
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to