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 2013/09/23 17:52:43 UTC

svn commit: r1525631 - in /myfaces/tobago/branches/tobago-1.5.x: tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ tobago-core/src/main/java/org/apache...

Author: lofwyr
Date: Mon Sep 23 15:52:43 2013
New Revision: 1525631

URL: http://svn.apache.org/r1525631
Log:
TOBAGO-1283: New attribute "placeholder" for input fields

Added:
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITextarea.java
      - copied, changed from r1524192, myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasPlaceholder.java
Modified:
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlAttributes.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/webapp/content/01-basic/basic.xhtml
    myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/DateExtensionTag.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/InExtensionTag.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java
    myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/style/style.css
    myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-in.js

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIInput.java Mon Sep 23 15:52:43 2013
@@ -37,4 +37,6 @@ public abstract class AbstractUIInput ex
 
   public abstract Integer getTabIndex();
 
+  public abstract String getPlaceholder();
+
 }

Copied: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITextarea.java (from r1524192, myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java)
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITextarea.java?p2=myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITextarea.java&p1=myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java&r1=1524192&r2=1525631&rev=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITextarea.java Mon Sep 23 15:52:43 2013
@@ -25,21 +25,10 @@ import javax.faces.convert.Converter;
 import javax.faces.convert.DateTimeConverter;
 import java.util.TimeZone;
 
-public abstract class AbstractUITime extends AbstractUIInput {
+public abstract class AbstractUITextarea extends AbstractUIInput {
 
   @Override
-  public Converter getConverter() {
-    Converter converter = super.getConverter();
-    if (converter == null) {
-      // setting required default converter
-      Application application
-          = FacesContext.getCurrentInstance().getApplication();
-      DateTimeConverter dateTimeConverter
-          = (DateTimeConverter) application.createConverter(DateTimeConverter.CONVERTER_ID);
-      dateTimeConverter.setPattern("HH:mm");
-      dateTimeConverter.setTimeZone(TimeZone.getDefault());
-      setConverter(dateTimeConverter);
-    }
-    return converter;
+  public String getPlaceholder() {
+    return null;
   }
 }

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITime.java Mon Sep 23 15:52:43 2013
@@ -42,4 +42,9 @@ public abstract class AbstractUITime ext
     }
     return converter;
   }
+
+  @Override
+  public String getPlaceholder() {
+    return null;
+  }
 }

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/DateTagDeclaration.java Mon Sep 23 15:52:43 2013
@@ -29,6 +29,7 @@ import org.apache.myfaces.tobago.interna
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabelAndAccessKey;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasMarkup;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasPlaceholder;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
 import org.apache.myfaces.tobago.internal.taglib.declaration.InputTagDeclaration;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsDisabled;
@@ -53,6 +54,5 @@ import org.apache.myfaces.tobago.interna
 public interface DateTagDeclaration
     extends InputTagDeclaration, HasIdBindingAndRendered, IsReadonly,
     IsDisabled, HasConverter, IsDeprecatedInline, HasLabelAndAccessKey,
-    HasTip, IsRequired, HasMarkup, HasCurrentMarkup {
-
+    HasTip, IsRequired, HasMarkup, HasCurrentMarkup, HasPlaceholder {
 }

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/InTagDeclaration.java Mon Sep 23 15:52:43 2013
@@ -30,11 +30,12 @@ import org.apache.myfaces.tobago.interna
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasInputLabel;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasMarkup;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasPlaceholder;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasSuggestMethod;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
 import org.apache.myfaces.tobago.internal.taglib.declaration.InputTagDeclaration;
-import org.apache.myfaces.tobago.internal.taglib.declaration.IsDisabled;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsDeprecatedInline;
+import org.apache.myfaces.tobago.internal.taglib.declaration.IsDisabled;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsPassword;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsReadonly;
 import org.apache.myfaces.tobago.internal.taglib.declaration.IsRequired;
@@ -57,6 +58,6 @@ import org.apache.myfaces.tobago.interna
         })
 public interface InTagDeclaration
     extends HasIdBindingAndRendered, HasConverter, IsReadonly, IsDisabled, IsRequired, HasTip, IsPassword,
