Author: ehillenius
Date: Sat Aug 18 15:10:14 2007
New Revision: 567332

URL: http://svn.apache.org/viewvc?view=rev&rev=567332
Log:
WICKET-806

Added:
    
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/assets/wicket-calendar.css
Modified:
    
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
    
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
    
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
    
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
    
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
    
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java

Modified: 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java?view=diff&rev=567332&r1=567331&r2=567332
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
 Sat Aug 18 15:10:14 2007
@@ -41,6 +41,7 @@
 import org.apache.wicket.markup.html.IHeaderContributor;
 import org.apache.wicket.markup.html.IHeaderResponse;
 import 
org.apache.wicket.markup.html.form.AbstractTextComponent.ITextFormatProvider;
+import org.apache.wicket.markup.html.resources.CompressedResourceReference;
 import org.apache.wicket.markup.html.resources.JavascriptResourceReference;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.convert.converters.DateConverter;
@@ -148,6 +149,11 @@
        public void renderHead(IHeaderResponse response)
        {
                YuiLib.load(response);
+               if (enableMonthYearSelection())
+               {
+                       response.renderCSSReference(new 
CompressedResourceReference(DatePicker.class,
+                                       "assets/wicket-calendar.css"));
+               }
 
                // variables for the initialization script
                Map variables = new HashMap();
@@ -162,6 +168,7 @@
                                new 
JavascriptResourceReference(DatePicker.class, "wicket-date.js")));
                variables.put("basePath", RequestCycle.get().urlFor(
                                new JavascriptResourceReference(YuiLib.class, 
"")));
+               variables.put("enableMonthYearSelection", 
Boolean.valueOf(enableMonthYearSelection()));
 
                // print out the initialization properties
                Properties p = new Properties();
@@ -542,5 +549,18 @@
                        return copy;
                }
                return null;
+       }
+
+       /**
+        * Indicates whether plain text is rendered or two select boxes are 
used to
+        * allow direct selection of month and year.
+        * 
+        * @return <code>true</code> if select boxes should be rendered to allow
+        *         month and year selection.<br/><code>false</code> to render
+        *         just plain text.
+        */
+       protected boolean enableMonthYearSelection()
+       {
+               return false;
        }
 }

Modified: 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js?view=diff&rev=567332&r1=567331&r2=567332
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
 Sat Aug 18 15:10:14 2007
@@ -55,10 +55,12 @@
        YAHOO.namespace("wicket");
        YAHOO.wicket.${widgetId}DpJs = new 
YAHOO.widget.Calendar("${widgetId}DpJs","${widgetId}Dp", { ${calendarInit} });
        YAHOO.wicket.${widgetId}DpJs.isVisible = function() { return 
YAHOO.wicket.${widgetId}DpJs.oDomContainer.style.display == 'block'; }
+       if (${enableMonthYearSelection}) 
Wicket.DateTime.enableMonthYearSelection(YAHOO.wicket.${widgetId}DpJs); 
        
        function showCalendar() {
                Wicket.DateTime.showCalendar(YAHOO.wicket.${widgetId}DpJs, 
YAHOO.util.Dom.get("${componentId}").value, '${datePattern}');
                if (${alignWithIcon}) 
Wicket.DateTime.positionRelativeTo(YAHOO.wicket.${widgetId}DpJs.oDomContainer, 
"${widgetId}Icon");
+               if (${enableMonthYearSelection}) 
Wicket.DateTime.enableMonthYearSelection(YAHOO.wicket.${widgetId}DpJs); 
        }
 
        YAHOO.util.Event.addListener("${widgetId}Icon", "click", showCalendar, 
YAHOO.wicket.${widgetId}DpJs, true);

Added: 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/assets/wicket-calendar.css
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/assets/wicket-calendar.css?view=auto&rev=567332
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/assets/wicket-calendar.css
 (added)
+++ 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/assets/wicket-calendar.css
 Sat Aug 18 15:10:14 2007
