You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2019/12/02 09:29:44 UTC

[myfaces-tobago] 07/19: Tobago-1999: fix selectManyBox

This is an automated email from the ASF dual-hosted git repository.

weber pushed a commit to branch TOBAGO-1999_Select2
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit f11baf9ea75ad2c72e08f07cf980df0ff568cf36
Author: Volker Weber <v....@inexso.de>
AuthorDate: Wed Aug 21 18:07:47 2019 +0200

    Tobago-1999: fix selectManyBox
---
 .../component/AbstractUISelectManyBox.java         | 24 +++++++++++++++++-----
 .../component/AbstractUISelectOneChoice.java       | 10 ++++-----
 .../standard/tag/SelectManyBoxRenderer.java        |  7 ++++---
 3 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java
index 6560cf8..51f928a 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java
@@ -1,9 +1,23 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by Fernflower decompiler)
+//
+
 package org.apache.myfaces.tobago.internal.component;
 
 import org.apache.myfaces.tobago.internal.component.AbstractUISelectOneChoice.Select2Keys;
 
+import javax.faces.context.FacesContext;
+
 public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
 
+  @Override
+  protected void validateValue(FacesContext context, Object convertedValue) {
+    if (!isAllowCustom()) {
+      super.validateValue(context, convertedValue);
+    }
+  }
+
   public boolean isAllowClear() {
     Boolean allowClear = (Boolean) getStateHelper().eval(Select2Keys.allowClear);
     if (allowClear != null) {
@@ -15,7 +29,7 @@ public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
     return getStateHelper().eval(Select2Keys.allowClear) != null;
   }
 
-  public void setAllowClear(Boolean allowClear) {
+  public void setAllowClear(boolean allowClear) {
     getStateHelper().put(Select2Keys.allowClear, allowClear);
   }
 
@@ -31,7 +45,7 @@ public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
     return getStateHelper().eval(Select2Keys.allowCustom) != null;
   }
 
-  public void setAllowCustom(Boolean allowCustom) {
+  public void setAllowCustom(boolean allowCustom) {
     getStateHelper().put(Select2Keys.allowCustom, allowCustom);
   }
 
@@ -46,7 +60,7 @@ public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
     return getStateHelper().eval(Select2Keys.maximumInputLength) != null;
   }
 
-  public void setMaximumInputLength(Integer minimumInputLength) {
+  public void setMaximumInputLength(int minimumInputLength) {
     getStateHelper().put(Select2Keys.maximumInputLength, minimumInputLength);
   }
 
@@ -61,7 +75,7 @@ public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
     return getStateHelper().eval(Select2Keys.minimumInputLength) != null;
   }
 
-  public void setMinimumInputLength(Integer minimumInputLength) {
+  public void setMinimumInputLength(int minimumInputLength) {
     getStateHelper().put(Select2Keys.minimumInputLength, minimumInputLength);
   }
 
@@ -76,7 +90,7 @@ public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
     return getStateHelper().eval(Select2Keys.maximumSelectionLength) != null;
   }
 
-  public void setMaximumSelectionLength(Integer maximumSelectionLength) {
+  public void setMaximumSelectionLength(int maximumSelectionLength) {
     getStateHelper().put(Select2Keys.maximumSelectionLength, maximumSelectionLength);
   }
 
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java
index e032037..d29ca83 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java
@@ -48,7 +48,7 @@ public abstract class AbstractUISelectOneChoice extends AbstractUISelectOneBase
     return getStateHelper().eval(Select2Keys.allowClear) != null;
   }
 
-  public void setAllowClear(Boolean allowClear) {
+  public void setAllowClear(boolean allowClear) {
     getStateHelper().put(Select2Keys.allowClear, allowClear);
   }
 
@@ -64,7 +64,7 @@ public abstract class AbstractUISelectOneChoice extends AbstractUISelectOneBase
     return getStateHelper().eval(Select2Keys.allowCustom) != null;
   }
 
-  public void setAllowCustom(Boolean allowCustom) {
+  public void setAllowCustom(boolean allowCustom) {
     getStateHelper().put(Select2Keys.allowCustom, allowCustom);
   }
 
@@ -79,7 +79,7 @@ public abstract class AbstractUISelectOneChoice extends AbstractUISelectOneBase
     return getStateHelper().eval(Select2Keys.maximumInputLength) != null;
   }
 
-  public void setMaximumInputLength(Integer minimumInputLength) {
+  public void setMaximumInputLength(int minimumInputLength) {
     getStateHelper().put(Select2Keys.maximumInputLength, minimumInputLength);
   }
 
@@ -94,7 +94,7 @@ public abstract class AbstractUISelectOneChoice extends AbstractUISelectOneBase
     return getStateHelper().eval(Select2Keys.minimumInputLength) != null;
   }
 
-  public void setMinimumInputLength(Integer minimumInputLength) {
+  public void setMinimumInputLength(int minimumInputLength) {
     getStateHelper().put(Select2Keys.minimumInputLength, minimumInputLength);
   }
 
@@ -109,7 +109,7 @@ public abstract class AbstractUISelectOneChoice extends AbstractUISelectOneBase
     return getStateHelper().eval(Select2Keys.maximumSelectionLength) != null;
   }
 
-  public void setMaximumSelectionLength(Integer maximumSelectionLength) {
+  public void setMaximumSelectionLength(int maximumSelectionLength) {
     getStateHelper().put(Select2Keys.maximumSelectionLength, maximumSelectionLength);
   }
 
diff --git a/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SelectManyBoxRenderer.java b/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SelectManyBoxRenderer.java
index ddb1950..6ec5699 100644
--- a/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SelectManyBoxRenderer.java
+++ b/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SelectManyBoxRenderer.java
@@ -27,6 +27,7 @@ import org.apache.myfaces.tobago.renderkit.css.Classes;
 import org.apache.myfaces.tobago.renderkit.css.Style;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
+import org.apache.myfaces.tobago.renderkit.html.Select2Options;
 import org.apache.myfaces.tobago.renderkit.html.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.renderkit.util.SelectItemUtils;
 import org.apache.myfaces.tobago.util.ComponentUtils;
@@ -61,11 +62,11 @@ public class SelectManyBoxRenderer extends SelectManyRendererBase {
     final String id = select.getClientId(facesContext);
     final Iterable<SelectItem> items = SelectItemUtils.getItemIterator(facesContext, select);
     final boolean readonly = select.isReadonly();
-    final boolean disabled = !items.iterator().hasNext() || select.isDisabled() || readonly;
+    final boolean disabled = (!items.iterator().hasNext() && !select.isAllowCustom())
+        || select.isDisabled() || readonly;
     final Style style = new Style(facesContext, select);
 
-    ComponentUtils.putDataAttribute(select, "tobago-select2", "{}");
-
+    ComponentUtils.putDataAttribute(select, "tobago-select2", Select2Options.of(select).toJson());
 
     final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, select);
     writer.startElement(HtmlElements.DIV, select);