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 2020/10/23 18:39:37 UTC
[myfaces-tobago] 11/13: TOBAGO-1633: Use TypeScript instead of
JavaScript. Simplify Renderers: remove "inside": selectOneChoiceInsideIn
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
commit 4ce389096ec616eb74a4775f97c036d5f4109d17
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Fri Oct 23 16:46:23 2020 +0200
TOBAGO-1633: Use TypeScript instead of JavaScript.
Simplify Renderers: remove "inside": selectOneChoiceInsideIn
---
.../myfaces/tobago/component/RendererTypes.java | 2 -
.../internal/renderkit/renderer/InRenderer.java | 24 ++++-------
.../renderer/SelectOneChoiceInsideInRenderer.java | 50 ----------------------
.../renderer/SelectOneChoiceRenderer.java | 29 ++++++++++---
.../component/SelectOneChoiceTagDeclaration.java | 2 +-
.../internal/config/AbstractTobagoTestBase.java | 12 ++++++
.../renderkit/renderer/InRendererUnitTest.java | 25 +++++++++++
.../renderer/in/input-group-choice-after.html | 29 +++++++++++++
8 files changed, 98 insertions(+), 75 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
index bb72fd0..837cce5 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
@@ -74,7 +74,6 @@ public enum RendererTypes {
SelectManyListbox,
SelectManyShuttle,
SelectOneChoice,
- SelectOneChoiceInsideIn,
SelectOneRadio,
SelectOneRadioInsideCommand,
SelectOneListbox,
@@ -152,7 +151,6 @@ public enum RendererTypes {
public static final String SELECT_MANY_LISTBOX = "SelectManyListbox";
public static final String SELECT_MANY_SHUTTLE = "SelectManyShuttle";
public static final String SELECT_ONE_CHOICE = "SelectOneChoice";
- public static final String SELECT_ONE_CHOICE_INSIDE_IN = "SelectOneChoiceInsideIn";
public static final String SELECT_ONE_RADIO = "SelectOneRadio";
public static final String SELECT_ONE_RADIO_INSIDE_COMMAND = "SelectOneRadioInsideCommand";
public static final String SELECT_ONE_LISTBOX = "SelectOneListbox";
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRenderer.java
index d4ecc0c..5add983 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRenderer.java
@@ -21,7 +21,6 @@ package org.apache.myfaces.tobago.internal.renderkit.renderer;
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.component.Facets;
-import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.internal.component.AbstractUIButton;
import org.apache.myfaces.tobago.internal.component.AbstractUIIn;
import org.apache.myfaces.tobago.internal.component.AbstractUIInput;
@@ -179,22 +178,17 @@ public class InRenderer<T extends AbstractUIIn> extends MessageLayoutRendererBas
final FacesContext facesContext, final TobagoResponseWriter writer, final UIComponent addon) throws IOException {
if (addon != null) {
for (final UIComponent child : RenderUtils.getFacetChildren(addon)) {
- if (child instanceof AbstractUIButton && ((AbstractUIButton) child).isParentOfCommands()) {
+ if (child instanceof AbstractUIButton) {
+ child.encodeAll(facesContext);
+ } else if (child instanceof AbstractUIOut) {
+ child.encodeAll(facesContext);
+ } else if (child instanceof AbstractUISelectOneChoice) {
child.encodeAll(facesContext);
} else {
- if (child instanceof AbstractUIButton) {
- child.encodeAll(facesContext);
- } else if (child instanceof AbstractUIOut) {
- child.encodeAll(facesContext);
- } else if (child instanceof AbstractUISelectOneChoice) {
- child.setRendererType(RendererTypes.SelectOneChoiceInsideIn.name());
- child.encodeAll(facesContext);
- } else {
- writer.startElement(HtmlElements.SPAN);
- writer.writeClassAttribute(BootstrapClass.INPUT_GROUP_TEXT);
- child.encodeAll(facesContext);
- writer.endElement(HtmlElements.SPAN);
- }
+ writer.startElement(HtmlElements.SPAN);
+ writer.writeClassAttribute(BootstrapClass.INPUT_GROUP_TEXT);
+ child.encodeAll(facesContext);
+ writer.endElement(HtmlElements.SPAN);
}
}
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceInsideInRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceInsideInRenderer.java
deleted file mode 100644
index c482410..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceInsideInRenderer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.myfaces.tobago.internal.renderkit.renderer;
-
-import org.apache.myfaces.tobago.internal.component.AbstractUISelectOneChoice;
-import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-
-import javax.faces.context.FacesContext;
-import java.io.IOException;
-
-public class SelectOneChoiceInsideInRenderer<T extends AbstractUISelectOneChoice> extends SelectOneChoiceRenderer<T> {
-
- @Override
- public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
- encodeBeginField(facesContext, component);
- }
-
- @Override
- public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
- encodeEndField(facesContext, component);
- }
-
- @Override
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectOneChoice select) {
- return new CssItem[]{BootstrapClass.FORM_SELECT};
- }
-
- @Override
- protected String getFieldId(final FacesContext facesContext, final T component) {
- return component.getClientId(facesContext);
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java
index 3a2cd06..d968a55 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneChoiceRenderer.java
@@ -24,7 +24,6 @@ import org.apache.myfaces.tobago.internal.component.AbstractUISelectOneChoice;
import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
import org.apache.myfaces.tobago.internal.util.SelectItemUtils;
import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
@@ -43,6 +42,24 @@ public class SelectOneChoiceRenderer<T extends AbstractUISelectOneChoice> extend
}
@Override
+ public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
+ if (isInside(facesContext, HtmlElements.TOBAGO_IN)) {
+ encodeBeginField(facesContext, component);
+ } else {
+ super.encodeBeginInternal(facesContext, component);
+ }
+ }
+
+ @Override
+ public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
+ if (isInside(facesContext, HtmlElements.TOBAGO_IN)) {
+ encodeEndField(facesContext, component);
+ } else {
+ super.encodeEndInternal(facesContext, component);
+ }
+ }
+
+ @Override
public boolean getRendersChildren() {
return true;
}
@@ -68,7 +85,7 @@ public class SelectOneChoiceRenderer<T extends AbstractUISelectOneChoice> extend
writer.writeClassAttribute(
TobagoClass.SELECT_ONE_CHOICE,
TobagoClass.SELECT_ONE_CHOICE.createMarkup(markup),
- getCssItems(facesContext, component),
+ isInside(facesContext, HtmlElements.TOBAGO_IN) ? BootstrapClass.FORM_SELECT : BootstrapClass.FORM_CONTROL,
BootstrapClass.borderColor(ComponentUtils.getMaximumSeverity(component)),
component.getCustomClass());
if (title != null) {
@@ -91,10 +108,8 @@ public class SelectOneChoiceRenderer<T extends AbstractUISelectOneChoice> extend
@Override
protected String getFieldId(final FacesContext facesContext, final T component) {
- return component.getFieldId(facesContext);
- }
-
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectOneChoice select) {
- return new CssItem[]{BootstrapClass.FORM_CONTROL};
+ return isInside(facesContext, HtmlElements.TOBAGO_IN)
+ ? component.getFieldId(facesContext)
+ : component.getClientId(facesContext);
}
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneChoiceTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneChoiceTagDeclaration.java
index 14f27c3..6ff1cc1 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneChoiceTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneChoiceTagDeclaration.java
@@ -58,7 +58,7 @@ import javax.faces.component.UISelectOne;
uiComponent = "org.apache.myfaces.tobago.component.UISelectOneChoice",
uiComponentFacesClass = "javax.faces.component.UISelectOne",
componentFamily = UISelectOne.COMPONENT_FAMILY,
- rendererType = {RendererTypes.SELECT_ONE_CHOICE, RendererTypes.SELECT_ONE_CHOICE_INSIDE_IN},
+ rendererType = {RendererTypes.SELECT_ONE_CHOICE},
allowedChildComponenents = {
"javax.faces.SelectItem",
"javax.faces.SelectItems"
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
index 3e34049..4e2b8e4 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
@@ -36,6 +36,9 @@ import org.apache.myfaces.tobago.component.UIOut;
import org.apache.myfaces.tobago.component.UIPanel;
import org.apache.myfaces.tobago.component.UIPopup;
import org.apache.myfaces.tobago.component.UISegmentLayout;
+import org.apache.myfaces.tobago.component.UISelectItem;
+import org.apache.myfaces.tobago.component.UISelectOneChoice;
+import org.apache.myfaces.tobago.component.UISelectOneRadio;
import org.apache.myfaces.tobago.component.UISeparator;
import org.apache.myfaces.tobago.component.UIStyle;
import org.apache.myfaces.tobago.context.TobagoContext;
@@ -51,6 +54,8 @@ import org.apache.myfaces.tobago.internal.renderkit.renderer.OutRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.PanelRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.PopupRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.SegmentLayoutRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectOneChoiceRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectOneRadioRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.SeparatorRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.StyleRenderer;
import org.apache.myfaces.tobago.internal.webapp.HtmlResponseWriter;
@@ -115,6 +120,9 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
application.addComponent(Tags.popup.componentType(), UIPopup.class.getName());
application.addComponent(Tags.separator.componentType(), UISeparator.class.getName());
application.addComponent(Tags.style.componentType(), UIStyle.class.getName());
+ application.addComponent(Tags.selectItem.componentType(), UISelectItem.class.getName());
+ application.addComponent(Tags.selectOneRadio.componentType(), UISelectOneRadio.class.getName());
+ application.addComponent(Tags.selectOneChoice.componentType(), UISelectOneChoice.class.getName());
application.addComponent(Tags.gridLayout.componentType(), UIGridLayout.class.getName());
application.addComponent(Tags.segmentLayout.componentType(), UISegmentLayout.class.getName());
application.addComponent(Tags.badge.componentType(), UIBadge.class.getName());
@@ -131,6 +139,10 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
renderKit.addRenderer(UIPopup.COMPONENT_FAMILY, RendererTypes.POPUP, new PopupRenderer());
renderKit.addRenderer(UISeparator.COMPONENT_FAMILY, RendererTypes.SEPARATOR, new SeparatorRenderer());
renderKit.addRenderer(UIStyle.COMPONENT_FAMILY, RendererTypes.STYLE, new StyleRenderer());
+ renderKit.addRenderer(
+ UISelectOneRadio.COMPONENT_FAMILY, RendererTypes.SELECT_ONE_RADIO, new SelectOneRadioRenderer());
+ renderKit.addRenderer(
+ UISelectOneChoice.COMPONENT_FAMILY, RendererTypes.SELECT_ONE_CHOICE, new SelectOneChoiceRenderer());
renderKit.addRenderer(UIGridLayout.COMPONENT_FAMILY, RendererTypes.GRID_LAYOUT, new GridLayoutRenderer());
renderKit.addRenderer(UISegmentLayout.COMPONENT_FAMILY, RendererTypes.SEGMENT_LAYOUT, new SegmentLayoutRenderer());
renderKit.addRenderer(UIBadge.COMPONENT_FAMILY, RendererTypes.BADGE, new BadgeRenderer());
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRendererUnitTest.java
index a2fabdf..81b0b06 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRendererUnitTest.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/InRendererUnitTest.java
@@ -27,6 +27,8 @@ import org.apache.myfaces.tobago.component.UIIn;
import org.apache.myfaces.tobago.component.UILink;
import org.apache.myfaces.tobago.component.UIOut;
import org.apache.myfaces.tobago.component.UISegmentLayout;
+import org.apache.myfaces.tobago.component.UISelectItem;
+import org.apache.myfaces.tobago.component.UISelectOneChoice;
import org.apache.myfaces.tobago.layout.SegmentMeasureList;
import org.apache.myfaces.tobago.util.ComponentUtils;
import org.junit.Assert;
@@ -67,6 +69,29 @@ public class InRendererUnitTest extends RendererTestBase {
}
@Test
+ public void inputGroupChoiceAfter() throws IOException {
+ final UIIn c = (UIIn) ComponentUtils.createComponent(
+ facesContext, Tags.in.componentType(), RendererTypes.In, "id");
+
+ final UISelectOneChoice choice = (UISelectOneChoice) ComponentUtils.createComponent(
+ facesContext, Tags.selectOneChoice.componentType(), RendererTypes.SelectOneChoice, "choice");
+ c.getFacets().put("after", choice);
+
+ final UISelectItem i1 = (UISelectItem) ComponentUtils.createComponent(
+ facesContext, Tags.selectItem.componentType(), null, "i1");
+ i1.setItemLabel("Stratocaster");
+ choice.getChildren().add(i1);
+ final UISelectItem i2 = (UISelectItem) ComponentUtils.createComponent(
+ facesContext, Tags.selectItem.componentType(), null, "i2");
+ i2.setItemLabel("Telecaster");
+ choice.getChildren().add(i2);
+
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/in/input-group-choice-after.html"), formattedResult());
+ }
+
+ @Test
public void inputGroupDropdownAfter() throws IOException {
final UIIn c = (UIIn) ComponentUtils.createComponent(
facesContext, Tags.in.componentType(), RendererTypes.In, "id");
diff --git a/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html b/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html
new file mode 100644
index 0000000..6d655cd
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/in/input-group-choice-after.html
@@ -0,0 +1,29 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<tobago-in id='id' class='mb-3'>
+ <div class='tobago-input-group-outer'>
+ <div class='input-group'>
+ <input type='text' name='id' id='id::field' class='tobago-in form-control'>
+ <select id='choice::field' name='choice' class='tobago-selectOneChoice form-select'>
+ <option value='' class='tobago-selectOneChoice-option'>Stratocaster
+ </option>
+ <option value='' class='tobago-selectOneChoice-option'>Telecaster
+ </option></select>
+ </div>
+ </div>
+</tobago-in>
\ No newline at end of file