@@ -0,0 +1,32 @@
+.yui-calendar .calnavleft {
+       display: none;
+}
+
+.yui-calendar .calnavright {
+       display: none;
+}
+
+.yui.calendar {
+       border-width: 0px;
+    text-align: center;
+}
+
+.yearInputContainer {
+    border: 1px solid #999;
+}
+
+.yearInputContainer span {
+    cursor: default;
+    background-color: #EEE;
+    padding: 0em 0.4em;
+    font-weight: normal;
+}
+
+.yearInputContainer span:hover {
+       background-color: #E0E0E0;      
+}
+
+.yearInputContainer input {
+       text-align: center;
+       border-width: 0px;      
+}

Modified: 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js?view=diff&rev=567332&r1=567331&r2=567332
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
 Sat Aug 18 15:10:14 2007
@@ -112,4 +112,103 @@
                widget.render();
        }
        widget.show();
+}
+
+/**
+ * Renders the Month-Year-label as two select boxes.
+ * The year-select uses the following pattern for the widget.
+ */
+Wicket.DateTime.enableMonthYearSelection = function(widget) {
+       var monthSelectId = widget.id + "MonthSelect";  
+       var yearInputId = widget.id + "YearInput";
+       var yearUpId = widget.id + "YearUp";
+       var yearDownId = widget.id + "YearDown";
+       
+       // sets the select boxes to the proper values after navigating the 
datepicker with the arrows
+       var sync = function(type) {
+               var month = 
parseInt(widget.cfg.getProperty(YAHOO.widget.Calendar._DEFAULT_CONFIG.PAGEDATE.key).getMonth());
+               var year = 
parseInt(widget.cfg.getProperty(YAHOO.widget.Calendar._DEFAULT_CONFIG.PAGEDATE.key).getFullYear());
+               YAHOO.util.Dom.get(monthSelectId).selectedIndex = month;
+               YAHOO.util.Dom.get(yearInputId).value = year;
+       }
+       
+       widget.renderEvent.subscribe(sync);             
+       
+       // override the default applyListeners method to register 
onChange-listeners for the select boxes 
+       if (typeof(widget.YUIApplyListeners) == 'undefined') {
+               widget.YUIApplyListeners = widget.applyListeners;
+       }
+       widget.applyListeners = function () {
+               widget.YUIApplyListeners();
+               var E = YAHOO.util.Event;
+               E.on(monthSelectId, "change", function() {
+                       
widget.setMonth(YAHOO.util.Dom.get(monthSelectId).value);
+                       widget.render();
+               });
+               
+               widget.yearChanged = new YAHOO.util.CustomEvent("yearChanged", 
widget);
+               widget.yearChanged.subscribe(function() {                       
+                       widget.setYear(YAHOO.util.Dom.get(yearInputId).value);
+                       widget.render();
+               });                             
+               
+               E.on(yearInputId, "blur", function() { processNumber(0); }, 
this);              
+               
+               var processNumber = function(offset) {
+                       var field = YAHOO.util.Dom.get(yearInputId);
+                       field.value = field.value.replace(/\D*/, "");
+                       field.value = parseInt(field.value, 10) + offset; 
+                       if (/\d+/.test(field.value)) {
+                               widget.yearChanged.fire();                      
        
+                       }   
+               };
+               
+               E.on(yearUpId, "click", function() {
+                       var field = YAHOO.util.Dom.get(yearInputId);
+                       processNumber(1);
+               });
+               
+               E.on(yearDownId, "click", function() {
+                       var field = YAHOO.util.Dom.get(yearInputId);
+                       processNumber(-1);
+               });
+                                               
+               // disable text selection for the up/down spinner"buttons"
+               var ua = YAHOO.env.ua;
+               if (ua.gecko) {
+                       YAHOO.util.Dom.get(yearUpId).style.MozUserSelect = 
"none";
+                       YAHOO.util.Dom.get(yearDownId).style.MozUserSelect = 
"none";
+               } else if (ua.ie) {
+                       E.on(yearUpId, "selectstart", function() { return 
false; });
+                       E.on(yearDownId, "selectstart", function() { return 
false; });
+               } else {
+                       E.on(yearUpId, "mousedown", function() { return false; 
});
+                       E.on(yearDownId, "mousedown", function() { return 
false; });
+               }
+       }
+               
+       // override the function which is used to generate the month label and 
render two select boxes instead
+       widget.buildMonthLabel = function () {
+               var pageDate = 
widget.cfg.getProperty(YAHOO.widget.Calendar._DEFAULT_CONFIG.PAGEDATE.key);
+
+               // generate month select box using localized strings
+               var selectHtml = "<select id=\"" + monthSelectId + "\">";
+               var i;
+               for (i = 0; i < 12; i++) {
+                       selectHtml += "<option value=\"" + i + "\"";
+                       if (i == pageDate.getMonth()) {
+                               selectHtml += " selected=\"selected\"";
+                       }       
+                       selectHtml += ">" + widget.Locale.LOCALE_MONTHS[i] + 
"</option>";
+               }
+               selectHtml += "</select>";
+
+               // generate year input and spinner buttons
+               selectHtml += "<span class=\"yearInputContainer\">";
+               selectHtml += "<span id=\"" + yearDownId + "\">&ndash;</span>";
+               selectHtml += "<input type=\"text\" id=\"" + yearInputId +"\" 
size=\"4\" onchange=\"\"/>";
+               selectHtml += "<span id=\"" + yearUpId + "\">+</span>";
+               selectHtml += "</span>";                                        
                        
+               return selectHtml;  
+       }
 }

