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 2016/05/03 08:56:59 UTC

svn commit: r1742063 - in /myfaces/tobago/trunk: tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ tobago-example/tobago-example-demo/src/main/java/org...

Author: lofwyr
Date: Tue May  3 06:56:58 2016
New Revision: 1742063

URL: http://svn.apache.org/viewvc?rev=1742063&view=rev
Log:
TOBAGO-1559: Accesskey doesn't work with "labelLayout"

Modified:
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java
    myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AccessKeyController.java
    myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/65-accessKey/accessKey.xhtml
    myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/InRenderer.java
    myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/LabelLayoutRendererBase.java
    myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TextareaRenderer.java

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java Tue May  3 06:56:58 2016
@@ -19,6 +19,7 @@
 
 package org.apache.myfaces.tobago.internal.component;
 
+import org.apache.myfaces.tobago.component.SupportsAccessKey;
 import org.apache.myfaces.tobago.component.SupportsLabelLayout;
 import org.apache.myfaces.tobago.component.Visual;
 import org.apache.myfaces.tobago.util.ComponentUtils;
@@ -29,7 +30,7 @@ import java.util.Arrays;
 import java.util.Collection;
 
 public abstract class AbstractUIInput extends javax.faces.component.UIInput
-    implements SupportsLabelLayout, Visual, ClientBehaviorHolder {
+    implements SupportsAccessKey, SupportsLabelLayout, Visual, ClientBehaviorHolder {
 
   // todo generate
   private static final Collection<String> EVENT_NAMES = Arrays.asList("change");

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java Tue May  3 06:56:58 2016
@@ -24,6 +24,7 @@ import org.apache.myfaces.tobago.apt.ann
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.component.Facets;
 import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasAccessKey;
 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.HasIdBindingAndRendered;
@@ -64,7 +65,7 @@ import javax.faces.component.UIInput;
             "This facet can contain a UICommand that is invoked in a case of a change event from the component")
         })
 public interface DateTagDeclaration
-    extends HasValidator, HasValue, HasValueChangeListener, HasTabIndex, IsFocus, IsVisual,
+    extends HasAccessKey, HasValidator, HasValue, HasValueChangeListener, HasTabIndex, IsFocus, IsVisual,
     HasValidatorMessage, HasConverterMessage, HasRequiredMessage, HasIdBindingAndRendered, IsReadonly,
     IsDisabled, HasConverter, HasLabel, HasLabelLayout,
     HasTip, IsRequired, HasPlaceholder {

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java Tue May  3 06:56:58 2016
@@ -25,6 +25,7 @@ import org.apache.myfaces.tobago.apt.ann
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.component.Facets;
 import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasAccessKey;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasAutocomplete;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverter;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverterMessage;
@@ -69,7 +70,7 @@ import javax.faces.component.UIInput;
         })
 public interface InTagDeclaration
     extends HasIdBindingAndRendered, HasConverter, IsReadonly, IsDisabled, IsRequired, HasTip, IsPassword,
-    HasValidator, HasValue, HasValueChangeListener, HasTabIndex, IsFocus, IsVisual,
+    HasAccessKey, HasValidator, HasValue, HasValueChangeListener, HasTabIndex, IsFocus, IsVisual,
     HasValidatorMessage, HasConverterMessage, HasRequiredMessage, HasInputLabel, HasLabelLayout,
     HasAutocomplete, HasPlaceholder {
 

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java Tue May  3 06:56:58 2016
@@ -24,6 +24,7 @@ import org.apache.myfaces.tobago.apt.ann
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
 import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasAccessKey;
 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.HasIdBindingAndRendered;
@@ -58,7 +59,7 @@ import javax.faces.component.UIInput;
     allowedChildComponenents = "NONE")
 public interface TextareaTagDeclaration
     extends HasIdBindingAndRendered, HasConverter, IsReadonly, IsDisabled, IsRequired, HasLabel, HasLabelLayout, HasTip,