-    HasSuggestMethod, HasMarkup, HasCurrentMarkup, InputTagDeclaration, HasInputLabel, IsDeprecatedInline {
-
+    HasSuggestMethod, HasMarkup, HasCurrentMarkup, InputTagDeclaration, HasInputLabel, IsDeprecatedInline,
+    HasPlaceholder {
 }

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TextareaTagDeclaration.java Mon Sep 23 15:52:43 2013
@@ -41,7 +41,7 @@ import org.apache.myfaces.tobago.interna
 @Tag(name = "textarea")
 @UIComponentTag(
     uiComponent = "org.apache.myfaces.tobago.component.UITextarea",
-    uiComponentBaseClass = "org.apache.myfaces.tobago.internal.component.AbstractUIInput",
+    uiComponentBaseClass = "org.apache.myfaces.tobago.internal.component.AbstractUITextarea",
     rendererType = RendererTypes.TEXTAREA,
     allowedChildComponenents = "NONE")
 public interface TextareaTagDeclaration

Added: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasPlaceholder.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasPlaceholder.java?rev=1525631&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasPlaceholder.java (added)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasPlaceholder.java Mon Sep 23 15:52:43 2013
@@ -0,0 +1,37 @@
+/*
+ * 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 HasPlaceholder {
+
+  /**
+   * Displays a short text in the input field, that describes the meaning of this field.
+   * This is part of HTML 5, the theme should emulate the behaviour, when the browser doesn't support it.
+   * <p/>
+   * The text will not be displayed, when the input field is readonly or disabled.
+   * @param placeholder The text to display
+   */
+  @TagAttribute
+  @UIComponentTagAttribute
+  void setPlaceholder(String placeholder);
+}

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlAttributes.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlAttributes.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlAttributes.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/HtmlAttributes.java Mon Sep 23 15:52:43 2013
@@ -60,6 +60,7 @@ public final class HtmlAttributes {
   public static final String ONLOAD = "onload";
   public static final String ONMOUSEOVER = "onmouseover";
   public static final String ONMOUSEOUT = "onmouseout";
+  public static final String PLACEHOLDER = "placeholder";
   public static final String READONLY = "readonly";
   public static final String REL = "rel";
   public static final String ROWS = "rows";

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/overview/OverviewController.java Mon Sep 23 15:52:43 2013
@@ -80,6 +80,8 @@ public class OverviewController implemen
 
   private String suggestInput;
 
+  private String placeholder;
+
   private String basicArea = "";
 
   private Date basicDate = new Date();
@@ -353,6 +355,14 @@ public class OverviewController implemen
     this.suggestInput = suggestInput;
   }
 
