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 2018/11/16 15:44:28 UTC

[myfaces-tobago] branch master updated: TOBAGO-1954 TOBAGO-1955 Add vertical mode for link and button group

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 8d718db  TOBAGO-1954 TOBAGO-1955 Add vertical mode for link and button group
8d718db is described below

commit 8d718db701c65a1c4b337d859aace238ad0486fa
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Fri Nov 16 16:44:17 2018 +0100

    TOBAGO-1954 TOBAGO-1955 Add vertical mode for link and button group
    
    Add attribute 'orientation' for <tc:links> and <tc:buttons>.
    Value could be 'horizontal' (default) and 'vertical' for vertical mode.
---
 .../internal/component/AbstractUIButtons.java      |  4 ++++
 .../tobago/internal/component/AbstractUILinks.java |  4 ++++
 .../renderkit/renderer/ButtonsRenderer.java        |  4 +++-
 .../internal/renderkit/renderer/LinksRenderer.java |  7 ++++++-
 .../taglib/component/ButtonsTagDeclaration.java    |  3 ++-
 .../taglib/component/LinksTagDeclaration.java      |  3 ++-
 .../declaration/HasOrientation.java}               | 23 +++++++++++++++++-----
 .../040-command/20-buttons/buttons.xhtml           | 20 +++++++++++++++++--
 .../20-component/040-command/25-links/links.xhtml  | 20 +++++++++++++++++--
 9 files changed, 75 insertions(+), 13 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java
index 5f2e88b..30396e5 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java
@@ -19,8 +19,12 @@
 
 package org.apache.myfaces.tobago.internal.component;
 
+import org.apache.myfaces.tobago.layout.Orientation;
+
 /**
  * {@link org.apache.myfaces.tobago.internal.taglib.component.ButtonsTagDeclaration}
  */
 public abstract class AbstractUIButtons extends AbstractUIPanelBase {
+
+  public abstract Orientation getOrientation();
 }
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUILinks.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUILinks.java
index fbdc4a0..8de772a 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUILinks.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUILinks.java
@@ -19,8 +19,12 @@
 
 package org.apache.myfaces.tobago.internal.component;
 
+import org.apache.myfaces.tobago.layout.Orientation;
+
 /**
  * {@link org.apache.myfaces.tobago.internal.taglib.component.LinksTagDeclaration}
  */
 public abstract class AbstractUILinks extends AbstractUIPanelBase {
+
+  public abstract Orientation getOrientation();
 }
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonsRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonsRenderer.java
index 39f6ce5..710c494 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonsRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonsRenderer.java
@@ -26,6 +26,7 @@ import org.apache.myfaces.tobago.internal.component.AbstractUIButton;
 import org.apache.myfaces.tobago.internal.component.AbstractUIButtons;
 import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.internal.util.JsonUtils;
+import org.apache.myfaces.tobago.layout.Orientation;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
@@ -55,7 +56,8 @@ public class ButtonsRenderer extends RendererBase {
     writer.writeClassAttribute(
         TobagoClass.BUTTONS,
         TobagoClass.BUTTONS.createMarkup(markup),
-        BootstrapClass.BTN_GROUP,
+        Orientation.vertical.equals(buttons.getOrientation())
+            ? BootstrapClass.BTN_GROUP_VERTICAL : BootstrapClass.BTN_GROUP,
         buttons.getCustomClass());
     writer.writeAttribute(HtmlAttributes.ROLE, HtmlRoleValues.GROUP.toString(), false);
     HtmlRendererUtils.writeDataAttributes(facesContext, writer, buttons);
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinksRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinksRenderer.java
index 565e04f..e88690e 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinksRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinksRenderer.java
@@ -23,6 +23,7 @@ import org.apache.myfaces.tobago.component.RendererTypes;
 import org.apache.myfaces.tobago.internal.component.AbstractUILink;
 import org.apache.myfaces.tobago.internal.component.AbstractUILinks;
 import org.apache.myfaces.tobago.internal.util.JsonUtils;
+import org.apache.myfaces.tobago.layout.Orientation;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
 import org.apache.myfaces.tobago.renderkit.css.CssItem;
@@ -45,7 +46,11 @@ public class LinksRenderer extends RendererBase {
     writer.startElement(HtmlElements.UL);
     writer.writeIdAttribute(links.getClientId(facesContext));
     writer.writeAttribute(DataAttributes.MARKUP, JsonUtils.encode(links.getMarkup()), false);
-    writer.writeClassAttribute(TobagoClass.LINKS, getExtraCssItem(), links.getCustomClass());
+    writer.writeClassAttribute(
+        TobagoClass.LINKS,
+        getExtraCssItem(),
+        Orientation.vertical.equals(links.getOrientation()) ? BootstrapClass.FLEX_COLUMN : null,
+        links.getCustomClass());
   }
 
   @Override
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonsTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonsTagDeclaration.java
index b10869d..d039c35 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonsTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonsTagDeclaration.java
@@ -23,6 +23,7 @@ import org.apache.myfaces.tobago.apt.annotation.Tag;
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.component.RendererTypes;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasOrientation;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
 
@@ -44,6 +45,6 @@ import javax.faces.component.UIPanel;
     })
 
 public interface ButtonsTagDeclaration
