Author: ehillenius
Date: Thu Apr  5 15:37:52 2007
New Revision: 525989

URL: http://svn.apache.org/viewvc?view=rev&rev=525989
Log:
added DateLabel component

Added:
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-datetime/src/main/java/wicket/datetime/markup/html/basic/
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-datetime/src/main/java/wicket/datetime/markup/html/basic/DateLabel.java

Added: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-datetime/src/main/java/wicket/datetime/markup/html/basic/DateLabel.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-datetime/src/main/java/wicket/datetime/markup/html/basic/DateLabel.java?view=auto&rev=525989
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-datetime/src/main/java/wicket/datetime/markup/html/basic/DateLabel.java
 (added)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket-datetime/src/main/java/wicket/datetime/markup/html/basic/DateLabel.java
 Thu Apr  5 15:37:52 2007
@@ -0,0 +1,273 @@
+/*
+ * 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 wicket.datetime.markup.html.basic;
+
+import java.text.SimpleDateFormat;
+
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
+import org.joda.time.format.DateTimeFormat;
+
+import wicket.datetime.util.DateConverter;
+import wicket.datetime.util.PatternDateConverter;
+import wicket.datetime.util.StyleDateConverter;
+import wicket.markup.ComponentTag;
+import wicket.markup.MarkupStream;
+import wicket.markup.html.basic.Label;
+import wicket.model.IModel;
+import wicket.util.convert.IConverter;
+
+/**
+ * A label that is mapped to a <code>java.util.Date</code> object and that
+ * uses Joda time to format values.
+ * <p>
+ * You can provide a date pattern in two of the constructors. When not 
provided,
+ * [EMAIL PROTECTED] DateTimeFormat#shortDate()} will be used.
+ * </p>
+ * <p>
+ * A special option is applyTimeZoneDifference which is an option that says
+ * whether to correct for the difference between the client's time zone and
+ * server's time zone. This is true by default.
+ * </p>
+ * 
+ * @see DateTime
+ * @see DateTimeFormat
+ * @see DateTimeZone
+ * 
+ * @author eelcohillenius
+ */
+public class DateLabel extends Label
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Creates a new DateLabel defaulting to using a short date pattern
+        * 
+        * @param id
+        *            The id of the text field
+        * @param model
+        *            The model
+        * @param datePattern
+        *            The pattern to use. Must be not null. See
+        *            [EMAIL PROTECTED] SimpleDateFormat} for available 
patterns.
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel forDatePattern(String id, IModel model, String 
datePattern)
+       {
+               return new DateLabel(id, model, new 
PatternDateConverter(datePattern, true));
+       }
+
+       /**
+        * Creates a new DateLabel defaulting to using a short date pattern
+        * 
+        * @param id
+        *            The id of the text field
+        * @param datePattern
+        *            The pattern to use. Must be not null. See
+        *            [EMAIL PROTECTED] SimpleDateFormat} for available 
patterns.
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel forDatePattern(String id, String datePattern)
+       {
+               return forDatePattern(id, null, datePattern);
+       }
+
+       /**
+        * Creates a new DateLabel defaulting to using a short date pattern
+        * 
+        * @param id
+        *            The id of the text field
+        * @param model
+        *            The model
+        * @param dateStyle
+        *            style to use in case no pattern is provided. Must be two
+        *            characters from the set {"S", "M", "L", "F", "-"}. Must 
be not
+        *            null. See [EMAIL PROTECTED] 
DateTimeFormat#forStyle(String)} for options.
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel forDateStyle(String id, IModel model, String 
dateStyle)
+       {
+               return new DateLabel(id, model, new 
StyleDateConverter(dateStyle, true));
+       }
+
+       /**
+        * Creates a new DateLabel defaulting to using a short date pattern
+        * 
+        * @param id
+        *            The id of the text field
+        * @param dateStyle
+        *            style to use in case no pattern is provided. Must be two
+        *            characters from the set {"S", "M", "L", "F", "-"}. Must 
be not
+        *            null. See [EMAIL PROTECTED] 
DateTimeFormat#forStyle(String)} for options.
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel forDateStyle(String id, String dateStyle)
+       {
+               return forDateStyle(id, null, dateStyle);
+       }
+
+       /**
+        * Creates a new DateLabel defaulting to using a short date pattern
+        * 
+        * @param id
+        *            The id of the text field
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel forShortStyle(String id)
+       {
+               return forShortStyle(id, null);
+       }
+
+       /**
+        * Creates a new DateLabel defaulting to using a short date pattern
+        * 
+        * @param id
+        *            The id of the text field
+        * @param model
+        *            The model
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel forShortStyle(String id, IModel model)
+       {
+               return new DateLabel(id, model, new StyleDateConverter(true));
+       }
+
+       /**
+        * Creates a new DateLabel using the provided converter.
+        * 
+        * @param id
+        *            The id of the text field
+        * @param converter
+        *            the date converter
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel withConverter(String id, DateConverter 
converter)
+       {
+               return withConverter(id, null, converter);
+       }
+
+       /**
+        * Creates a new DateLabel using the provided converter.
+        * 
+        * @param id
+        *            The id of the text field
+        * @param model
+        *            The model
+        * @param converter
+        *            the date converter
+        * 
+        * @see wicket.markup.html.form.TextField
+        */
+       public static DateLabel withConverter(String id, IModel model, 
DateConverter converter)
+       {
+               return new DateLabel(id, model, converter);
+       }
+
+       /** optionally prepend to label. */
+       private String after;
+
+       /** optionally append to label. */
+       private String before;
+
+       /**
+        * The converter for the Label
+        */
+       private final DateConverter converter;
+
+       /**
+        * Construct with a converter.
+        * 
+        * @param The
+        *            component id
+        * @param The
+        *            model
+        * @param converter
+        *            The converter to use
+        */
+       public DateLabel(String id, IModel model, DateConverter converter)
+       {
+               super(id, model);
+               if (converter == null)
+               {
+                       throw new IllegalStateException("converter may not be 
null");
+               }
+               this.converter = converter;
+       }
+
+       /**
+        * @return after append to label or null
+        */
+       public String getAfter()
+       {
+               return after;
+       }
+
+       /**
+        * @return before prepend to label or null
+        */
+       public String getBefore()
+       {
+               return before;
+       }
+
+       /**
+        * Returns the specialized converter.
+        */
+       public IConverter getConverter(Class clazz)
+       {
+               return converter;
+       }
+
+       /**
+        * @param after
+        *            append to label
+        */
+       public void setAfter(String after)
+       {
+               this.after = after;
+       }
+
+       /**
+        * @param before
+        *            prepend to label
+        */
+       public void setBefore(String before)
+       {
+               this.before = before;
+       }
+
+       protected void onComponentTagBody(MarkupStream markupStream, 
ComponentTag openTag)
+       {
+               String s = getModelObjectAsString();
+               if (before != null)
+               {
+                       s = before + s;
+               }
+               if (after != null)
+               {
+                       s = s + after;
+               }
+               replaceComponentTagBody(markupStream, openTag, s);
+       }
+}


Reply via email to