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/28 11:07:43 UTC
[myfaces-tobago] 01/03: TOBAGO-1633: Use TypeScript instead of
JavaScript. Simplify Renderers: remove "inside":
selectBooleanCheckboxInsideCommand, SelectOneRadioInsideCommand,
selectManyCheckboxInsideCommand
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 ebf8898fc9f1e28852eb3fa352daf4d557db6d39
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Wed Oct 28 11:36:35 2020 +0100
TOBAGO-1633: Use TypeScript instead of JavaScript.
Simplify Renderers: remove "inside": selectBooleanCheckboxInsideCommand, SelectOneRadioInsideCommand, selectManyCheckboxInsideCommand
---
.../myfaces/tobago/component/RendererTypes.java | 8 --
.../renderkit/renderer/CommandRendererBase.java | 34 +++----
.../renderer/LinkInsideCommandRenderer.java | 34 -------
.../renderer/MessageLayoutRendererBase.java | 18 ++++
...SelectBooleanCheckboxInsideCommandRenderer.java | 60 ------------
.../renderer/SelectBooleanCheckboxRenderer.java | 24 +++--
.../SelectManyCheckboxInsideCommandRenderer.java | 52 -----------
.../renderer/SelectManyCheckboxRenderer.java | 21 +++--
.../SelectOneRadioInsideCommandRenderer.java | 51 -----------
.../renderkit/renderer/SelectOneRadioRenderer.java | 21 +++--
.../taglib/component/BadgeTagDeclaration.java | 2 +-
.../taglib/component/ButtonTagDeclaration.java | 2 +-
.../taglib/component/LinkTagDeclaration.java | 2 +-
.../taglib/component/LinksTagDeclaration.java | 2 +-
.../taglib/component/OutTagDeclaration.java | 2 +-
.../SelectBooleanCheckboxTagDeclaration.java | 2 +-
.../SelectBooleanToggleTagDeclaration.java | 2 +-
.../SelectManyCheckboxTagDeclaration.java | 2 +-
.../component/SelectOneChoiceTagDeclaration.java | 2 +-
.../component/SelectOneRadioTagDeclaration.java | 2 +-
.../taglib/component/SeparatorTagDeclaration.java | 2 +-
.../tobago/renderkit/html/HtmlElements.java | 2 +
.../internal/config/AbstractTobagoTestBase.java | 17 +++-
.../renderkit/renderer/LinkRendererUnitTest.java | 102 +++++++++++++++++++++
.../resources/renderer/link/booleanInsideLink.html | 28 ++++++
.../resources/renderer/link/manyInsideLink.html | 34 +++++++
.../resources/renderer/link/radioInsideLink.html | 34 +++++++
.../renderer/link/separatorInsideLink.html | 32 +++++++
28 files changed, 329 insertions(+), 265 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 720581c..97a4a2a 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
@@ -46,7 +46,6 @@ public enum RendererTypes {
In,
Image,
Link,
- LinkInsideCommand,
Links,
Label,
Messages,
@@ -65,15 +64,12 @@ public enum RendererTypes {
Section,
SegmentLayout,
SelectBooleanCheckbox,
- SelectBooleanCheckboxInsideCommand,
SelectBooleanToggle,
SelectManyCheckbox,
- SelectManyCheckboxInsideCommand,
SelectManyListbox,
SelectManyShuttle,
SelectOneChoice,
SelectOneRadio,
- SelectOneRadioInsideCommand,
SelectOneListbox,
SelectReference,
Separator,
@@ -121,7 +117,6 @@ public enum RendererTypes {
public static final String IN = "In";
public static final String IMAGE = "Image";
public static final String LINK = "Link";
- public static final String LINK_INSIDE_COMMAND = "LinkInsideCommand";
public static final String LINKS = "Links";
public static final String LABEL = "Label";
public static final String MESSAGES = "Messages";
@@ -140,15 +135,12 @@ public enum RendererTypes {
public static final String SECTION = "Section";
public static final String SEGMENT_LAYOUT = "SegmentLayout";
public static final String SELECT_BOOLEAN_CHECKBOX = "SelectBooleanCheckbox";
- public static final String SELECT_BOOLEAN_CHECKBOX_INSIDE_COMMAND = "SelectBooleanCheckboxInsideCommand";
public static final String SELECT_BOOLEAN_TOGGLE = "SelectBooleanToggle";
public static final String SELECT_MANY_CHECKBOX = "SelectManyCheckbox";
- public static final String SELECT_MANY_CHECKBOX_INSIDE_COMMAND = "SelectManyCheckboxInsideCommand";
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_RADIO = "SelectOneRadio";
- public static final String SELECT_ONE_RADIO_INSIDE_COMMAND = "SelectOneRadioInsideCommand";
public static final String SELECT_ONE_LISTBOX = "SelectOneListbox";
public static final String SELECT_REFERENCE = "SelectReference";
public static final String SEPARATOR = "Separator";
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
index fca31b3..a3171bb 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
@@ -20,7 +20,6 @@
package org.apache.myfaces.tobago.internal.renderkit.renderer;
import org.apache.myfaces.tobago.component.Attributes;
-import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.internal.component.AbstractUIBadge;
import org.apache.myfaces.tobago.internal.component.AbstractUICommand;
import org.apache.myfaces.tobago.internal.component.AbstractUIFormBase;
@@ -68,7 +67,7 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
final boolean anchor = (component.getLink() != null || component.getOutcome() != null) && !disabled;
final String target = component.getTarget();
final boolean parentOfCommands = component.isParentOfCommands();
- final boolean dropdownSubmenu = this instanceof LinkInsideCommandRenderer;
+ final boolean dropdownSubmenu = isInside(facesContext, HtmlElements.COMMAND);
final TobagoResponseWriter writer = getResponseWriter(facesContext);
@@ -110,15 +109,13 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
writer.writeAttribute(DataAttributes.TOGGLE, "dropdown", false);
}
final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, component);
- if (title != null) {
- writer.writeAttribute(HtmlAttributes.TITLE, title, true);
- }
+ writer.writeAttribute(HtmlAttributes.TITLE, title, true);
writer.writeClassAttribute(
getRendererCssClass(),
getRendererCssClass().createMarkup(component.getMarkup()),
- parentOfCommands ? null : getOuterCssItems(facesContext, component),
getCssItems(facesContext, component),
+ !parentOfCommands && dropdownSubmenu ? BootstrapClass.DROPDOWN_ITEM : null,
parentOfCommands && !dropdownSubmenu ? BootstrapClass.DROPDOWN_TOGGLE : null,
component.getCustomClass(),
isInside(facesContext, HtmlElements.TOBAGO_LINKS) ? BootstrapClass.NAV_LINK : null);
@@ -184,17 +181,21 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
}
renderLater.add(child);
} else if (child instanceof AbstractUILink) {
- child.setRendererType(RendererTypes.LinkInsideCommand.name());
+ insideBegin(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
child.encodeAll(facesContext);
+ insideEnd(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
} else if (child instanceof AbstractUISelectBooleanCheckbox) {
- child.setRendererType(RendererTypes.SelectBooleanCheckboxInsideCommand.name());
+ insideBegin(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
child.encodeAll(facesContext);
+ insideEnd(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
} else if (child instanceof AbstractUISelectManyCheckbox) {
- child.setRendererType(RendererTypes.SelectManyCheckboxInsideCommand.name());
+ insideBegin(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
child.encodeAll(facesContext);
+ insideEnd(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
} else if (child instanceof AbstractUISelectOneRadio) {
- child.setRendererType(RendererTypes.SelectOneRadioInsideCommand.name());
+ insideBegin(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
child.encodeAll(facesContext);
+ insideEnd(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
} else if (child instanceof AbstractUISeparator) {
insideBegin(facesContext, HtmlElements.COMMAND); // XXX may refactor / cleanup
child.encodeAll(facesContext);
@@ -232,23 +233,16 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
final String clientId = command.getClientId(facesContext);
final boolean parentOfCommands = command.isParentOfCommands();
- final boolean dropdownSubmenu = this instanceof LinkInsideCommandRenderer;
-
+ final boolean dropdownSubmenu = isInside(facesContext, HtmlElements.COMMAND);
final TobagoResponseWriter writer = getResponseWriter(facesContext);
if (parentOfCommands) {
writer.startElement(HtmlElements.TOBAGO_DROPDOWN);
writer.writeIdAttribute(clientId);
- final CssItem first;
- if (dropdownSubmenu) {
- first = TobagoClass.DROPDOWN__SUBMENU;
- } else {
- first = BootstrapClass.DROPDOWN;
- }
writer.writeClassAttribute(
- first,
- getOuterCssItems(facesContext, command));
+ dropdownSubmenu ? TobagoClass.DROPDOWN__SUBMENU : BootstrapClass.DROPDOWN,
+ dropdownSubmenu ? BootstrapClass.DROPDOWN_ITEM : null);
}
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkInsideCommandRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkInsideCommandRenderer.java
deleted file mode 100644
index fee9493..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkInsideCommandRenderer.java
+++ /dev/null
@@ -1,34 +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.AbstractUILink;
-import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-
-import javax.faces.context.FacesContext;
-
-public class LinkInsideCommandRenderer<T extends AbstractUILink> extends LinkRenderer<T> {
-
- @Override
- protected CssItem[] getOuterCssItems(final FacesContext facesContext, final T command) {
- return new CssItem[]{BootstrapClass.DROPDOWN_ITEM};
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessageLayoutRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessageLayoutRendererBase.java
index 29b6ee5..70c96ab 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessageLayoutRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/MessageLayoutRendererBase.java
@@ -43,6 +43,24 @@ public abstract class MessageLayoutRendererBase<T extends UIComponent & Supports
extends LabelLayoutRendererBase<T> {
@Override
+ public void encodeBeginInternal(FacesContext facesContext, T component) throws IOException {
+ if (isInside(facesContext, HtmlElements.COMMAND)) {
+ encodeBeginField(facesContext, component);
+ } else {
+ super.encodeBeginInternal(facesContext, component);
+ }
+ }
+
+ @Override
+ public void encodeEndInternal(FacesContext facesContext, T component) throws IOException {
+ if (isInside(facesContext, HtmlElements.COMMAND)) {
+ encodeEndField(facesContext, component);
+ } else {
+ super.encodeEndInternal(facesContext, component);
+ }
+ }
+
+ @Override
public void encodeBeginMessageField(final FacesContext facesContext, final T component) throws IOException {
encodeBeginMessagesContainer(facesContext, component);
encodeBeginField(facesContext, component);
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxInsideCommandRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxInsideCommandRenderer.java
deleted file mode 100644
index 657a39c..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxInsideCommandRenderer.java
+++ /dev/null
@@ -1,60 +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.AbstractUISelectBoolean;
-import org.apache.myfaces.tobago.internal.component.AbstractUISelectBooleanCheckbox;
-import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
-
-import javax.faces.context.FacesContext;
-import java.io.IOException;
-
-public class SelectBooleanCheckboxInsideCommandRenderer<T extends AbstractUISelectBooleanCheckbox>
- extends SelectBooleanCheckboxRenderer<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 HtmlElements getOuterHtmlTag() {
- return HtmlElements.TOBAGO_SELECT_BOOLEAN_CHECKBOX;
- }
-
- @Override
- protected CssItem[] getOuterCssItems(final FacesContext facesContext, final AbstractUISelectBoolean select) {
- return new CssItem[]{
- BootstrapClass.FORM_CHECK
- };
- }
-
- @Override
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectBoolean select) {
- return new CssItem[]{BootstrapClass.DROPDOWN_ITEM};
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxRenderer.java
index d8efa09..0bdb3c3 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectBooleanCheckboxRenderer.java
@@ -88,7 +88,7 @@ public class SelectBooleanCheckboxRenderer<T extends AbstractUISelectBooleanChec
final String itemImage = component.getItemImage();
final Markup markup = component.getMarkup();
- writer.startElement(getOuterHtmlTag());
+ writer.startElement(getOuterHtmlTag(facesContext));
writer.writeIdAttribute(clientId);
writer.writeClassAttribute(
getTobagoClass(),
@@ -148,24 +148,34 @@ public class SelectBooleanCheckboxRenderer<T extends AbstractUISelectBooleanChec
protected void encodeEndField(final FacesContext facesContext, final T component) throws IOException {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
- writer.endElement(getOuterHtmlTag());
+ writer.endElement(getOuterHtmlTag(facesContext));
encodeBehavior(writer, facesContext, component);
}
- protected HtmlElements getOuterHtmlTag() {
- return HtmlElements.DIV;
+ /** XXX can this be removed? use always HtmlElements.TOBAGO_SELECT_BOOLEAN_CHECKBOX ??? */
+ protected HtmlElements getOuterHtmlTag(final FacesContext facesContext) {
+ if (isInside(facesContext, HtmlElements.COMMAND)) {
+ return HtmlElements.TOBAGO_SELECT_BOOLEAN_CHECKBOX;
+ } else {
+ return HtmlElements.DIV;
+ }
}
protected CssItem[] getOuterCssItems(final FacesContext facesContext, final AbstractUISelectBoolean select) {
+ final boolean colFromLabel = !select.isLabelLayoutSkip() && !isInside(facesContext, HtmlElements.COMMAND);
return new CssItem[]{
- !select.isLabelLayoutSkip() ? BootstrapClass.COL_FORM_LABEL : null,
- BootstrapClass.FORM_CHECK
+ BootstrapClass.FORM_CHECK,
+ colFromLabel ? BootstrapClass.COL_FORM_LABEL : null
};
}
protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectBoolean select) {
- return null;
+ if (isInside(facesContext, HtmlElements.COMMAND)) {
+ return new CssItem[]{BootstrapClass.DROPDOWN_ITEM};
+ } else {
+ return null;
+ }
}
@Override
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxInsideCommandRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxInsideCommandRenderer.java
deleted file mode 100644
index 09150af..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxInsideCommandRenderer.java
+++ /dev/null
@@ -1,52 +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.AbstractUISelectManyCheckbox;
-import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
-
-import javax.faces.context.FacesContext;
-import java.io.IOException;
-
-public class SelectManyCheckboxInsideCommandRenderer<T extends AbstractUISelectManyCheckbox>
- extends SelectManyCheckboxRenderer<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 HtmlElements getOuterHtmlTag() {
- return HtmlElements.TOBAGO_SELECT_MANY_CHECKBOX;
- }
-
- @Override
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectManyCheckbox select) {
- return new CssItem[]{BootstrapClass.DROPDOWN_ITEM};
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java
index f82fa5e..763bd94 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectManyCheckboxRenderer.java
@@ -27,7 +27,6 @@ import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
import org.apache.myfaces.tobago.internal.util.SelectItemUtils;
import org.apache.myfaces.tobago.internal.util.StringUtils;
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;
@@ -59,8 +58,9 @@ public class SelectManyCheckboxRenderer<T extends AbstractUISelectManyCheckbox>
final boolean required = component.isRequired();
final boolean inline = component.isInline();
final Markup markup = component.getMarkup();
+ final boolean isInsideCommand = isInside(facesContext, HtmlElements.COMMAND);
- writer.startElement(getOuterHtmlTag());
+ writer.startElement(getOuterHtmlTag(facesContext));
writer.writeClassAttribute(
TobagoClass.SELECT_MANY_CHECKBOX,
TobagoClass.SELECT_MANY_CHECKBOX.createMarkup(markup),
@@ -110,7 +110,7 @@ public class SelectManyCheckboxRenderer<T extends AbstractUISelectManyCheckbox>
writer.startElement(HtmlElements.LABEL);
writer.writeClassAttribute(
BootstrapClass.FORM_CHECK_LABEL,
- getCssItems(facesContext, component));
+ isInsideCommand ? BootstrapClass.DROPDOWN_ITEM : null);
writer.writeAttribute(HtmlAttributes.FOR, itemId, false);
if (item instanceof org.apache.myfaces.tobago.model.SelectItem) {
@@ -147,17 +147,18 @@ public class SelectManyCheckboxRenderer<T extends AbstractUISelectManyCheckbox>
protected void encodeEndField(final FacesContext facesContext, final T component) throws IOException {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
- writer.endElement(getOuterHtmlTag());
+ writer.endElement(getOuterHtmlTag(facesContext));
encodeBehavior(writer, facesContext, component);
}
- protected HtmlElements getOuterHtmlTag() {
- return HtmlElements.DIV;
- }
-
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectManyCheckbox select) {
- return null;
+ /** XXX can this be removed? use always HtmlElements.TOBAGO_SELECT_MANY_CHECKBOX ??? */
+ protected HtmlElements getOuterHtmlTag(final FacesContext facesContext) {
+ if (isInside(facesContext, HtmlElements.COMMAND)) {
+ return HtmlElements.TOBAGO_SELECT_MANY_CHECKBOX;
+ } else {
+ return HtmlElements.DIV;
+ }
}
@Override
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioInsideCommandRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioInsideCommandRenderer.java
deleted file mode 100644
index cae0b6d..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioInsideCommandRenderer.java
+++ /dev/null
@@ -1,51 +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.AbstractUISelectOneRadio;
-import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
-
-import javax.faces.context.FacesContext;
-import java.io.IOException;
-
-public class SelectOneRadioInsideCommandRenderer<T extends AbstractUISelectOneRadio> extends SelectOneRadioRenderer<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 HtmlElements getOuterHtmlTag() {
- return HtmlElements.TOBAGO_SELECT_ONE_RADIO;
- }
-
- @Override
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectOneRadio select) {
- return new CssItem[]{BootstrapClass.DROPDOWN_ITEM};
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java
index 60ccb89..cba6407 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SelectOneRadioRenderer.java
@@ -28,7 +28,6 @@ import org.apache.myfaces.tobago.internal.util.ObjectUtils;
import org.apache.myfaces.tobago.internal.util.SelectItemUtils;
import org.apache.myfaces.tobago.internal.util.StringUtils;
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;
@@ -61,8 +60,9 @@ public class SelectOneRadioRenderer<T extends AbstractUISelectOneRadio> extends
final boolean required = component.isRequired();
final boolean inline = component.isInline();
final Markup markup = component.getMarkup();
+ final boolean isInsideCommand = isInside(facesContext, HtmlElements.COMMAND);
- writer.startElement(getOuterHtmlTag());
+ writer.startElement(getOuterHtmlTag(facesContext));
writer.writeClassAttribute(
TobagoClass.SELECT_ONE_RADIO,
TobagoClass.SELECT_ONE_RADIO.createMarkup(markup),
@@ -110,7 +110,7 @@ public class SelectOneRadioRenderer<T extends AbstractUISelectOneRadio> extends
writer.startElement(HtmlElements.LABEL);
writer.writeClassAttribute(
BootstrapClass.FORM_CHECK_LABEL,
- getCssItems(facesContext, component));
+ isInsideCommand ? BootstrapClass.DROPDOWN_ITEM : null);
writer.writeAttribute(HtmlAttributes.FOR, itemId, false);
if (item instanceof org.apache.myfaces.tobago.model.SelectItem) {
final org.apache.myfaces.tobago.model.SelectItem tobagoItem =
@@ -146,17 +146,18 @@ public class SelectOneRadioRenderer<T extends AbstractUISelectOneRadio> extends
protected void encodeEndField(final FacesContext facesContext, final T component) throws IOException {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
- writer.endElement(getOuterHtmlTag());
+ writer.endElement(getOuterHtmlTag(facesContext));
encodeBehavior(writer, facesContext, component);
}
- protected HtmlElements getOuterHtmlTag() {
- return HtmlElements.DIV;
- }
-
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUISelectOneRadio select) {
- return null;
+ /** XXX can this be removed? use always HtmlElements.TOBAGO_SELECT_MANY_CHECKBOX ??? */
+ protected HtmlElements getOuterHtmlTag(final FacesContext facesContext) {
+ if (isInside(facesContext, HtmlElements.COMMAND)) {
+ return HtmlElements.TOBAGO_SELECT_ONE_RADIO;
+ } else {
+ return HtmlElements.DIV;
+ }
}
@Override
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java
index aba9947..9b91c16 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java
@@ -42,7 +42,7 @@ import javax.faces.component.UIOutput;
"javax.faces.component.behavior.ClientBehaviorHolder"
},
componentFamily = UIOutput.COMPONENT_FAMILY,
- rendererType = {RendererTypes.BADGE},
+ rendererType = RendererTypes.BADGE,
allowedChildComponenents = "NONE",
markups = {
@Markup(
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java
index 3b3fc36..f7056b3 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java
@@ -62,7 +62,7 @@ import javax.faces.component.UICommand;
"org.apache.myfaces.tobago.component.SupportsAccessKey"
},
componentFamily = UICommand.COMPONENT_FAMILY,
- rendererType = {RendererTypes.BUTTON},
+ rendererType = RendererTypes.BUTTON,
allowedChildComponenents = "NONE",
facets = {
@Facet(
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java
index e96be42..4ce209c 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java
@@ -59,7 +59,7 @@ import javax.faces.component.UICommand;
uiComponentFacesClass = "javax.faces.component.UICommand",
interfaces = "org.apache.myfaces.tobago.component.SupportsAccessKey",
componentFamily = UICommand.COMPONENT_FAMILY,
- rendererType = {RendererTypes.LINK, RendererTypes.LINK_INSIDE_COMMAND},
+ rendererType = RendererTypes.LINK,
allowedChildComponenents = "NONE",
facets = {
@Facet(
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinksTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinksTagDeclaration.java
index 6370221..5398e6d 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinksTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinksTagDeclaration.java
@@ -43,7 +43,7 @@ import javax.faces.component.UIPanel;
// As long as no behavior event names are defined, ClientBehaviorHolder must be implemented for Mojarra.
"javax.faces.component.behavior.ClientBehaviorHolder"
},
- rendererType = {RendererTypes.LINKS})
+ rendererType = RendererTypes.LINKS)
public interface LinksTagDeclaration extends HasIdBindingAndRendered, IsVisual, HasTip, HasOrientation {
/**
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
index 970a056..acfc002 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
@@ -46,7 +46,7 @@ import javax.faces.component.UIOutput;
uiComponent = "org.apache.myfaces.tobago.component.UIOut",
uiComponentFacesClass = "javax.faces.component.UIOutput",
componentFamily = UIOutput.COMPONENT_FAMILY,
- rendererType = {RendererTypes.OUT},
+ rendererType = RendererTypes.OUT,
interfaces = {
// As long as no behavior event names are defined, ClientBehaviorHolder must be implemented for Mojarra.
"javax.faces.component.behavior.ClientBehaviorHolder"
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanCheckboxTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanCheckboxTagDeclaration.java
index 9dfcdfb..1a215ab 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanCheckboxTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanCheckboxTagDeclaration.java
@@ -58,7 +58,7 @@ import javax.faces.component.UISelectBoolean;
uiComponent = "org.apache.myfaces.tobago.component.UISelectBooleanCheckbox",
uiComponentFacesClass = "javax.faces.component.UISelectBoolean",
componentFamily = UISelectBoolean.COMPONENT_FAMILY,
- rendererType = {RendererTypes.SELECT_BOOLEAN_CHECKBOX, RendererTypes.SELECT_BOOLEAN_CHECKBOX_INSIDE_COMMAND},
+ rendererType = RendererTypes.SELECT_BOOLEAN_CHECKBOX,
allowedChildComponenents = "NONE",
behaviors = {
@Behavior(
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanToggleTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanToggleTagDeclaration.java
index ad775ea..bd562ac 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanToggleTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectBooleanToggleTagDeclaration.java
@@ -58,7 +58,7 @@ import javax.faces.component.UISelectBoolean;
uiComponent = "org.apache.myfaces.tobago.component.UISelectBooleanToggle",
uiComponentFacesClass = "javax.faces.component.UISelectBoolean",
componentFamily = UISelectBoolean.COMPONENT_FAMILY,
- rendererType = {RendererTypes.SELECT_BOOLEAN_TOGGLE},
+ rendererType = RendererTypes.SELECT_BOOLEAN_TOGGLE,
allowedChildComponenents = "NONE",
behaviors = {
@Behavior(
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyCheckboxTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyCheckboxTagDeclaration.java
index 060bdb8..0a093f9 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyCheckboxTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyCheckboxTagDeclaration.java
@@ -60,7 +60,7 @@ import javax.faces.component.UISelectMany;
uiComponent = "org.apache.myfaces.tobago.component.UISelectManyCheckbox",
uiComponentFacesClass = "javax.faces.component.UISelectMany",
componentFamily = UISelectMany.COMPONENT_FAMILY,
- rendererType = {RendererTypes.SELECT_MANY_CHECKBOX, RendererTypes.SELECT_MANY_CHECKBOX_INSIDE_COMMAND},
+ rendererType = RendererTypes.SELECT_MANY_CHECKBOX,
allowedChildComponenents = {
"javax.faces.SelectItem",
"javax.faces.SelectItems"},
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 6ff1cc1..5388174 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},
+ rendererType = RendererTypes.SELECT_ONE_CHOICE,
allowedChildComponenents = {
"javax.faces.SelectItem",
"javax.faces.SelectItems"
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneRadioTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneRadioTagDeclaration.java
index 0078dfc..78b71b5 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneRadioTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectOneRadioTagDeclaration.java
@@ -60,7 +60,7 @@ import javax.faces.component.UISelectOne;
uiComponent = "org.apache.myfaces.tobago.component.UISelectOneRadio",
uiComponentFacesClass = "javax.faces.component.UISelectOne",
componentFamily = UISelectOne.COMPONENT_FAMILY,
- rendererType = {RendererTypes.SELECT_ONE_RADIO, RendererTypes.SELECT_ONE_RADIO_INSIDE_COMMAND},
+ rendererType = RendererTypes.SELECT_ONE_RADIO,
allowedChildComponenents = {
"javax.faces.SelectItem",
"javax.faces.SelectItems"
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SeparatorTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SeparatorTagDeclaration.java
index 9eb415b..bc8f4eb 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SeparatorTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SeparatorTagDeclaration.java
@@ -35,7 +35,7 @@ import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
@UIComponentTag(
uiComponent = "org.apache.myfaces.tobago.component.UISeparator",
componentFamily = "org.apache.myfaces.tobago.Separator",
- rendererType = {RendererTypes.SEPARATOR},
+ rendererType = RendererTypes.SEPARATOR,
allowedChildComponenents = "NONE",
interfaces = {
// As long as no behavior event names are defined, ClientBehaviorHolder must be implemented for Mojarra.
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
index 8f6b271..5d758cc 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlElements.java
@@ -46,6 +46,8 @@ public enum HtmlElements {
CODE("code", Qualifier.INLINE),
COL("col", Qualifier.VOID),
COLGROUP("colgroup"),
+ /** @deprecated */
+ @Deprecated
COMMAND("command", Qualifier.VOID),
DATALIST("datalist"),
DD("dd"),
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 bf62ae6..1c9863d 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
@@ -38,7 +38,10 @@ import org.apache.myfaces.tobago.component.UIPanel;
import org.apache.myfaces.tobago.component.UIPopup;
import org.apache.myfaces.tobago.component.UISection;
import org.apache.myfaces.tobago.component.UISegmentLayout;
+import org.apache.myfaces.tobago.component.UISelectBooleanCheckbox;
import org.apache.myfaces.tobago.component.UISelectItem;
+import org.apache.myfaces.tobago.component.UISelectManyCheckbox;
+import org.apache.myfaces.tobago.component.UISelectManyListbox;
import org.apache.myfaces.tobago.component.UISelectOneChoice;
import org.apache.myfaces.tobago.component.UISelectOneRadio;
import org.apache.myfaces.tobago.component.UISeparator;
@@ -50,7 +53,6 @@ import org.apache.myfaces.tobago.internal.renderkit.renderer.ButtonRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.ButtonsRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.GridLayoutRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.InRenderer;
-import org.apache.myfaces.tobago.internal.renderkit.renderer.LinkInsideCommandRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.LinkRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.LinksRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.OutRenderer;
@@ -58,6 +60,9 @@ 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.SectionRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.SegmentLayoutRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectBooleanCheckboxRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyCheckboxRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectManyListboxRenderer;
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;
@@ -127,6 +132,9 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
application.addComponent(Tags.style.componentType(), UIStyle.class.getName());
application.addComponent(Tags.section.componentType(), UISection.class.getName());
application.addComponent(Tags.selectItem.componentType(), UISelectItem.class.getName());
+ application.addComponent(Tags.selectBooleanCheckbox.componentType(), UISelectBooleanCheckbox.class.getName());
+ application.addComponent(Tags.selectManyCheckbox.componentType(), UISelectManyCheckbox.class.getName());
+ application.addComponent(Tags.selectManyListbox.componentType(), UISelectManyListbox.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());
@@ -138,7 +146,6 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
renderKit.addRenderer(UIOut.COMPONENT_FAMILY, RendererTypes.OUT, new OutRenderer());
renderKit.addRenderer(UIPanel.COMPONENT_FAMILY, RendererTypes.PANEL, new PanelRenderer());
renderKit.addRenderer(UILink.COMPONENT_FAMILY, RendererTypes.LINK, new LinkRenderer());
- renderKit.addRenderer(UILink.COMPONENT_FAMILY, RendererTypes.LINK_INSIDE_COMMAND, new LinkInsideCommandRenderer());
renderKit.addRenderer(UILinks.COMPONENT_FAMILY, RendererTypes.LINKS, new LinksRenderer());
renderKit.addRenderer(UIBox.COMPONENT_FAMILY, RendererTypes.BOX, new BoxRenderer());
renderKit.addRenderer(UIButton.COMPONENT_FAMILY, RendererTypes.BUTTON, new ButtonRenderer());
@@ -148,6 +155,12 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
renderKit.addRenderer(UIStyle.COMPONENT_FAMILY, RendererTypes.STYLE, new StyleRenderer());
renderKit.addRenderer(UISection.COMPONENT_FAMILY, RendererTypes.SECTION, new SectionRenderer());
renderKit.addRenderer(
+ UISelectBooleanCheckbox.COMPONENT_FAMILY, RendererTypes.SELECT_BOOLEAN_CHECKBOX, new SelectBooleanCheckboxRenderer());
+ renderKit.addRenderer(
+ UISelectManyCheckbox.COMPONENT_FAMILY, RendererTypes.SELECT_MANY_CHECKBOX, new SelectManyCheckboxRenderer());
+ renderKit.addRenderer(
+ UISelectManyListbox.COMPONENT_FAMILY, RendererTypes.SELECT_MANY_LISTBOX, new SelectManyListboxRenderer());
+ renderKit.addRenderer(
UISelectOneRadio.COMPONENT_FAMILY, RendererTypes.SELECT_ONE_RADIO, new SelectOneRadioRenderer());
renderKit.addRenderer(
UISelectOneChoice.COMPONENT_FAMILY, RendererTypes.SELECT_ONE_CHOICE, new SelectOneChoiceRenderer());
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java
index 7178b01..2933aa7 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java
@@ -22,6 +22,11 @@ package org.apache.myfaces.tobago.internal.renderkit.renderer;
import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.component.Tags;
import org.apache.myfaces.tobago.component.UILink;
+import org.apache.myfaces.tobago.component.UISelectBooleanCheckbox;
+import org.apache.myfaces.tobago.component.UISelectItem;
+import org.apache.myfaces.tobago.component.UISelectManyCheckbox;
+import org.apache.myfaces.tobago.component.UISelectOneRadio;
+import org.apache.myfaces.tobago.component.UISeparator;
import org.apache.myfaces.tobago.util.ComponentUtils;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
@@ -31,6 +36,23 @@ import java.io.IOException;
public class LinkRendererUnitTest extends RendererTestBase {
@Test
+ public void booleanInsideLink() throws IOException {
+ final UILink c = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "id");
+ c.setLabel("dropdown");
+
+ final UISelectBooleanCheckbox s = (UISelectBooleanCheckbox) ComponentUtils.createComponent(
+ facesContext, Tags.selectBooleanCheckbox.componentType(), RendererTypes.SelectBooleanCheckbox, "id");
+ s.setLabel("boolean");
+
+ c.getChildren().add(s);
+
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/link/booleanInsideLink.html"), formattedResult());
+ }
+
+ @Test
public void link() throws IOException {
final UILink c = (UILink) ComponentUtils.createComponent(
facesContext, Tags.link.componentType(), RendererTypes.Link, "id");
@@ -41,4 +63,84 @@ public class LinkRendererUnitTest extends RendererTestBase {
Assert.assertEquals(loadHtml("renderer/link/link.html"), formattedResult());
}
+ @Test
+ public void manyInsideLink() throws IOException {
+ final UILink c = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "id");
+ c.setLabel("dropdown");
+
+ final UISelectManyCheckbox s = (UISelectManyCheckbox) ComponentUtils.createComponent(
+ facesContext, Tags.selectManyCheckbox.componentType(), RendererTypes.SelectManyCheckbox, "many");
+ s.setLabel("many");
+
+ c.getChildren().add(s);
+
+ final UISelectItem i1 = (UISelectItem) ComponentUtils.createComponent(
+ facesContext, Tags.selectItem.componentType(), null, "i1");
+ i1.setItemLabel("Stratocaster");
+ s.getChildren().add(i1);
+ final UISelectItem i2 = (UISelectItem) ComponentUtils.createComponent(
+ facesContext, Tags.selectItem.componentType(), null, "i2");
+ i2.setItemLabel("Telecaster");
+ s.getChildren().add(i2);
+
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/link/manyInsideLink.html"), formattedResult());
+ }
+
+ @Test
+ public void radioInsideLink() throws IOException {
+ final UILink c = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "id");
+ c.setLabel("dropdown");
+
+ final UISelectOneRadio s = (UISelectOneRadio) ComponentUtils.createComponent(
+ facesContext, Tags.selectOneRadio.componentType(), RendererTypes.SelectOneRadio, "radio");
+ s.setLabel("radio");
+
+ c.getChildren().add(s);
+
+ final UISelectItem i1 = (UISelectItem) ComponentUtils.createComponent(
+ facesContext, Tags.selectItem.componentType(), null, "i1");
+ i1.setItemLabel("Stratocaster");
+ s.getChildren().add(i1);
+ final UISelectItem i2 = (UISelectItem) ComponentUtils.createComponent(
+ facesContext, Tags.selectItem.componentType(), null, "i2");
+ i2.setItemLabel("Telecaster");
+ s.getChildren().add(i2);
+
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/link/radioInsideLink.html"), formattedResult());
+ }
+
+ @Test
+ public void separatorInsideLink() throws IOException {
+ final UILink c = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "id");
+ c.setLabel("dropdown");
+
+ final UILink l1 = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "link1");
+ l1.setLabel("Link 1");
+ l1.setLink("https://www.apache.org/");
+
+ final UISeparator s = (UISeparator) ComponentUtils.createComponent(
+ facesContext, Tags.separator.componentType(), RendererTypes.Separator, "separator");
+
+ final UILink l2 = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "link2");
+ l2.setLabel("Link 2");
+ l2.setLink("https://www.apache.org/");
+
+ c.getChildren().add(l1);
+ c.getChildren().add(s);
+ c.getChildren().add(l2);
+
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/link/separatorInsideLink.html"), formattedResult());
+ }
+
}
diff --git a/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html b/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html
new file mode 100644
index 0000000..64b0466
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/link/booleanInsideLink.html
@@ -0,0 +1,28 @@
+<!--
+ * 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-dropdown id='id' class='dropdown'>
+ <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'>
+ <tobago-behavior event='click' decoupled='decoupled'>
+ </tobago-behavior><span>dropdown</span></button>
+ <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
+ <tobago-select-boolean-checkbox id='id' class='tobago-selectBooleanCheckbox form-check'>
+ <input class='form-check-input' type='checkbox' value='true' name='id' id='id::field'>
+ <label class='form-check-label dropdown-item' for='id::field'></label>
+ </tobago-select-boolean-checkbox>
+ </div>
+</tobago-dropdown>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/link/manyInsideLink.html b/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
new file mode 100644
index 0000000..b15a572
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/link/manyInsideLink.html
@@ -0,0 +1,34 @@
+<!--
+ * 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-dropdown id='id' class='dropdown'>
+ <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'>
+ <tobago-behavior event='click' decoupled='decoupled'>
+ </tobago-behavior><span>dropdown</span></button>
+ <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
+ <tobago-select-many-checkbox class='tobago-selectManyCheckbox'>
+ <div class='form-check'>
+ <input class='form-check-input' type='checkbox' name='many' id='many::0' value=''>
+ <label class='form-check-label dropdown-item' for='many::0'>Stratocaster</label>
+ </div>
+ <div class='form-check'>
+ <input class='form-check-input' type='checkbox' name='many' id='many::1' value=''>
+ <label class='form-check-label dropdown-item' for='many::1'>Telecaster</label>
+ </div>
+ </tobago-select-many-checkbox>
+ </div>
+</tobago-dropdown>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/link/radioInsideLink.html b/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
new file mode 100644
index 0000000..bbb9ed7
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/link/radioInsideLink.html
@@ -0,0 +1,34 @@
+<!--
+ * 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-dropdown id='id' class='dropdown'>
+ <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'>
+ <tobago-behavior event='click' decoupled='decoupled'>
+ </tobago-behavior><span>dropdown</span></button>
+ <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
+ <tobago-select-one-radio class='tobago-selectOneRadio'>
+ <div class='form-check'>
+ <input class='form-check-input' type='radio' checked='checked' name='radio' id='radio::0' value=''>
+ <label class='form-check-label dropdown-item' for='radio::0'>Stratocaster</label>
+ </div>
+ <div class='form-check'>
+ <input class='form-check-input' type='radio' checked='checked' name='radio' id='radio::1' value=''>
+ <label class='form-check-label dropdown-item' for='radio::1'>Telecaster</label>
+ </div>
+ </tobago-select-one-radio>
+ </div>
+</tobago-dropdown>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html b/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html
new file mode 100644
index 0000000..fcc0152
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/link/separatorInsideLink.html
@@ -0,0 +1,32 @@
+<!--
+ * 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-dropdown id='id' class='dropdown'>
+ <button type='button' id='id::command' name='id' data-toggle='dropdown' class='tobago-link dropdown-toggle'>
+ <tobago-behavior event='click' decoupled='decoupled'>
+ </tobago-behavior><span>dropdown</span></button>
+ <div class='dropdown-menu' aria-labelledby='id::command' name='id'>
+ <a id='link1' name='link1' href='https://www.apache.org/' class='tobago-link dropdown-item'>
+ <tobago-behavior event='click' omit='omit' decoupled='decoupled'>
+ </tobago-behavior><span>Link 1</span></a>
+ <tobago-separator id='separator' class='dropdown-divider'>
+ </tobago-separator>
+ <a id='link2' name='link2' href='https://www.apache.org/' class='tobago-link dropdown-item'>
+ <tobago-behavior event='click' omit='omit' decoupled='decoupled'>
+ </tobago-behavior><span>Link 2</span></a>
+ </div>
+</tobago-dropdown>
\ No newline at end of file