You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by hn...@apache.org on 2020/04/29 11:42:00 UTC
[myfaces-tobago] branch master updated: feature: Images for Toggles
and Checkboxes
This is an automated email from the ASF dual-hosted git repository.
hnoeth pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/master by this push:
new 18de084 feature: Images for Toggles and Checkboxes
18de084 is described below
commit 18de084ff5a0f07ad55cd82bdd85ef444433a916
Author: Jasmin Kroeger <ja...@irian.eu>
AuthorDate: Fri Apr 24 14:49:53 2020 +0200
feature: Images for Toggles and Checkboxes
* itemImage is an interface
* add HtmlElement image in SelectBooleanCheckboxRenderer
* update demo
Issue: TOBAGO-2032, TOBAGO-2033
---
.../component/AbstractUISelectBoolean.java | 2 ++
.../renderer/SelectBooleanCheckboxRenderer.java | 7 +++++
.../SelectBooleanCheckboxTagDeclaration.java | 3 +-
.../SelectBooleanToggleTagDeclaration.java | 3 +-
.../taglib/component/SelectItemTagDeclaration.java | 10 ++-----
.../component/SelectItemsTagDeclaration.java | 10 ++-----
.../internal/taglib/declaration/HasItemImage.java | 32 ++++++++++++++++++++++
.../10-selectBooleanCheckbox/Checkbox.xhtml | 11 ++++++++
.../030-select/15-selectBooleanToggle/Toggle.xhtml | 11 ++++++++
9 files changed, 71 insertions(+), 18 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectBoolean.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectBoolean.java
index 9fa97a3..a9a708f 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectBoolean.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectBoolean.java
@@ -76,6 +76,8 @@ public abstract class AbstractUISelectBoolean extends UISelectBoolean
public abstract void setItemLabel(String itemLabel);
+ public abstract String getItemImage();
+
@Override
public abstract String getLabel();
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 21a1976..1275917 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
@@ -83,6 +83,7 @@ public class SelectBooleanCheckboxRenderer extends MessageLayoutRendererBase {
final boolean disabled = select.isDisabled();
final LabelWithAccessKey label = new LabelWithAccessKey(select, true);
final String itemLabel = select.getItemLabel();
+ final String itemImage = select.getItemImage();
final Markup markup = select.getMarkup();
writer.startElement(HtmlElements.DIV);
@@ -124,6 +125,12 @@ public class SelectBooleanCheckboxRenderer extends MessageLayoutRendererBase {
AccessKeyLogger.addAccessKey(facesContext, label.getAccessKey(), clientId);
}
writer.writeAttribute(HtmlAttributes.FOR, fieldId, false);
+ if(itemImage != null) {
+ writer.startElement(HtmlElements.IMG);
+ writer.writeAttribute(HtmlAttributes.SRC, itemImage, true);
+ writer.writeAttribute(HtmlAttributes.ALT, "", false);
+ writer.endElement(HtmlElements.IMG);
+ }
if (itemLabel != null && select.getLabel() == null && select.getAccessKey() != null) {
if (itemLabel.contains(Character.toString(select.getAccessKey()))) {
HtmlRendererUtils.writeLabelWithAccessKey(writer, label);
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 3d48299..9dfcdfb 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
@@ -30,6 +30,7 @@ import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverter;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverterMessage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasHelp;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabelLayout;
@@ -77,5 +78,5 @@ public interface SelectBooleanCheckboxTagDeclaration extends HasValidator,
HasValueChangeListener, HasIdBindingAndRendered, HasValue, IsDisabled,
HasTip, HasHelp, IsReadonly, HasTabIndex, IsRequiredForSelect, HasConverter, IsFocus,
HasValidatorMessage, HasRequiredMessageForSelect, HasConverterMessage, IsVisual,
- HasAccessKey, HasItemLabel, HasLabel, HasLabelLayout {
+ HasAccessKey, HasItemLabel, HasItemImage, HasLabel, HasLabelLayout {
}
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 847d686..ad775ea 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
@@ -30,6 +30,7 @@ import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverter;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverterMessage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasHelp;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabelLayout;
@@ -77,5 +78,5 @@ public interface SelectBooleanToggleTagDeclaration extends HasValidator,
HasValueChangeListener, HasIdBindingAndRendered, HasValue, IsDisabled,
HasTip, HasHelp, IsReadonly, HasTabIndex, IsRequiredForSelect, HasConverter, IsFocus,
HasValidatorMessage, HasRequiredMessageForSelect, HasConverterMessage, IsVisual,
- HasAccessKey, HasItemLabel, HasLabel, HasLabelLayout {
+ HasAccessKey, HasItemLabel, HasItemImage, HasLabel, HasLabelLayout {
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemTagDeclaration.java
index a512786..b160aa5 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemTagDeclaration.java
@@ -26,6 +26,7 @@ import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasBinding;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasId;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
@@ -40,7 +41,7 @@ import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
uiComponent = "org.apache.myfaces.tobago.component.UISelectItem",
uiComponentFacesClass = "javax.faces.component.UISelectItem",
allowedChildComponenents = "NONE")
-public interface SelectItemTagDeclaration extends HasBinding, HasId, IsVisual, HasItemLabel, HasTip {
+public interface SelectItemTagDeclaration extends HasBinding, HasId, IsVisual, HasItemLabel, HasItemImage, HasTip {
/**
* Description of an item, might be rendered as a tool tip.
@@ -75,11 +76,4 @@ public interface SelectItemTagDeclaration extends HasBinding, HasId, IsVisual, H
type = "javax.faces.model.SelectItem",
expression = DynamicExpression.VALUE_EXPRESSION_REQUIRED)
void setValue(String value);
-
- /**
- * Image to be displayed to the user for this option.
- */
- @TagAttribute
- @UIComponentTagAttribute()
- void setItemImage(String itemImage);
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemsTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemsTagDeclaration.java
index 8f532ac..bfc6922 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemsTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectItemsTagDeclaration.java
@@ -26,6 +26,7 @@ import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasBinding;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasId;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasItemLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
@@ -40,7 +41,7 @@ import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
uiComponentFacesClass = "javax.faces.component.UISelectItems",
isComponentAlreadyDefined = false,
allowedChildComponenents = "NONE")
-public interface SelectItemsTagDeclaration extends HasId, HasBinding, HasItemLabel, HasTip {
+public interface SelectItemsTagDeclaration extends HasId, HasBinding, HasItemLabel, HasItemImage, HasTip {
/**
* Value binding expression pointing at a List or array of SelectItem instances containing
@@ -74,11 +75,4 @@ public interface SelectItemsTagDeclaration extends HasId, HasBinding, HasItemLab
@TagAttribute
@UIComponentTagAttribute(type = {"java.lang.Object"})
void setItemValue(String itemValue);
-
- /**
- * Image to be displayed to the user for this option.
- */
- @TagAttribute
- @UIComponentTagAttribute()
- void setItemImage(String itemImage);
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasItemImage.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasItemImage.java
new file mode 100644
index 0000000..df39d73
--- /dev/null
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasItemImage.java
@@ -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.
+ */
+
+package org.apache.myfaces.tobago.internal.taglib.declaration;
+
+import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
+import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
+
+public interface HasItemImage {
+ /**
+ * Image to be displayed to the user for this option.
+ */
+ @TagAttribute
+ @UIComponentTagAttribute()
+ void setItemImage(String itemImage);
+}
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/10-selectBooleanCheckbox/Checkbox.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/10-selectBooleanCheckbox/Checkbox.xhtml
index 0e5b021..40f4bd1 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/10-selectBooleanCheckbox/Checkbox.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/10-selectBooleanCheckbox/Checkbox.xhtml
@@ -74,4 +74,15 @@
</tc:selectBooleanCheckbox>
<tc:out id="outputF" label="Value is" value="#{selectBooleanCheckboxController.f}"/>
</tc:section>
+
+ <tc:section label="Images">
+ <pre><code class="language-markup"><tc:selectBooleanCheckbox itemLabel="Japanese Yen" itemImage="#{request.contextPath}/image/JPY-14.png"/>
+<tc:selectBooleanCheckbox itemLabel="Trinidad & Tobago Dollar" itemImage="#{request.contextPath}/image/TTD-14.png"/>
+<tc:selectBooleanCheckbox itemLabel="US Dollar" itemImage="#{request.contextPath}/image/USD-14.png"/>
+<tc:selectBooleanCheckbox itemLabel="Euro" itemImage="#{request.contextPath}/image/EUR-14.png"/></code></pre>
+ <tc:selectBooleanCheckbox itemLabel="Japanese Yen" itemImage="#{request.contextPath}/image/JPY-14.png"/>
+ <tc:selectBooleanCheckbox itemLabel="Trinidad & Tobago Dollar" itemImage="#{request.contextPath}/image/TTD-14.png"/>
+ <tc:selectBooleanCheckbox itemLabel="US Dollar" itemImage="#{request.contextPath}/image/USD-14.png"/>
+ <tc:selectBooleanCheckbox itemLabel="Euro" itemImage="#{request.contextPath}/image/EUR-14.png"/>
+ </tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/15-selectBooleanToggle/Toggle.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/15-selectBooleanToggle/Toggle.xhtml
index ed0de9a..c4ce4d4 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/15-selectBooleanToggle/Toggle.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/15-selectBooleanToggle/Toggle.xhtml
@@ -74,4 +74,15 @@
</tc:selectBooleanToggle>
<tc:out id="outputF" label="Value is" value="#{selectBooleanToggleController.f}"/>
</tc:section>
+
+ <tc:section label="Images">
+ <pre><code class="language-markup"><tc:selectBooleanToggle itemLabel="Japanese Yen" itemImage="#{request.contextPath}/image/JPY-14.png"/>
+<tc:selectBooleanToggle itemLabel="Trinidad & Tobago Dollar" itemImage="#{request.contextPath}/image/TTD-14.png"/>
+<tc:selectBooleanToggle itemLabel="US Dollar" itemImage="#{request.contextPath}/image/USD-14.png"/>
+<tc:selectBooleanToggle itemLabel="Euro" itemImage="#{request.contextPath}/image/EUR-14.png"/></code></pre>
+ <tc:selectBooleanToggle itemLabel="Japanese Yen" itemImage="#{request.contextPath}/image/JPY-14.png"/>
+ <tc:selectBooleanToggle itemLabel="Trinidad & Tobago Dollar" itemImage="#{request.contextPath}/image/TTD-14.png"/>
+ <tc:selectBooleanToggle itemLabel="US Dollar" itemImage="#{request.contextPath}/image/USD-14.png"/>
+ <tc:selectBooleanToggle itemLabel="Euro" itemImage="#{request.contextPath}/image/EUR-14.png"/>
+ </tc:section>
</ui:composition>