+  public String getPlaceholder() {
+    return placeholder;
+  }
+
+  public void setPlaceholder(String placeholder) {
+    this.placeholder = placeholder;
+  }
+
   public String getBasicArea() {
     return basicArea;
   }

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/webapp/content/01-basic/basic.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/webapp/content/01-basic/basic.xhtml?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/webapp/content/01-basic/basic.xhtml (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-example/tobago-example-demo/src/main/webapp/content/01-basic/basic.xhtml Mon Sep 23 15:52:43 2013
@@ -26,7 +26,7 @@
 
   <tc:panel>
     <f:facet name="layout">
-      <tc:gridLayout rows="auto;2*;3*;auto;2*;2*;auto;2*;2*"/>
+      <tc:gridLayout rows="auto;3*;6*;auto;3*;4*;auto;3*;4*"/>
       <!--<tc:gridLayout border="0" rows="*;*;*;*;*;*;*;*;*;*"/>-->
     </f:facet>
 
@@ -44,7 +44,7 @@
 
       <tc:panel>
         <f:facet name="layout">
-          <tc:gridLayout rows="auto;auto;auto;auto"/>
+          <tc:gridLayout rows="auto;auto;auto;auto;auto"/>
         </f:facet>
         <tx:in value="#{overviewController.basicInput}" required="true" tabIndex="1"
                label="#{overviewBundle.basic_textboxLabel}" tip="#{overviewBundle.basic_textboxTip}"/>
@@ -58,6 +58,8 @@
         </tx:date>
         <tx:time label="#{overviewBundle.basic_timeLabel}" tabIndex="5"
                  value="#{overviewController.basicTime}"/>
+        <tx:in value="#{overviewController.placeholder}" tabIndex="6"
+               label="Placeholder" placeholder="Search..."/>
       </tc:panel>
 
       <tx:textarea value="#{overviewController.basicArea}" tabIndex="2"

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/DateExtensionTag.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/DateExtensionTag.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/DateExtensionTag.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/DateExtensionTag.java Mon Sep 23 15:52:43 2013
@@ -28,6 +28,8 @@ import org.apache.myfaces.tobago.interna
 import org.apache.myfaces.tobago.internal.taglib.DateTag;
 import org.apache.myfaces.tobago.internal.taglib.FormTag;
 
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
 import javax.servlet.jsp.JspException;
 
 /*
@@ -55,32 +57,33 @@ import javax.servlet.jsp.JspException;
 @ExtensionTag(baseClassName = "org.apache.myfaces.tobago.internal.taglib.DateTag")
 public class DateExtensionTag extends TobagoExtensionBodyTagSupport {
 
-  private static final long serialVersionUID = 2044784791513107420L;
+  private static final long serialVersionUID = 1L;
 
-  private javax.el.ValueExpression binding;
-  private javax.el.ValueExpression converter;
-  private javax.el.MethodExpression validator;
-  private javax.el.ValueExpression disabled;
-  private javax.el.ValueExpression focus;
-  private javax.el.ValueExpression label;
-  private javax.el.ValueExpression readonly;
-  private javax.el.ValueExpression rendered;
-  private javax.el.ValueExpression required;
-  private javax.el.ValueExpression tip;
-  private javax.el.ValueExpression value;
-  private javax.el.MethodExpression valueChangeListener;
-  private javax.el.ValueExpression inline;
-  private javax.el.ValueExpression onchange;
-  private javax.el.ValueExpression tabIndex;
-  private javax.el.ValueExpression markup;
-  private javax.el.ValueExpression validatorMessage;
-  private javax.el.ValueExpression converterMessage;
-  private javax.el.ValueExpression requiredMessage;  
+  private ValueExpression binding;
+  private ValueExpression converter;
+  private MethodExpression validator;
+  private ValueExpression disabled;
+  private ValueExpression focus;
+  private ValueExpression label;
+  private ValueExpression readonly;
+  private ValueExpression rendered;
+  private ValueExpression required;
+  private ValueExpression tip;
+  private ValueExpression placeholder;
+  private ValueExpression value;
+  private MethodExpression valueChangeListener;
+  private ValueExpression inline;
+  private ValueExpression onchange;
+  private ValueExpression tabIndex;
+  private ValueExpression markup;
+  private ValueExpression validatorMessage;
+  private ValueExpression converterMessage;
+  private ValueExpression requiredMessage;
   private String fieldId;
   private String pickerId;
   private String formId;
 
-  private javax.el.ValueExpression labelWidth;
+  private ValueExpression labelWidth;
   private LabelExtensionTag labelTag;
   private DateTag dateTag;
 
@@ -121,6 +124,9 @@ public class DateExtensionTag extends To
     if (valueChangeListener != null) {
       dateTag.setValueChangeListener(valueChangeListener);
     }
+    if (placeholder != null) {
+      dateTag.setPlaceholder(placeholder);
+    }
     if (binding != null) {
       dateTag.setBinding(binding);
     }
@@ -226,6 +232,7 @@ public class DateExtensionTag extends To
     rendered = null;
     required = null;
     tip = null;
+    placeholder = null;
     value = null;
     valueChangeListener = null;
     onchange = null;
@@ -246,7 +253,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Object")
-  public void setValue(javax.el.ValueExpression value) {
+  public void setValue(ValueExpression value) {
     this.value = value;
   }
 
@@ -263,7 +270,7 @@ public class DateExtensionTag extends To
           type = {},
           expression = DynamicExpression.METHOD_BINDING_REQUIRED,
           methodSignature = "javax.faces.event.ValueChangeEvent")
-  public void setValueChangeListener(javax.el.MethodExpression valueChangeListener) {
+  public void setValueChangeListener(MethodExpression valueChangeListener) {
     this.valueChangeListener = valueChangeListener;
   }
 
@@ -273,7 +280,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setLabel(javax.el.ValueExpression label) {
+  public void setLabel(ValueExpression label) {
     this.label = label;
   }
 
@@ -282,7 +289,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setOnchange(javax.el.ValueExpression onchange) {
+  public void setOnchange(ValueExpression onchange) {
     this.onchange = onchange;
   }
 
@@ -291,7 +298,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setFocus(javax.el.ValueExpression focus) {
+  public void setFocus(ValueExpression focus) {
     this.focus = focus;
   }
 
@@ -301,7 +308,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "javax.faces.component.UIComponent")
-  public void setBinding(javax.el.ValueExpression binding) {
+  public void setBinding(ValueExpression binding) {
     this.binding = binding;
   }
 
@@ -311,7 +318,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "true")
-  public void setRendered(javax.el.ValueExpression rendered) {
+  public void setRendered(ValueExpression rendered) {
     this.rendered = rendered;
   }
 
@@ -327,7 +334,7 @@ public class DateExtensionTag extends To
   @TagAttribute
   @UIComponentTagAttribute(type = "javax.faces.convert.Converter",
       expression = DynamicExpression.VALUE_BINDING)
-  public void setConverter(javax.el.ValueExpression converter) {
+  public void setConverter(ValueExpression converter) {
     this.converter = converter;
   }
 
@@ -341,7 +348,7 @@ public class DateExtensionTag extends To
   @UIComponentTagAttribute(type = {},
       expression = DynamicExpression.METHOD_BINDING,
       methodSignature = { "javax.faces.context.FacesContext", "javax.faces.component.UIComponent", "java.lang.Object" })
-  public void setValidator(javax.el.MethodExpression validator) {
+  public void setValidator(MethodExpression validator) {
     this.validator = validator;
   }
 
@@ -352,7 +359,7 @@ public class DateExtensionTag extends To
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
   @Deprecated
-  public void setInline(javax.el.ValueExpression inline) {
+  public void setInline(ValueExpression inline) {
     this.inline = inline;
   }
 
@@ -361,7 +368,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setReadonly(javax.el.ValueExpression readonly) {
+  public void setReadonly(ValueExpression readonly) {
     this.readonly = readonly;
   }
 
@@ -370,7 +377,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute()
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setDisabled(javax.el.ValueExpression disabled) {
+  public void setDisabled(ValueExpression disabled) {
     this.disabled = disabled;
   }
 
@@ -381,7 +388,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setRequired(javax.el.ValueExpression required) {
+  public void setRequired(ValueExpression required) {
     this.required = required;
   }
 
@@ -390,10 +397,20 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setTip(javax.el.ValueExpression tip) {
+  public void setTip(ValueExpression tip) {
     this.tip = tip;
   }
 
+  /**
+   * Displays a short text in the input field, that describes the meaning of this field.
+   * This is part of HTML 5, the theme should emulate the behaviour, when the browser doesn't support it.
+   */
+  @TagAttribute
+  @UIComponentTagAttribute()
+  public void setPlaceholder(ValueExpression placeholder) {
+    this.placeholder = placeholder;
+  }
+
    /**
    * The width for the label component. Default: 'auto'.
    * This value is used in the gridLayouts columns attribute.
@@ -401,7 +418,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setLabelWidth(javax.el.ValueExpression labelWidth) {
+  public void setLabelWidth(ValueExpression labelWidth) {
     this.labelWidth = labelWidth;
   }
 
@@ -411,13 +428,13 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.String[]", defaultValue = "none")
-  public void setMarkup(javax.el.ValueExpression markup) {
+  public void setMarkup(ValueExpression markup) {
     this.markup = markup;
   }
 
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Integer")
-  public void setTabIndex(javax.el.ValueExpression tabIndex) {
+  public void setTabIndex(ValueExpression tabIndex) {
     this.tabIndex = tabIndex;
   }
 
@@ -426,7 +443,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setValidatorMessage(javax.el.ValueExpression validatorMessage) {
+  public void setValidatorMessage(ValueExpression validatorMessage) {
     this.validatorMessage = validatorMessage;
   }
 
@@ -435,7 +452,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setConverterMessage(javax.el.ValueExpression converterMessage) {
+  public void setConverterMessage(ValueExpression converterMessage) {
     this.converterMessage = converterMessage;
   }
 
@@ -444,7 +461,7 @@ public class DateExtensionTag extends To
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setRequiredMessage(javax.el.ValueExpression requiredMessage) {
+  public void setRequiredMessage(ValueExpression requiredMessage) {
     this.requiredMessage = requiredMessage;
   }
 

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/InExtensionTag.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/InExtensionTag.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/InExtensionTag.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-extension/tobago-taglib-extension/src/main/java-jsf-1.2/org/apache/myfaces/tobago/internal/taglib/extension/InExtensionTag.java Mon Sep 23 15:52:43 2013
@@ -28,6 +28,8 @@ import org.apache.myfaces.tobago.interna
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.el.MethodExpression;
+import javax.el.ValueExpression;
 import javax.servlet.jsp.JspException;
 
 /**
@@ -52,29 +54,30 @@ import javax.servlet.jsp.JspException;
 @ExtensionTag(baseClassName = "org.apache.myfaces.tobago.internal.taglib.InTag")
 public class InExtensionTag extends TobagoExtensionBodyTagSupport {
 
-  private javax.el.ValueExpression binding;
-  private javax.el.ValueExpression converter;
-  private javax.el.MethodExpression validator;
-  private javax.el.ValueExpression disabled;
-  private javax.el.ValueExpression focus;
-  private javax.el.ValueExpression label;
-  private javax.el.ValueExpression password;
-  private javax.el.ValueExpression readonly;
-  private javax.el.ValueExpression rendered;
-  private javax.el.ValueExpression required;
-  private javax.el.ValueExpression tip;
-  private javax.el.ValueExpression value;
-  private javax.el.MethodExpression valueChangeListener;
-  private javax.el.ValueExpression onchange;
-  private javax.el.MethodExpression suggestMethod;
-  private javax.el.ValueExpression suggestMinChars;
-  private javax.el.ValueExpression suggestDelay;
-  private javax.el.ValueExpression markup;
-  private javax.el.ValueExpression labelWidth;
-  private javax.el.ValueExpression tabIndex;
-  private javax.el.ValueExpression validatorMessage;
-  private javax.el.ValueExpression converterMessage;
-  private javax.el.ValueExpression requiredMessage;
+  private ValueExpression binding;
+  private ValueExpression converter;
+  private MethodExpression validator;
+  private ValueExpression disabled;
+  private ValueExpression focus;
+  private ValueExpression label;
+  private ValueExpression password;
+  private ValueExpression readonly;
+  private ValueExpression rendered;
+  private ValueExpression required;
+  private ValueExpression tip;
+  private ValueExpression placeholder;
+  private ValueExpression value;
+  private MethodExpression valueChangeListener;
+  private ValueExpression onchange;
+  private MethodExpression suggestMethod;
+  private ValueExpression suggestMinChars;
+  private ValueExpression suggestDelay;
+  private ValueExpression markup;
+  private ValueExpression labelWidth;
+  private ValueExpression tabIndex;
+  private ValueExpression validatorMessage;
+  private ValueExpression converterMessage;
+  private ValueExpression requiredMessage;
   private String fieldId;
 
   private LabelExtensionTag labelTag;
@@ -115,6 +118,9 @@ public class InExtensionTag extends Toba
     if (valueChangeListener != null) {
       inTag.setValueChangeListener(valueChangeListener);
     }
+    if (placeholder != null) {
+      inTag.setPlaceholder(placeholder);
+    }
     if (label != null) {
       inTag.setLabel(label);
     }
@@ -203,6 +209,7 @@ public class InExtensionTag extends Toba
     rendered = null;
     required = null;
     tip = null;
+    placeholder = null;
     value = null;
     valueChangeListener = null;
     onchange = null;
@@ -225,7 +232,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(defaultValue = "none", type = "java.lang.String[]")
-  public void setMarkup(javax.el.ValueExpression markup) {
+  public void setMarkup(ValueExpression markup) {
     this.markup = markup;
   }
 
@@ -234,7 +241,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Object")
-  public void setValue(javax.el.ValueExpression value) {
+  public void setValue(ValueExpression value) {
     this.value = value;
   }
 
@@ -251,7 +258,7 @@ public class InExtensionTag extends Toba
       type = {},
       expression = DynamicExpression.METHOD_BINDING_REQUIRED,
       methodSignature = "javax.faces.event.ValueChangeEvent")
-  public void setValueChangeListener(javax.el.MethodExpression valueChangeListener) {
+  public void setValueChangeListener(MethodExpression valueChangeListener) {
     this.valueChangeListener = valueChangeListener;
   }
 
@@ -261,7 +268,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setLabel(javax.el.ValueExpression label) {
+  public void setLabel(ValueExpression label) {
     this.label = label;
   }
 
@@ -270,7 +277,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setFocus(javax.el.ValueExpression focus) {
+  public void setFocus(ValueExpression focus) {
     this.focus = focus;
   }
 
@@ -280,7 +287,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "javax.faces.component.UIComponent")
-  public void setBinding(javax.el.ValueExpression binding) {
+  public void setBinding(ValueExpression binding) {
     this.binding = binding;
   }
 
@@ -290,7 +297,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "true")
-  public void setRendered(javax.el.ValueExpression rendered) {
+  public void setRendered(ValueExpression rendered) {
     this.rendered = rendered;
   }
 
@@ -306,7 +313,7 @@ public class InExtensionTag extends Toba
   @TagAttribute
   @UIComponentTagAttribute(type = "javax.faces.convert.Converter",
       expression = DynamicExpression.VALUE_BINDING)
-  public void setConverter(javax.el.ValueExpression converter) {
+  public void setConverter(ValueExpression converter) {
     this.converter = converter;
   }
 
@@ -315,7 +322,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setOnchange(javax.el.ValueExpression onchange) {
+  public void setOnchange(ValueExpression onchange) {
     this.onchange = onchange;
   }
 
@@ -330,7 +337,7 @@ public class InExtensionTag extends Toba
   @UIComponentTagAttribute(type = {},
       expression = DynamicExpression.METHOD_BINDING_REQUIRED,
       methodSignature = "java.lang.String")
-  public void setSuggestMethod(javax.el.MethodExpression suggestMethod) {
+  public void setSuggestMethod(MethodExpression suggestMethod) {
     this.suggestMethod = suggestMethod;
   }
 
@@ -341,7 +348,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Integer", defaultValue = "1")
-  public void setSuggestMinChars(javax.el.ValueExpression suggestMinChars) {
+  public void setSuggestMinChars(ValueExpression suggestMinChars) {
     this.suggestMinChars = suggestMinChars;
   }
 
@@ -352,7 +359,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Integer", defaultValue = "300")
-  public void setSuggestDelay(javax.el.ValueExpression suggestDelay) {
+  public void setSuggestDelay(ValueExpression suggestDelay) {
     this.suggestDelay = suggestDelay;
   }
 
@@ -366,7 +373,7 @@ public class InExtensionTag extends Toba
   @UIComponentTagAttribute(type = {},
       expression = DynamicExpression.METHOD_BINDING,
       methodSignature = {"javax.faces.context.FacesContext", "javax.faces.component.UIComponent", "java.lang.Object"})
-  public void setValidator(javax.el.MethodExpression validator) {
+  public void setValidator(MethodExpression validator) {
     this.validator = validator;
   }
 
@@ -376,7 +383,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setPassword(javax.el.ValueExpression password) {
+  public void setPassword(ValueExpression password) {
     this.password = password;
   }
 
@@ -385,7 +392,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setReadonly(javax.el.ValueExpression readonly) {
+  public void setReadonly(ValueExpression readonly) {
     this.readonly = readonly;
   }
 
@@ -394,7 +401,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute()
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setDisabled(javax.el.ValueExpression disabled) {
+  public void setDisabled(ValueExpression disabled) {
     this.disabled = disabled;
   }
 
@@ -405,7 +412,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "boolean", defaultValue = "false")
-  public void setRequired(javax.el.ValueExpression required) {
+  public void setRequired(ValueExpression required) {
     this.required = required;
   }
 
@@ -414,24 +421,34 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setTip(javax.el.ValueExpression tip) {
+  public void setTip(ValueExpression tip) {
     this.tip = tip;
   }
 
   /**
+   * Displays a short text in the input field, that describes the meaning of this field.
+   * This is part of HTML 5, the theme should emulate the behaviour, when the browser doesn't support it.
+   */
+  @TagAttribute
+  @UIComponentTagAttribute()
+  public void setPlaceholder(ValueExpression placeholder) {
+    this.placeholder = placeholder;
+  }
+
+  /**
    * The width for the label component. Default: 'auto'.
    * This value is used in the gridLayouts columns attribute.
    * See gridLayout tag for valid values.
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setLabelWidth(javax.el.ValueExpression labelWidth) {
+  public void setLabelWidth(ValueExpression labelWidth) {
     this.labelWidth = labelWidth;
   }
 
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Integer")
-  public void setTabIndex(javax.el.ValueExpression tabIndex) {
+  public void setTabIndex(ValueExpression tabIndex) {
     this.tabIndex = tabIndex;
   }
 
@@ -440,7 +457,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setValidatorMessage(javax.el.ValueExpression validatorMessage) {
+  public void setValidatorMessage(ValueExpression validatorMessage) {
     this.validatorMessage = validatorMessage;
   }
 
@@ -449,7 +466,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setConverterMessage(javax.el.ValueExpression converterMessage) {
+  public void setConverterMessage(ValueExpression converterMessage) {
     this.converterMessage = converterMessage;
   }
 
@@ -458,7 +475,7 @@ public class InExtensionTag extends Toba
    */
   @TagAttribute
   @UIComponentTagAttribute()
-  public void setRequiredMessage(javax.el.ValueExpression requiredMessage) {
+  public void setRequiredMessage(ValueExpression requiredMessage) {
     this.requiredMessage = requiredMessage;
   }
 

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java Mon Sep 23 15:52:43 2013
@@ -91,6 +91,8 @@ public class InRenderer extends InputRen
             + "'");
       }
       final String type = password ? HtmlInputTypes.PASSWORD : HtmlInputTypes.TEXT;
