Author: mgrigorov
Date: Mon Jul 25 15:05:28 2011
New Revision: 1150736

URL: http://svn.apache.org/viewvc?rev=1150736&view=rev
Log:
WICKET-3932 Hide the DatePicker, when the user clicks on an area of the 
document outside of the DatePicker


Modified:
    
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
    
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
    
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
    
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java

Modified: 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
--- 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
 (original)
+++ 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
 Mon Jul 25 15:05:28 2011
@@ -138,6 +138,12 @@ public class DatePicker extends Behavior
        private boolean showOnFieldClick = false;
 
        /**
+        * A setting that decides whether to close the date picker when the 
user clicks somewhere else
+        * on the document.
+        */
+       private boolean autoHide = false;
+
+       /**
         * Construct.
         */
        public DatePicker()
@@ -240,6 +246,7 @@ public class DatePicker extends Behavior
                variables.put("alignWithIcon", alignWithIcon());
                variables.put("hideOnSelect", hideOnSelect());
                variables.put("showOnFieldClick", showOnFieldClick());
+               variables.put("autoHide", autoHide());
 
                String script = getAdditionalJavaScript();
                if (script != null)
@@ -743,6 +750,31 @@ public class DatePicker extends Behavior
                return this;
        }
 
+
+       /**
+        * Indicates whether the calendar should be hidden when the user clicks 
on an area of the
+        * document outside of the dialog.
+        * 
+        * @return <code>true</code> <br/>
+        *         <code>false</code> (default)
+        */
+       protected boolean autoHide()
+       {
+               return autoHide;
+       }
+
+       /**
+        * @param autoHide
+        *            a flag indicating whether to hide the picker on click 
event
+        * @return {@code this} instance to be able to chain calls
+        * @see {@link #autoHide()}
+        */
+       public DatePicker setAutoHide(boolean autoHide)
+       {
+               this.autoHide = autoHide;
+               return this;
+       }
+
        /**
         * Indicates whether the calendar should be rendered after it has been 
loaded.
         * 

Modified: 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
--- 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
 (original)
+++ 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
 Mon Jul 25 15:05:28 2011
@@ -16,6 +16,6 @@
  */
 wicketCalendarAdd(function() {
        Wicket.DateTime.init2("${widgetId}", "${componentId}", ${calendarInit}, 
"${datePattern}",
-                       ${alignWithIcon}, ${fireChangeEvent}, ${hideOnSelect}, 
${showOnFieldClick}, ${i18n});
+                       ${alignWithIcon}, ${fireChangeEvent}, ${hideOnSelect}, 
${showOnFieldClick}, ${i18n}, ${autoHide});
        ${additionalJavascript}
 });

Modified: 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
--- 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
 (original)
+++ 
wicket/trunk/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
 Mon Jul 25 15:05:28 2011
@@ -262,12 +262,25 @@ Wicket.DateTime.init = function(cfg) {
        }
 
        
YAHOO.wicket[cfg.dpJs].selectEvent.subscribe(selectHandler,YAHOO.wicket[cfg.dpJs]);
-       YAHOO.wicket[cfg.dpJs].render();
+
+       if(cfg.autoHide) {
+               YAHOO.util.Event.on(document, "click", function(e) {
+
+                       var el = YAHOO.util.Event.getTarget(e);
+                       var dialogEl = document.getElementById(cfg.dpJs);
+                       var showBtn = document.getElementById(cfg.icon);
+
+                       if (el != dialogEl && 
!YAHOO.util.Dom.isAncestor(dialogEl, el) && el != showBtn && 
!YAHOO.util.Dom.isAncestor(showBtn, el)) {
+                               YAHOO.wicket[cfg.dpJs].hide();
+                       }
+        });
+    }
+    YAHOO.wicket[cfg.dpJs].render();
 }
 
 // init method variant that needs less character to invoke
 Wicket.DateTime.init2 = function(widgetId, componentId, calendarInit, 
datePattern,
-               alignWithIcon, fireChangeEvent, hideOnSelect, showOnFieldClick, 
i18n) {
+               alignWithIcon, fireChangeEvent, hideOnSelect, showOnFieldClick, 
i18n, autoHide) {
        calendarInit.MONTHS_SHORT = i18n.MONTHS_SHORT;
        calendarInit.MONTHS_LONG = i18n.MONTHS_LONG;
        calendarInit.WEEKDAYS_MEDIUM = i18n.WEEKDAYS_MEDIUM;
@@ -284,8 +297,9 @@ Wicket.DateTime.init2 = function(widgetI
                alignWithIcon: alignWithIcon,
                fireChangeEvent: fireChangeEvent,
                hideOnSelect: hideOnSelect,
-               showOnFieldClick: showOnFieldClick
+               showOnFieldClick: showOnFieldClick,
+               autoHide: autoHide
        });
 }
 
-YAHOO.register("wicket-date", Wicket.DateTime, {version: "1.5", build: "rc3"});
+YAHOO.register("wicket-date", Wicket.DateTime, {version: "1.5", build: "RC6"});

Modified: 
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
--- 
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
 (original)
+++ 
wicket/trunk/wicket-datetime/src/test/java/org/apache/wicket/extensions/yui/calendar/DatesPage1_ExpectedResult.html
 Mon Jul 25 15:05:28 2011
@@ -94,7 +94,7 @@ Wicket.Event.add(window, "domready", fun
  */
 wicketCalendarAdd(function() {
        Wicket.DateTime.init2("dateTextField1", "dateTextField1", 
{close:true,selected:"xx.xx.xxxx",pagedate:"xx.xxxx"}, "dd.MM.yy",
-                       true, true, true, false, wicketCalendarI18n["de"]);
+                       true, true, true, false, wicketCalendarI18n["de"], 
false);
        
 });
 ;});

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.html
 Mon Jul 25 15:05:28 2011
@@ -16,7 +16,7 @@
                        wicket:id="localeUSLink">set to english</a>]</p>
                </form>
                <p>
-               Example using DateTextField:&#160;
+               Example using DateTextField (auto-hides the picker when 
clicking on the document):&#160;
                <form wicket:id="form"><input type="text"
                        wicket:id="dateTextField" /> <input type="submit" 
value="submit" /></form>
                </p>

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java?rev=1150736&r1=1150735&r2=1150736&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/dates/DatesPage.java
 Mon Jul 25 15:05:28 2011
@@ -180,6 +180,7 @@ public class DatesPage extends WicketExa
 
                DatePicker datePicker = new DatePicker();
                datePicker.setShowOnFieldClick(true);
+               datePicker.setAutoHide(true);
                dateTextField.add(datePicker);
                add(new FeedbackPanel("feedback"));
 


Reply via email to