-    extends HasIdBindingAndRendered, IsVisual, HasTip {
+    extends HasIdBindingAndRendered, IsVisual, HasTip, HasOrientation {
 
 }
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 9f077c5..2d0f917 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
@@ -23,6 +23,7 @@ import org.apache.myfaces.tobago.apt.annotation.Tag;
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.component.RendererTypes;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasOrientation;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
 
@@ -42,5 +43,5 @@ import javax.faces.component.UIPanel;
         "javax.faces.component.behavior.ClientBehaviorHolder"
     },
     rendererType = {RendererTypes.LINKS, RendererTypes.LINKS_INSIDE_BAR})
-public interface LinksTagDeclaration extends HasIdBindingAndRendered, IsVisual, HasTip {
+public interface LinksTagDeclaration extends HasIdBindingAndRendered, IsVisual, HasTip, HasOrientation {
 }
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasOrientation.java
similarity index 56%
copy from tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java
copy to tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasOrientation.java
index 5f2e88b..1c55495 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIButtons.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasOrientation.java
@@ -17,10 +17,23 @@
  * under the License.
  */
 
-package org.apache.myfaces.tobago.internal.component;
+package org.apache.myfaces.tobago.internal.taglib.declaration;
 
-/**
- * {@link org.apache.myfaces.tobago.internal.taglib.component.ButtonsTagDeclaration}
- */
-public abstract class AbstractUIButtons extends AbstractUIPanelBase {
+import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
+import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
+import org.apache.myfaces.tobago.layout.Orientation;
+
+public interface HasOrientation {
+
+  /**
+   * Set the orientation of the component.
+   * Allowed values: horizontal, vertical
+   */
+  @TagAttribute
+  @UIComponentTagAttribute(
+      type = "org.apache.myfaces.tobago.layout.Orientation",
+      allowedValues = {
+          Orientation.HORIZONTAL, Orientation.VERTICAL
+      })
+  void setOrientation(String orientation);
 }
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/20-buttons/buttons.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/20-buttons/buttons.xhtml
index 41e2fe2..75a4b2a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/20-buttons/buttons.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/20-buttons/buttons.xhtml
@@ -25,9 +25,11 @@
   <p>Buttons can be grouped with the <code class="language-markup">&lt;tc:buttons/></code> tag.
     Just add some <code class="language-markup">&lt;tc:button/></code> tags.</p>
   <p>Tag Library Documentation:
-    <tc:link label="&lt;tc:buttons/>" image="#{request.contextPath}/image/feather-leaf.png" link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/buttons.html"/>
+    <tc:link label="&lt;tc:buttons/>" image="#{request.contextPath}/image/feather-leaf.png"
+             link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/buttons.html"/>
     |
-    <tc:link label="&lt;tc:button/>" image="#{request.contextPath}/image/feather-leaf.png" link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/button.html"/></p>
+    <tc:link label="&lt;tc:button/>" image="#{request.contextPath}/image/feather-leaf.png"
+             link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/button.html"/></p>
 
   <tc:section label="Basics">
     <p>A simple example with three buttons.</p>
@@ -80,4 +82,18 @@
       <tc:button label="Right"/>
     </tc:buttons>
   </tc:section>
+
+  <tc:section label="Vertical">
+    <p>Vertical link group.</p>
+    <pre><code class="language-markup">&lt;tc:buttons orientation="vertical">
+  &lt;tc:button label="Left"/>
+  &lt;tc:button label="Center"/>
+  &lt;tc:button label="Right"/>
+&lt;/tc:buttons></code></pre>
+    <tc:buttons orientation="vertical">
+      <tc:button label="Left"/>
+      <tc:button label="Center"/>
+      <tc:button label="Right"/>
+    </tc:buttons>
+  </tc:section>
 </ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/25-links/links.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/25-links/links.xhtml
index 37e39f2..8540d60 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/25-links/links.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/040-command/25-links/links.xhtml
@@ -30,9 +30,11 @@
   <tc:link label="Tag Library Documentation" image="#{request.contextPath}/image/feather-leaf.png"
            link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/buttons.html"/>
   <p>Tag Library Documentation:
-    <tc:link label="&lt;tc:links/>" image="#{request.contextPath}/image/feather-leaf.png" link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/links.html"/>
+    <tc:link label="&lt;tc:links/>" image="#{request.contextPath}/image/feather-leaf.png"
+             link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/links.html"/>
     |
-    <tc:link label="&lt;tc:link/>" image="#{request.contextPath}/image/feather-leaf.png" link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/link.html"/></p>
+    <tc:link label="&lt;tc:link/>" image="#{request.contextPath}/image/feather-leaf.png"
+             link="#{demoBundle.tagDocUrl}/#{info.stableVersion}/tld/tc/link.html"/></p>
 
   <tc:section label="Basics">
     <p>A simple example with three links.</p>
@@ -73,4 +75,18 @@
       <tc:link label="Right"/>
     </tc:links>
   </tc:section>
+
+  <tc:section label="Vertical">
+    <p>Vertical link group.</p>
+    <pre><code class="language-markup">&lt;tc:links orientation="vertical">
+  &lt;tc:link label="Left"/>
+  &lt;tc:link label="Center"/>
+  &lt;tc:link label="Right"/>
+&lt;/tc:links></code></pre>
+    <tc:links orientation="vertical">
+      <tc:link label="Left"/>
+      <tc:link label="Center"/>
+      <tc:link label="Right"/>
+    </tc:links>
+  </tc:section>
 </ui:composition>