-    HasValidator, HasValue, HasValueChangeListener, HasTabIndex, IsFocus, IsVisual,
+    HasAccessKey, HasValidator, HasValue, HasValueChangeListener, HasTabIndex, IsFocus, IsVisual,
     HasValidatorMessage, HasConverterMessage, HasRequiredMessage, HasSanitize {
 
   /**

Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AccessKeyController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AccessKeyController.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AccessKeyController.java (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/AccessKeyController.java Tue May  3 06:56:58 2016
@@ -5,6 +5,7 @@ import org.apache.myfaces.tobago.compone
 import javax.enterprise.context.SessionScoped;
 import javax.inject.Named;
 import java.io.Serializable;
+import java.util.Date;
 
 @SessionScoped
 @Named
@@ -34,4 +35,8 @@ public class AccessKeyController impleme
 
     this.labelComponent = labelComponent;
   }
+
+  public Date getCurrentDate() {
+    return new Date();
+  }
 }

Modified: myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/65-accessKey/accessKey.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/65-accessKey/accessKey.xhtml?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/65-accessKey/accessKey.xhtml (original)
+++ myfaces/tobago/trunk/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/65-accessKey/accessKey.xhtml Tue May  3 06:56:58 2016
@@ -23,17 +23,14 @@
   <ui:param name="title" value="#{overviewBundle.accessKey}"/>
   <p>The <code>accessKey</code> attribute is available for many components like buttons, labels, checkboxes or links.
     A component with this attribute is accessible by the given character. The character is not case sensitive.</p>
-
-
-  <p>
-    To log the use of the accessKey attribute please configure
-    the category <code>org.apache.myfaces.tobago.internal.util.AccessKeyLogger</code> to log level "debug".
-  </p>
+  <p>To log the use of the accessKey attribute please configure
+    the category <code>org.apache.myfaces.tobago.internal.util.AccessKeyLogger</code> to log level "debug".</p>
 
   <p>The usage of accesskeys is different for every OS and browser.<br/>
     For example, in Firefox for Windows, you have to press 'Alt + Shift + key'. In Chrome it's only 'Alt + key'.
-    A complete listing can be found
-    <tc:link label="here" link="https://developer.mozilla.org/de/docs/Web/HTML/Global_attributes/accesskey"/>.</p>
+    A complete listing can be found at the
+    <tc:link label="Mozilla Developer Network"
+             link="https://developer.mozilla.org/de/docs/Web/HTML/Global_attributes/accesskey"/>.</p>
   <p>Tag Library Documentation:
     <tc:link label="&lt;tc:button/>" image="image/feather-leaf.png"
              link="#{overviewBundle.tagDocUrl}/button.html"/>
@@ -47,7 +44,6 @@
     <tc:link label="&lt;tc:label/>" image="image/feather-leaf.png"
              link="#{overviewBundle.tagDocUrl}/label.html"/></p>
 
-
   <tc:section label="Basics">
     <p>The access key is set to 'a'. Notice, that the 'A' in the label of the button has an underscore.</p>
     <pre><code class="language-markup">&lt;tc:button label="Button AccessKey" accessKey="a"></code></pre>
@@ -81,10 +77,19 @@
     </tc:button>
   </tc:section>
 
+  <tc:section label="Inputfields">
+    <tc:in label="Input" accessKey="i"/>
+    <tc:textarea label="Textarea" accessKey="t"/>
+    <tc:date label="Date" accessKey="d" value="#{accessKeyController.currentDate}">
+      <f:convertDateTime pattern="yyyy-MM-dd"/>
+    </tc:date>
+  </tc:section>
+
   <tc:section label="Label">
-    <tc:label value="Test" accessKey="e" for="@auto"/> (todo: fix, this is because of the change, that the local root element has now the clientId, need ::filed suffix)
-    <tc:in />
-    <tc:in label="Test" accessKey="s" />
-    <tc:selectBooleanCheckbox label="Test" accessKey="s" />
+    (todo: fix, this is because of the change, that the local root element has now the clientId, need ::filed suffix)
+    <tc:label value="Test" accessKey="e" for="@auto"/>
+    <tc:in id="in1" />
+    <!--<tc:in label="Test" accessKey="s" />-->
+    <!--<tc:selectBooleanCheckbox label="Test" accessKey="s" />-->
   </tc:section>
 </ui:composition>

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/InRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/InRenderer.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/InRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/InRenderer.java Tue May  3 06:56:58 2016
@@ -21,6 +21,7 @@ package org.apache.myfaces.tobago.render
 
 import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.internal.component.AbstractUIInput;
+import org.apache.myfaces.tobago.internal.util.AccessKeyLogger;
 import org.apache.myfaces.tobago.internal.util.StringUtils;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
 import org.apache.myfaces.tobago.renderkit.css.Classes;
@@ -65,6 +66,12 @@ public class InRenderer extends LabelLay
     final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
 
     writer.startElement(HtmlElements.INPUT);
+
+    if (input.getAccessKey() != null) {
+      writer.writeAttribute(HtmlAttributes.ACCESSKEY, Character.toString(input.getAccessKey()), false);
+      AccessKeyLogger.addAccessKey(facesContext, input.getAccessKey(), clientId);
+    }
+
     writer.writeAttribute(HtmlAttributes.TYPE, type);
     writer.writeNameAttribute(clientId);
     writer.writeIdAttribute(fieldId);

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/LabelLayoutRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/LabelLayoutRendererBase.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/LabelLayoutRendererBase.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/LabelLayoutRendererBase.java Tue May  3 06:56:58 2016
@@ -21,8 +21,10 @@ package org.apache.myfaces.tobago.render
 
 import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.component.LabelLayout;
+import org.apache.myfaces.tobago.component.SupportsAccessKey;
 import org.apache.myfaces.tobago.component.SupportsLabelLayout;
 import org.apache.myfaces.tobago.internal.util.StringUtils;
+import org.apache.myfaces.tobago.renderkit.LabelWithAccessKey;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
 import org.apache.myfaces.tobago.renderkit.css.CssItem;
 import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
@@ -188,8 +190,12 @@ public abstract class LabelLayoutRendere
       writer.startElement(HtmlElements.LABEL);
       writer.writeAttribute(HtmlAttributes.FOR, component.getClientId(), false);
       writer.writeClassAttribute(TobagoClass.LABEL, BootstrapClass.FORM_CONTROL_LABEL);
-      // todo: label with accesskey
-      writer.writeText(label);
+      if (component instanceof SupportsAccessKey) {
+        LabelWithAccessKey labelWithAccessKey = new LabelWithAccessKey((SupportsAccessKey) component);
+        HtmlRendererUtils.writeLabelWithAccessKey(writer, labelWithAccessKey);
+      } else {
+        writer.writeText(label);
+      }
       writer.endElement(HtmlElements.LABEL);
     }
   }

Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TextareaRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TextareaRenderer.java?rev=1742063&r1=1742062&r2=1742063&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TextareaRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/TextareaRenderer.java Tue May  3 06:56:58 2016
@@ -21,8 +21,9 @@ package org.apache.myfaces.tobago.render
 
 import org.apache.myfaces.tobago.component.UITextarea;
 import org.apache.myfaces.tobago.config.TobagoConfig;
-import org.apache.myfaces.tobago.renderkit.css.Classes;
+import org.apache.myfaces.tobago.internal.util.AccessKeyLogger;
 import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
+import org.apache.myfaces.tobago.renderkit.css.Classes;
 import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
@@ -70,6 +71,11 @@ public class TextareaRenderer extends La
     writer.writeAttribute(HtmlAttributes.REQUIRED, input.isRequired());
     writer.writeAttribute(HtmlAttributes.TABINDEX, input.getTabIndex());
 
+    if (input.getAccessKey() != null) {
+      writer.writeAttribute(HtmlAttributes.ACCESSKEY, Character.toString(input.getAccessKey()), false);
+      AccessKeyLogger.addAccessKey(facesContext, input.getAccessKey(), clientId);
+    }
+
     writer.writeClassAttribute(Classes.create(input), BootstrapClass.FORM_CONTROL, input.getCustomClass());
     writer.writeStyleAttribute(input.getStyle());
     int maxLength = -1;