Modified: 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html?view=diff&rev=567332&r1=567331&r2=567332
==============================================================================
--- 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
 (original)
+++ 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
 Sat Aug 18 15:10:14 2007
@@ -17,5 +17,8 @@
 <form wicket:id="form"><input type="text"
        wicket:id="dateTextField" /> <input type="submit" value="submit" 
/></form>
 </p>
+<p>
+       <div wicket:id="feedback"></div>
+</p>
 </body>
 </html>

Modified: 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java?view=diff&rev=567332&r1=567331&r2=567332
==============================================================================
--- 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
 (original)
+++ 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
 Sat Aug 18 15:10:14 2007
@@ -33,8 +33,10 @@
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.validation.validator.DateValidator;
 
 /**
  * Demonstrates components from the wicket-date project and a bunch of locale
@@ -155,10 +157,26 @@
                                selectedLocale = LOCALE_EN;
                        }
                });
-               Form form = new Form("form");
+               Form form = new Form("form")
+               {
+                       @Override
+                       protected void onSubmit()
+                       {
+                               info("set date to " + date);
+                       }
+               };
                add(form);
                form.add(dateTextField);
-               dateTextField.add(new DatePicker());
+               dateTextField.add(new DatePicker()
+               {
+                       @Override
+                       protected boolean enableMonthYearSelection()
+                       {
+                               return false;
+                       }
+               });
+               dateTextField.add(DateValidator.minimum(new Date()));
+               add(new FeedbackPanel("feedback"));
        }
 
        /**

Modified: 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java?view=diff&rev=567332&r1=567331&r2=567332
==============================================================================
--- 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
 (original)
+++ 
wicket/trunk/jdk-1.5/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorld.java
 Sat Aug 18 15:10:14 2007
@@ -32,6 +32,17 @@
         */
        public HelloWorld()
        {
-               add(new Label("message", "Hello World!"));
+               add(new Label("message", "Hello World!")
+               {
+                       /**
+                        * @see org.apache.wicket.Component#onBeforeRender()
+                        */
+                       @Override
+                       protected void onBeforeRender()
+                       {
+                               super.onBeforeRender();
+                               System.err.println("id: " + getMarkupId());
+                       }
+               });
        }
 }


Reply via email to