+      final boolean readonly = ComponentUtils.getBooleanAttribute(input, Attributes.READONLY);
+      final boolean disabled = ComponentUtils.getBooleanAttribute(input, Attributes.DISABLED);
 
       // Todo: check for valid binding
       boolean renderAjaxSuggest = false;
@@ -120,8 +122,8 @@ public class InRenderer extends InputRen
       if (maxLength > 0) {
         writer.writeAttribute(HtmlAttributes.MAXLENGTH, maxLength);
       }
-      writer.writeAttribute(HtmlAttributes.READONLY, ComponentUtils.getBooleanAttribute(input, Attributes.READONLY));
-      writer.writeAttribute(HtmlAttributes.DISABLED, ComponentUtils.getBooleanAttribute(input, Attributes.DISABLED));
+      writer.writeAttribute(HtmlAttributes.READONLY, readonly);
+      writer.writeAttribute(HtmlAttributes.DISABLED, disabled);
       Integer tabIndex = input.getTabIndex();
       if (tabIndex != null) {
         writer.writeAttribute(HtmlAttributes.TABINDEX, tabIndex);
@@ -129,6 +131,11 @@ public class InRenderer extends InputRen
       Style style = new Style(facesContext, input);
       writer.writeStyleAttribute(style);
 
+      final String placeholder = input.getPlaceholder();
+      if (!disabled && !readonly && StringUtils.isNotBlank(placeholder)) {
+        writer.writeAttribute(HtmlAttributes.PLACEHOLDER, placeholder, true);
+      }
+
       HtmlRendererUtils.renderDojoDndItem(component, writer, true);
       writer.writeClassAttribute(Classes.create(input));
       /*if (component instanceof AbstractUIInput) {

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/style/style.css
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/style/style.css?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/style/style.css (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-scarborough/src/main/resources/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/style/style.css Mon Sep 23 15:52:43 2013
@@ -334,6 +334,13 @@ div.tobago-gridLayout-first-column {
   border: 2px solid #ff0000;
 }
 
+.tobago-in-placeholder {
+  position: absolute;
+  padding: 3px 4px;
+  color: #aaaaaa;
+  cursor: text;
+}
+
 .tobago-in-suggestPopup {
   position: absolute;
   overflow: hidden;

Modified: myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-in.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-in.js?rev=1525631&r1=1525630&r2=1525631&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-in.js (original)
+++ myfaces/tobago/branches/tobago-1.5.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-in.js Mon Sep 23 15:52:43 2013
@@ -339,3 +339,51 @@ Tobago.AutocompleterAjax.prototype.regis
     object.closeSuggest(false);
   });
 };
+
+// placeholder --------------------------------------------------------------------------------------------------------
+
+// adding placeholder to the feature detection
+jQuery.support.placeholder = (function(){
+  return 'placeholder' in document.createElement('input');
+})();
+
+Tobago.In.initPlaceholder = function(elements) {
+  if (!jQuery.support.placeholder) {
+    var fields = Tobago.Utils.selectWidthJQuery(elements, "[placeholder]");
+    fields.each(function () {
+      jQuery(this)
+          .on("focus", function () {
+            var input = jQuery(this);
+            var placeholder = input.next(".tobago-in-placeholder");
+            placeholder.hide();
+          })
+          .on("blur", function () {
+            var input = jQuery(this);
+            var placeholder = input.next(".tobago-in-placeholder");
+            if (placeholder.size() == 0) {
+              // lazy init, create a new one
+              placeholder = input.after("<span/>").next();
+              placeholder.addClass("tobago-in-placeholder");
+              placeholder.text(input.attr("placeholder")); // the text
+              placeholder.css(
+                  {
+                    left: input.css("left"),
+                    top: input.css("top")
+                  }
+              );
+              placeholder.on("click", function(event) {
+                jQuery(this).prev().focus();
+              });
+            }
+            if (input.val() == "") {
+              // xxx why this doesn't work?
+              // placeholder.show();
+              placeholder.css("display", "block");
+            }
+          }).trigger("blur"); // for initialization
+    });
+  }
+};
+
+Tobago.registerListener(Tobago.In.initPlaceholder, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerListener(Tobago.In.initPlaceholder, Tobago.Phase.AFTER_UPDATE);