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 + "\">–</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()); + } + }); } }