You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2009/01/17 19:27:59 UTC

svn commit: r735320 [1/3] - in /wicket/sandbox/knopp/experimental: ./ wicket-auth-roles/src/main/java/org/apache/wicket/authentication/panel/ wicket-datetime/src/main/java/org/apache/wicket/datetime/ wicket-datetime/src/main/java/org/apache/wicket/exte...

Author: knopp
Date: Sat Jan 17 10:27:57 2009
New Revision: 735320

URL: http://svn.apache.org/viewvc?rev=735320&view=rev
Log:
merged with trunk (713218)

Added:
    wicket/sandbox/knopp/experimental/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/panel/SignInPanel_ja.html
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/CheckGroupPage2.html
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/CheckGroupPage2.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/RadioGroupPage2.html
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/RadioGroupPage2.java
Modified:
    wicket/sandbox/knopp/experimental/CHANGELOG-1.4   (contents, props changed)
    wicket/sandbox/knopp/experimental/pom.xml
    wicket/sandbox/knopp/experimental/release.sh
    wicket/sandbox/knopp/experimental/wicket-assembly-all.xml
    wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java
    wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
    wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
    wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
    wicket/sandbox/knopp/experimental/wicket-examples/.amateras
    wicket/sandbox/knopp/experimental/wicket-examples/pom.xml
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/OnChangeAjaxBehaviorPage.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/Index.html
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/LinkPage.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/SelectPage.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/TabbedPanelPage.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/frames/BodyFrame.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/library/EditBook.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/stockquote/StockQuoteLabel.java
    wicket/sandbox/knopp/experimental/wicket-examples/src/test/java/org/apache/wicket/examples/panels/signin/CookieTest.java
    wicket/sandbox/knopp/experimental/wicket-extensions/pom.xml
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableChoiceLabel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxLazyLoadPanel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxFallbackLink.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/SmartLinkLabel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/SmartLinkMultiLineLabel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/captcha/CaptchaImageResource.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.html
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/PropertyColumn.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/filter/FilterForm.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/DefaultAbstractTree.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/Tree.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyRenderableColumn.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/CancelButton.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/FinishButton.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/LastButton.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/NextButton.java
    wicket/sandbox/knopp/experimental/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/PreviousButton.java
    wicket/sandbox/knopp/experimental/wicket-jmx/src/main/java/org/apache/wicket/jmx/Application.java
    wicket/sandbox/knopp/experimental/wicket-jmx/src/main/java/org/apache/wicket/jmx/ApplicationMBean.java
    wicket/sandbox/knopp/experimental/wicket-spring/pom.xml
    wicket/sandbox/knopp/experimental/wicket-spring/src/main/java/org/apache/wicket/spring/test/ApplicationContextMock.java

Modified: wicket/sandbox/knopp/experimental/CHANGELOG-1.4
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/CHANGELOG-1.4?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/CHANGELOG-1.4 (original)
+++ wicket/sandbox/knopp/experimental/CHANGELOG-1.4 Sat Jan 17 10:27:57 2009
@@ -1,5 +1,197 @@
 This file contains all changes done on the 1.4 version.
 
+Release Notes - Wicket - Version 1.4-RC1
+
+** Sub-task
+    * [WICKET-1624] - ServletWebRequest.getRelativePathPrefixToContextRoot() double decodes servlet path
+    * [WICKET-1805] - Allow to change charset in StringRequestTarget: change CharSet used by the OutStream as well
+
+** Bug
+    * [WICKET-550] - Use WebRequestEncoder everywhere a query string is constructed
+    * [WICKET-861] - NumberFormatException with UrlCompressingWebRequestProcessor in WicketTester
+    * [WICKET-1120] - Problem closing a ModalWindow when used through an IFrame
+    * [WICKET-1180] - Converters : final vs non final
+    * [WICKET-1220] - Component.visitParents visits the calling component as well
+    * [WICKET-1311] - Improper HTML escaping for most wicket components and extensions
+    * [WICKET-1376] - Using AbstractAjaxTimerBehavior and mounting that page gives exception
+    * [WICKET-1425] - appendToInit() method is not called in class DatePicker
+    * [WICKET-1436] - Unable to use properties file when generating XML files
+    * [WICKET-1496] - DataTable.html does not validate (HTML 4.01/XHTML-Strict)
+    * [WICKET-1535] - ExternalLink JavaScript not working in FF 3
+    * [WICKET-1565] - AbstractTransformerBehavior can't be added to a page
+    * [WICKET-1582] - WicketTester executeAjaxEvent onclick generating non-AJAX response
+    * [WICKET-1583] - NPE in EnclosureResolver
+    * [WICKET-1627] - AbstractRequestTargetUrlCodingStrategy improper user of URLEncoder.encode
+    * [WICKET-1634] - ClassName needs conversion from Path to dotted notation in AutoLinkResolver
+    * [WICKET-1648] - AbstractRequestTargetUrlCodingStrategy(line 174) throws confusing exception. It would be better redirect to 404-page in this case. 
+    * [WICKET-1652] - Hard-coded quotes in xml prologue
+    * [WICKET-1704] - ResourceStreamRequestTarget.configure set wrong ContentLength for non-ascii characters
+    * [WICKET-1719] - StringResourceModel may fail to format numbers using MessageFormat
+    * [WICKET-1728] - remove obsolete check from LocalizedImageResource
+    * [WICKET-1730] - RfcCompliantEmailAddressValidator accepts whitespace and tab
+    * [WICKET-1731] - When used in inherited markup, <wicket:link> tries to load a class with an illegal name
+    * [WICKET-1736] - Allow Access to AutoCompleteTextField AutoCompleteBehavior
+    * [WICKET-1737] - wicketTester does not find HTML mark-up if custom location is used.
+    * [WICKET-1740] - RequestCycle.urlFor modifies page parameters
+    * [WICKET-1745] - Get rid of raw Model usage
+    * [WICKET-1746] - gecko: ajax javascript reference rendering problem
+    * [WICKET-1754] - form action URLs in non-Wicket forms not rewritten
+    * [WICKET-1755] - In html Include component isAbsolute method returns false for an absolute path in unix-like systems 
+    * [WICKET-1756] - Generify PropertyColumn
+    * [WICKET-1759] - Typo in method name: AttributeModifier#replaceAttibuteValue
+    * [WICKET-1765] - Extending from org.apache.wicket.Page causes StackOverflowError
+    * [WICKET-1776] - Quickstart's archetype misses maven compiler configuration
+    * [WICKET-1777] - Overflow when setting Expires header in WebResource 
+    * [WICKET-1780] - NPE in feedback panel
+    * [WICKET-1787] - AjaxSubmitLink in Internet Explorer does not work with Wicket's automatically genreated id's
+    * [WICKET-1788] - "Invalid procedure call or argument" on AJAX call with IE7
+    * [WICKET-1789] - Border fails to render if its contents are not visible by default
+    * [WICKET-1796] - When markup type is XML, getLocalizer().getString( "xyz", (WebPage) ) throws Exception
+    * [WICKET-1797] - Bug with default RadioChoice "for" attribute on label generation.
+    * [WICKET-1799] - wicket-extensions has unused reference to commons-collections.jar
+    * [WICKET-1809] - wicket does not compile for 1.3.x because of method usage > jdk 1.4
+    * [WICKET-1816] - Wicket 1.3.4 violates servlet standard, Glassfish spews warnings
+    * [WICKET-1818] - wicket:id attribute with a value containing spaces generates invalid markup
+    * [WICKET-1820] - Embedded forms do not support multipart
+    * [WICKET-1829] - MarkupComponentBorder skips first tag in MarkupStream
+    * [WICKET-1834] - Invalid Cookie Names for persistence used according to RFC (doesn't work in tomcat 6.x)
+    * [WICKET-1836] - RequestUtils.toAbsolutePath() should handle dot paths in the url
+    * [WICKET-1839] - IAjaxIndicatorAware/WicketAjaxIndicatorAppender with AutoCompleteTextField doesn't work
+    * [WICKET-1843] - Disabling RadioGroup via authorization strategy does not disable contained Radio buttons
+    * [WICKET-1846] - Dutch text message for NumberValidator incorrect
+    * [WICKET-1857] - Unfound markup information is not entirely cached even in deployment mode
+    * [WICKET-1870] - MinimumLengthValidator throws NullPointerException
+    * [WICKET-1901] - Spelling error in fonts list in CaptchaImageResource
+    * [WICKET-1903] - RadioChoice disable certain choice bug
+    * [WICKET-1904] - CheckBox incorrectly converts its model value when a custom Boolean converter is installed - again
+
+** Improvement
+    * [WICKET-1055] - Add ability to have Radio and RadioGroup not related via component hierarchy
+    * [WICKET-1103] - Support validator and package level resource bundles
+    * [WICKET-1115] - DownloadLink fix that encodes non-ASCII file names properly
+    * [WICKET-1138] - Better warning of design errors during development
+    * [WICKET-1692] - on Java 6+ DatePicker.localize should use DateFormatSymbols.getInstance(Locale) instead of new DateFormatSymbols(Locale)  to support DateFormatSymbolsProviders
+    * [WICKET-1696] - CaptchaImageResource - should take an IModel<String> instead of String for captcha-text
+    * [WICKET-1744] - RadioChoice ,  MultiListChoice, DropDownChoice,  ListChoice - model handlers should take a Collection<T> instead of the more specific List<T> 
+    * [WICKET-1748] - 304 Last Modified responses should include an Expires header
+    * [WICKET-1749] - Want to add SignInPanel_ja.html
+    * [WICKET-1753] - Allow WicketFilter to be configured to skip certain paths
+    * [WICKET-1767] - Protection against Session Fixation
+    * [WICKET-1770] - PagingNavigation's javadoc contains malformed html snippet
+    * [WICKET-1782] - Protection against CSRF (cross-site request forgery) attacks
+    * [WICKET-1801] - Make AbstractDefaultAjaxBehavior.findIndicatorId() protected
+    * [WICKET-1802] - Propertyresolver could be more informative
+    * [WICKET-1810] - StringRequestTarget is bloated and needs some care
+    * [WICKET-1824] - AbstractDecimalConverter
+    * [WICKET-1830] - Include Component Path in Generated Markup
+    * [WICKET-1833] - Ungenerifying IConverter, because overriding Component.getConverter() generated warnings in user code
+    * [WICKET-1844] - Wizard button implementations should not be final
+    * [WICKET-1853] - Wicket should allow non-formcomponents to plug into form's FormComponent#updateModel event
+    * [WICKET-1854] - What's the point of requiring IConverters to be superclasses of the objects they convert?
+    * [WICKET-1891] - AjaxLazyLoadPanel shouldn't call getLoadingComponent(String) in constructor
+    * [WICKET-1895] - AjaxButton should have a constructor to set the label
+
+** New Feature
+    * [WICKET-1720] - Add clearLocalizerCache to Application JMX bean
+    * [WICKET-1877] - Provide Option to Specify XML Attribute Name in getDebugSettings().setOutputComponentPath(true); 		
+
+** Wish
+    * [WICKET-1758] - Make DiskPageStore#getSessionFolder protected (rather than private)
+
+
+Release Notes - Wicket - Version 1.4-M3
+
+** Bug
+    * [WICKET-613] - Prototype scoped Spring beans
+    * [WICKET-1389] - Tests fail due to different order of attributes (under Java 6)
+    * [WICKET-1473] - BaseWicketTester.isComponentOnAjaxResponse() test is too strong
+    * [WICKET-1544] - Update Javadoc for AbstractValidator
+    * [WICKET-1547] - Add getterfor IPageable to PagingNavigation
+    * [WICKET-1636] - WebPage.onAfterRender compares configurationType String using ==  operator, not equals method
+    * [WICKET-1643] - Bookmarkable / Stateless form submit bug
+    * [WICKET-1645] - Syntactic errors in the manifest OSGi headers
+    * [WICKET-1646] - AjaxFormComponentUpdatingBehavior not working correctly when using IE 7
+    * [WICKET-1658] - WicketTester#clickLink doesn't update lastRenderedPage
+    * [WICKET-1659] - Prolem with 'mouseactive' in wicket-autocomplete.js when AutoCompleteBehaviour is added (twice) during Ajax roundtrip
+    * [WICKET-1667] - Memory leak in Localizer
+    * [WICKET-1669] - TimeFrame.equals(Object)  does not work as expected
+    * [WICKET-1670] - Time.valueOf() does not clear miliseconds
+    * [WICKET-1676] - NPE in BookmarkablePageRequestTarget
+    * [WICKET-1682] - HtmlHandler can't handle tags not requiring closed tags if the tag names are uppercase
+    * [WICKET-1684] - FileUploadField should return FileUpload as its converted input
+    * [WICKET-1694] - wicket complains that ValueMap$NullSafeKeyComparator is not serializable
+    * [WICKET-1695] - IValueMap redefines methods from parent interface Map<String, Object> which causes name clashes and redundancy
+    * [WICKET-1697] - Bad caching in <wicket:message> tag for the same key in same markup structure
+    * [WICKET-1699] - NPE in RequestLogger
+    * [WICKET-1701] - org.apache.wicket.markup.html.CompressedPackageResource$CompressingResourceStream.cache needs to avoid being serialized
+    * [WICKET-1705] - GuiceComponentInjector mishandles static fields
+    * [WICKET-1706] - org.apache.wicket.util.lang.Objects.convertValue returns null if it cannot convert the value
+    * [WICKET-1713] - ModalWindow JavaScript does not restore tabIndexes correctly on IE 6
+    * [WICKET-1714] - PackagedTextTemplate does not load resource from application resource stream locator
+    * [WICKET-1715] - Generified SimplePageAuthorizationStrategy violates its contract
+    * [WICKET-1724] - Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in BookmarkableListenerInterfaceRequestTarget.processEvents)
+
+** Improvement
+    * [WICKET-488] - Allow more complex behaviour for AutoCompleter component
+    * [WICKET-1592] - html.form.Form object should have method to obtain all FormValidator objects associated with
+    * [WICKET-1622] - expose the IItemFactory in RefreshingView
+    * [WICKET-1657] - AjaxFallbackDefaultDataTable gives misleading error when fragment markup cannot be found
+    * [WICKET-1662] - org.apache.wicket.util.resource.IResourceStream extends java.io.Closeable
+    * [WICKET-1668] - Application_es.properties (added translations)
+    * [WICKET-1702] - WicketMessageResolver should use application settings instead of a static property to configure its behavior
+    * [WICKET-1708] - Allow the module init parameter to contain multiple class names
+    * [WICKET-1709] - Allow configuration of the guice Stage for GuiceWebApplicationFactory
+    * [WICKET-1711] - Improve Locale fallback in BundleStringResourceLoader
+    * [WICKET-1723] - Drop type parameter from Component while preserving it in IModel and specific Component subtypes
+
+** New Feature
+    * [WICKET-1428] - AutoLinkResolver and Parent-Relative (../) Links
+    * [WICKET-1534] - Allow multiple URL coding strategies on the same mount path
+    * [WICKET-1716] - make autocompleter more customizable
+
+
+Release Notes - Wicket - Version 1.4-M2
+
+** Bug
+    * [WICKET-1152] - MetaDataRoleAuthorizationStrategy.unauthorize() doesn't work
+    * [WICKET-1292] - WicketTester continueToOriginalDestination() uses application home page instead of original redictor
+    * [WICKET-1366] - "ava.lang.IllegalStateException: No Page found for component" when collapsing nodes in a LinkTree
+    * [WICKET-1507] - MarkupCache style/variation/locale support broken
+    * [WICKET-1521] - ClassCastException in MixedUrlCodingStrategy
+    * [WICKET-1527] - WicketTester can not deal with null values in page parameters
+    * [WICKET-1541] - PopupSettings' windowName fixes for IE
+    * [WICKET-1549] - Memory leak with PropertyResolver (in running test suites)
+    * [WICKET-1560] - MarkupFragmentFinder fails on transparent resolvers within Repeaters
+    * [WICKET-1569] - AjaxButton break form data when IRequestSettings.#getResponseRequestEncoding is not UTF-8.
+    * [WICKET-1574] - Palette does not support ajax behavior
+    * [WICKET-1575] - AjaxEventBehavior does not check for component.isEnableAllowed before adding the ajax event to the tag
+    * [WICKET-1581] - AjaxEditableLabel cancel broken on Safari
+    * [WICKET-1598] - Typos in JavaDoc of IMarkupResourceStreamProvider.java
+    * [WICKET-1607] - addDomReadyEvent unreliable for Safari
+    * [WICKET-1626] - Typo in src/main/java/org/apache/wicket/protocol/http/WebApplication.java
+    * [WICKET-1635] - Stripping javascript comments and whitespace breaks application when using prototype library
+    * [WICKET-1649] - Manifests use incorrect Dynamic-ImportPackage header
+
+** Improvement
+    * [WICKET-433] - improved reporting on locked page maps
+    * [WICKET-1559] - Widening Generics...
+    * [WICKET-1568] - contribution for wicket 1.4 generics (IConverter)
+    * [WICKET-1588] - Generics for Quickstart archetype
+    * [WICKET-1590] - AjaxEditableChoiceLabel ignores ChoiceRenderer in newLabel(...)
+    * [WICKET-1595] - AutoCompleteTextField: Scrolling down the Choice Menu Only When the Bottom of the Menu Is Reached
+    * [WICKET-1596] - New convenience methods for ValueMap (code and tests included!)
+    * [WICKET-1608] - make AutoCompleteBehavior's configuration more flexible
+    * [WICKET-1618] - Localizer API should be enhanced so that the cache implementation can be overwritten
+    * [WICKET-1656] - serialVersionUID Errors in Eclipse
+    * [WICKET-1660] - Add isVisible() method to ITab
+
+** New Feature
+    * [WICKET-1603] - pass through url coding strategy
+    * [WICKET-1609] - add RedirectToExternalException
+    * [WICKET-1641] - provide OSGi metadata
+
+** Wish
+    * [WICKET-1562] - Autocomplete should display the selection list even if the input field is empty
 
 Release Notes - Wicket - Version 1.4-M1
 

Propchange: wicket/sandbox/knopp/experimental/CHANGELOG-1.4
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sat Jan 17 10:27:57 2009
@@ -0,0 +1,2 @@
+/wicket/releases/wicket-1.4-m3/CHANGELOG-1.4:674295
+/wicket/releases/wicket-1.4-rc1/CHANGELOG-1.4:709869

Modified: wicket/sandbox/knopp/experimental/pom.xml
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/pom.xml?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/pom.xml (original)
+++ wicket/sandbox/knopp/experimental/pom.xml Sat Jan 17 10:27:57 2009
@@ -15,20 +15,14 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
-
 	<groupId>org.apache.wicket</groupId>
 	<artifactId>wicket-parent</artifactId>
 	<version>1.4-SNAPSHOT</version>
 	<packaging>pom</packaging>
-
 	<name>Wicket Parent</name>
 	<description>Wicket is a Java-based open source component web application framework.</description>
-
 	<profiles>
 		<profile>
 			<id>bamboo</id>
@@ -83,13 +77,13 @@
 				</plugins>
 			</build>
 			<distributionManagement>
-			  <snapshotRepository>
-			    <id>repo</id>
-			    <name>Local Bamboo/Tomcat repository</name>
-			    <url>file:/home/wicket/tomcat/webapps/maven/repository/</url>
-			    <uniqueVersion>false</uniqueVersion>
-			  </snapshotRepository>
-			</distributionManagement>			
+				<snapshotRepository>
+					<id>repo</id>
+					<name>Local Bamboo/Tomcat repository</name>
+					<url>file:/home/wicket/tomcat/webapps/maven/repository/</url>
+					<uniqueVersion>false</uniqueVersion>
+				</snapshotRepository>
+			</distributionManagement>
 		</profile>
 		<profile>
 			<id>release</id>
@@ -136,6 +130,9 @@
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-javadoc-plugin</artifactId>
 						<inherited>true</inherited>
+						<configuration>
+							<aggregate>true</aggregate>
+						</configuration>
 					</plugin>
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
@@ -187,15 +184,12 @@
 			</modules>
 		</profile>
 	</profiles>
-
 	<url>http://wicket.apache.org/${project.artifactId}</url>
 	<inceptionYear>2004</inceptionYear>
-
 	<organization>
 		<name>Apache Software Foundation</name>
 		<url>http://apache.org</url>
 	</organization>
-
 	<licenses>
 		<license>
 			<name>The Apache Software License, Version 2.0</name>
@@ -203,23 +197,19 @@
 			<distribution>repo</distribution>
 		</license>
 	</licenses>
-
 	<issueManagement>
 		<system>jira</system>
 		<url>http://issues.apache.org/jira/browse/WICKET</url>
 	</issueManagement>
-
 	<ciManagement>
 		<system>bamboo</system>
 		<url>http://wicketstuff.org/bamboo</url>
 	</ciManagement>
-
 	<scm>
 		<connection>scm:svn:http://svn.apache.org/repos/asf/wicket/trunk</connection>
 		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/wicket/trunk</developerConnection>
 		<url>http://svn.apache.org/viewvc/wicket/trunk</url>
 	</scm>
-
 	<mailingLists>
 		<mailingList>
 			<name>Wicket Announcements List</name>
@@ -249,7 +239,6 @@
 			<archive>http://mail-archives.apache.org/mod_mbox/wicket-commits/</archive>
 		</mailingList>
 	</mailingLists>
-
 	<dependencyManagement>
 		<dependencies>
 			<dependency>
@@ -344,7 +333,7 @@
 			<dependency>
 				<groupId>org.springframework</groupId>
 				<artifactId>spring</artifactId>
-				<version>2.0</version>
+				<version>2.5.6</version>
 			</dependency>
 			<dependency>
 				<groupId>org.mortbay.jetty</groupId>
@@ -491,7 +480,6 @@
 				<version>1.0-alpha-6</version>
 			</extension>
 		</extensions>
-
 		<resources>
 			<resource>
 				<filtering>false</filtering>
@@ -514,7 +502,6 @@
 				</excludes>
 			</resource>
 		</resources>
-
 		<testResources>
 			<testResource>
 				<filtering>false</filtering>
@@ -527,7 +514,6 @@
 				</excludes>
 			</testResource>
 		</testResources>
-
 		<plugins>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
@@ -556,7 +542,7 @@
 			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-jar-plugin</artifactId>	
+				<artifactId>maven-jar-plugin</artifactId>
 				<inherited>true</inherited>
 			</plugin>
 			<plugin>
@@ -565,13 +551,12 @@
 				<inherited>true</inherited>
 			</plugin>
 		</plugins>
-
 		<pluginManagement>
 			<plugins>
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-assembly-plugin</artifactId>
-					<version>2.2-beta-1</version>
+					<version>2.2-beta-2</version>
 					<configuration>
 						<appendAssemblyId>false</appendAssemblyId>
 						<tarLongFileMode>gnu</tarLongFileMode>
@@ -596,7 +581,7 @@
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-eclipse-plugin</artifactId>
-					<version>2.3</version>
+					<version>2.5.1</version>
 					<configuration>
 						<downloadSources>true</downloadSources>
 					</configuration>
@@ -604,7 +589,7 @@
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-gpg-plugin</artifactId>
-					<version>1.0-alpha-3</version>
+					<version>1.0-alpha-4</version>
 					<executions>
 						<execution>
 							<id>sign-artifacts</id>
@@ -639,21 +624,21 @@
 							</manifestEntries>
 						</archive>
 					</configuration>
-                    <executions>
-                        <execution>
-                            <goals>
-                                <goal>test-jar</goal>
-                            </goals>
-                            <configuration>
-                                <useDefaultManifestFile>false</useDefaultManifestFile>
-                            </configuration>
-                        </execution>
-                    </executions>
+					<executions>
+						<execution>
+							<goals>
+								<goal>test-jar</goal>
+							</goals>
+							<configuration>
+								<useDefaultManifestFile>false</useDefaultManifestFile>
+							</configuration>
+						</execution>
+					</executions>
 				</plugin>
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-javadoc-plugin</artifactId>
-					<version>2.2</version>
+					<version>2.5</version>
 					<configuration>
 						<minmemory>128m</minmemory>
 						<maxmemory>256m</maxmemory>
@@ -661,7 +646,7 @@
 					</configuration>
 					<executions>
 						<execution>
-							<id>attach-sources</id>
+							<id>attach-javadocs</id>
 							<goals>
 								<goal>jar</goal>
 							</goals>
@@ -677,7 +662,7 @@
 					<inherited>true</inherited>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-source-plugin</artifactId>
-					<version>2.0.3</version>
+					<version>2.0.4</version>
 					<executions>
 						<execution>
 							<id>attach-sources</id>
@@ -690,7 +675,7 @@
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-surefire-plugin</artifactId>
-					<version>2.1.3</version>
+					<version>2.4</version>
 					<configuration>
 						<includes>
 							<include>**/*Test.java</include>
@@ -709,7 +694,7 @@
 				<plugin>
 					<groupId>org.apache.maven.plugins</groupId>
 					<artifactId>maven-remote-resources-plugin</artifactId>
-					<version>1.0-alpha-5</version>
+					<version>1.0</version>
 					<executions>
 						<execution>
 							<goals>
@@ -717,34 +702,34 @@
 							</goals>
 							<configuration>
 								<resourceBundles>
-									<resourceBundle>org.apache:apache-jar-resource-bundle:1.2</resourceBundle>
+									<resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
 								</resourceBundles>
 							</configuration>
 						</execution>
 					</executions>
 					<inherited>true</inherited>
 				</plugin>
-                <plugin>
-                    <groupId>org.apache.felix</groupId>
-                    <artifactId>maven-bundle-plugin</artifactId>
-                    <version>1.4.1</version>
-                    <executions>
-                        <execution>
-                            <id>bundle-manifest</id>
-                            <phase>process-classes</phase>
-                            <goals>
-                                <goal>manifest</goal>
-                            </goals>
-                            <configuration>
-                                <instructions>
-                                    <Import-Package>org.apache.wicket*</Import-Package>
-                                    <DynamicImport-Package>*</DynamicImport-Package>
-                                    <_nouses>true</_nouses>
-                                </instructions>
-                            </configuration>
-                        </execution>
-                    </executions>
-                </plugin>
+				<plugin>
+					<groupId>org.apache.felix</groupId>
+					<artifactId>maven-bundle-plugin</artifactId>
+					<version>1.4.3</version>
+					<executions>
+						<execution>
+							<id>bundle-manifest</id>
+							<phase>process-classes</phase>
+							<goals>
+								<goal>manifest</goal>
+							</goals>
+							<configuration>
+								<instructions>
+									<Import-Package>org.apache.wicket*</Import-Package>
+									<DynamicImport-Package>*</DynamicImport-Package>
+									<_nouses>true</_nouses>
+								</instructions>
+							</configuration>
+						</execution>
+					</executions>
+				</plugin>
 			</plugins>
 		</pluginManagement>
 	</build>
@@ -754,7 +739,7 @@
 				<inherited>true</inherited>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-project-info-reports-plugin</artifactId>
-				<version>2.0.1</version>
+				<version>2.1</version>
 				<reportSets>
 					<reportSet>
 						<reports>

Modified: wicket/sandbox/knopp/experimental/release.sh
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/release.sh?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/release.sh (original)
+++ wicket/sandbox/knopp/experimental/release.sh Sat Jan 17 10:27:57 2009
@@ -18,7 +18,7 @@
 echo "Building a release for Apache Wicket. We will need the passphrase for"
 echo "GPG to sign the release."
 echo "This program assumes you use a jdk 1.5 explicitly configured when"
-echo "invoking the 'mvn' Maven 2 command."
+echo "invoking the 'mvn5' Maven 2 command."
 echo ""
 
 echo "Enter your GPG passphrase (input will be hidden)"
@@ -58,11 +58,11 @@
 
 # clean all projects
 echo "Clean all projects"
-mvn clean -Pall
+mvn5 clean -Pall
 
 # package and assemble the release
 echo "Package and assemble the release"
-mvn -ff -Dgpg.passphrase=$passphrase -Prelease deploy assembly:attached $1
+mvn5 -ff -Dgpg.passphrase=$passphrase -Prelease deploy javadoc:javadoc assembly:attached $1
 
 filename=`ls target/dist/apache-wicket*gz`
 gpg --print-md MD5 $filename > $filename.md5

Modified: wicket/sandbox/knopp/experimental/wicket-assembly-all.xml
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-assembly-all.xml?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-assembly-all.xml (original)
+++ wicket/sandbox/knopp/experimental/wicket-assembly-all.xml Sat Jan 17 10:27:57 2009
@@ -37,6 +37,10 @@
 			</excludes>
 		</fileSet>
 		<fileSet>
+			<directory>target/site/apidocs</directory>
+			<outputDirectory>apidocs</outputDirectory>
+		</fileSet>
+		<fileSet>
 			<directory>testing</directory>
 			<outputDirectory>src/testing</outputDirectory>
 			<useDefaultExcludes>true</useDefaultExcludes>
@@ -79,7 +83,7 @@
 		</fileSet>
 		<fileSet>
 			<directory>${basedir}</directory>
-			<outputDirectory></outputDirectory>
+			<outputDirectory/>
 			<useDefaultExcludes>true</useDefaultExcludes>
 			<includes>
 				<include>LICENSE</include>

Added: wicket/sandbox/knopp/experimental/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/panel/SignInPanel_ja.html
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/panel/SignInPanel_ja.html?rev=735320&view=auto
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/panel/SignInPanel_ja.html (added)
+++ wicket/sandbox/knopp/experimental/wicket-auth-roles/src/main/java/org/apache/wicket/authentication/panel/SignInPanel_ja.html Sat Jan 17 10:27:57 2009
@@ -0,0 +1,38 @@
+<!--
+   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.
+-->
+<HTML 
+xmlns:wicket><HEAD>
+<META http-equiv=Content-Type content="text/html; charset=windows-1252">
+<META content="MSHTML 6.00.2900.3354" name=GENERATOR></HEAD>
+<BODY><wicket:panel><SPAN wicket:id="feedback">
+<FORM wicket:id="signInForm">
+<TABLE>
+  <TBODY>
+  <TR>
+    <TD align=right>&#12518;&#12540;&#12470;&#12540;&#21517;:</TD>
+    <TD><INPUT size=30 value=foo@goo.moo wicket:id="username"> </TD></TR>
+  <TR>
+    <TD align=right>&#12497;&#12473;&#12527;&#12540;&#12489;:</TD>
+    <TD><INPUT type=password size=30 value=password wicket:id="password"> 
+  </TD></TR>
+  <TR wicket:id="rememberMeRow">
+    <TD></TD>
+    <TD><INPUT type=checkbox wicket:id="rememberMe"> &#12518;&#12540;&#12470;&#12540;&#21517;&#12434;&#35352;&#25014;&#12377;&#12427; </TD></TR>
+  <TR>
+    <TD></TD>
+    <TD><INPUT type=submit value=&#12469;&#12452;&#12531;&#12452;&#12531; name=submit> <INPUT type=reset value=&#12522;&#12475;&#12483;&#12488;> 
+</TD></TR></TBODY></TABLE></FORM></wicket:panel></SPAN></BODY></HTML>

Modified: wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/datetime/DateConverter.java Sat Jan 17 10:27:57 2009
@@ -44,7 +44,7 @@
  * 
  * @author eelcohillenius
  */
-public abstract class DateConverter implements IConverter<Date>
+public abstract class DateConverter implements IConverter
 {
 	private static final long serialVersionUID = 1L;
 
@@ -59,15 +59,12 @@
 	private Component component = null;
 
 	/**
-	 * Construct.
-	 * </p>
-	 * When applyTimeZoneDifference is true, the current time is applied on the parsed date, and the
-	 * date will be corrected for the time zone difference between the server and the client. For
-	 * instance, if I'm in Seattle and the server I'm working on is in Amsterdam, the server is 9
-	 * hours ahead. So, if I'm inputting say 12/24 at a couple of hours before midnight, at the
-	 * server it is already 12/25. If this boolean is true, it will be transformed to 12/25, while
-	 * the client sees 12/24.
-	 * </p>
+	 * Construct. </p> When applyTimeZoneDifference is true, the current time is applied on the
+	 * parsed date, and the date will be corrected for the time zone difference between the server
+	 * and the client. For instance, if I'm in Seattle and the server I'm working on is in
+	 * Amsterdam, the server is 9 hours ahead. So, if I'm inputting say 12/24 at a couple of hours
+	 * before midnight, at the server it is already 12/25. If this boolean is true, it will be
+	 * transformed to 12/25, while the client sees 12/24. </p>
 	 * 
 	 * @param applyTimeZoneDifference
 	 *            whether to apply the difference in time zones between client and server
@@ -141,9 +138,9 @@
 	 * @see org.apache.wicket.util.convert.IConverter#convertToString(java.lang.Object,
 	 *      java.util.Locale)
 	 */
-	public String convertToString(Date value, Locale locale)
+	public String convertToString(Object value, Locale locale)
 	{
-		DateTime dt = new DateTime((value).getTime(), getTimeZone());
+		DateTime dt = new DateTime(((Date)value).getTime(), getTimeZone());
 		DateTimeFormatter format = getFormat();
 
 		if (applyTimeZoneDifference)
@@ -161,13 +158,12 @@
 	/**
 	 * Gets whether to apply the time zone difference when interpreting dates.
 	 * 
-	 * </p>
-	 * When true, the current time is applied on the parsed date, and the date will be corrected for
-	 * the time zone difference between the server and the client. For instance, if I'm in Seattle
-	 * and the server I'm working on is in Amsterdam, the server is 9 hours ahead. So, if I'm
-	 * inputting say 12/24 at a couple of hours before midnight, at the server it is already 12/25.
-	 * If this boolean is true, it will be transformed to 12/25, while the client sees 12/24.
-	 * </p>
+	 * </p> When true, the current time is applied on the parsed date, and the date will be
+	 * corrected for the time zone difference between the server and the client. For instance, if
+	 * I'm in Seattle and the server I'm working on is in Amsterdam, the server is 9 hours ahead.
+	 * So, if I'm inputting say 12/24 at a couple of hours before midnight, at the server it is
+	 * already 12/25. If this boolean is true, it will be transformed to 12/25, while the client
+	 * sees 12/24. </p>
 	 * 
 	 * @return whether to apply the difference in time zones between client and server
 	 */

Modified: wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateField.java Sat Jan 17 10:27:57 2009
@@ -174,7 +174,9 @@
 	protected void onBeforeRender()
 	{
 		dateField.setRequired(isRequired());
-		dateField.setEnabled(isEnabled() && isEnableAllowed());
+
+		// obsolete with WICKET-1919
+		// dateField.setEnabled(isEnabledInHierarchy());
 
 		Date d = (Date)getDefaultModelObject();
 		if (d != null)

Modified: wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.java Sat Jan 17 10:27:57 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.extensions.yui.calendar;
 
+import java.lang.reflect.Method;
 import java.text.DateFormat;
 import java.text.DateFormatSymbols;
 import java.text.SimpleDateFormat;
@@ -53,62 +54,72 @@
 import org.joda.time.DateTime;
 
 /**
- * Pops up a YUI calendar component so that the user can select a date. On
- * selection, the date is set in the component it is coupled to, after which the
- * popup is closed again. This behavior can only be used with components that
- * either implement {@link ITextFormatProvider} or that use
- * {@link DateConverter} configured with an instance of {@link SimpleDateFormat}
- * (like Wicket's default configuration has).<br/>
+ * Pops up a YUI calendar component so that the user can select a date. On selection, the date is
+ * set in the component it is coupled to, after which the popup is closed again. This behavior can
+ * only be used with components that either implement {@link ITextFormatProvider} or that use
+ * {@link DateConverter} configured with an instance of {@link SimpleDateFormat} (like Wicket's
+ * default configuration has).<br/>
  * 
- * To use, simply add a new instance to your component, which would typically a
- * TextField, like {@link DateTextField}.<br/>
+ * To use, simply add a new instance to your component, which would typically a TextField, like
+ * {@link DateTextField}.<br/>
  * 
- * The CalendarNavigator can be configured by overriding {@link #configure(Map)}
- * and setting the property or by returning <code>true</code> for
- * {@link #enableMonthYearSelection()}.
+ * The CalendarNavigator can be configured by overriding {@link #configure(Map)} and setting the
+ * property or by returning <code>true</code> for {@link #enableMonthYearSelection()}.
  * 
  * @see <a
  *      href="http://developer.yahoo.com/yui/calendar/">http://developer.yahoo.com/yui/calendar/</a>
  * 
  * @author eelcohillenius
  */
-public class DatePicker extends AbstractBehavior implements IHeaderContributor {
+public class DatePicker extends AbstractBehavior implements IHeaderContributor
+{
+	private static Method GETINSTANCEMETHOD = null;
+	static
+	{
+		try
+		{
+			GETINSTANCEMETHOD = DateFormatSymbols.class.getMethod("getInstance",
+					new Class[] { Locale.class });
+		}
+		catch (Exception e)
+		{
+			// ignore
+		}
+
+	}
+
 	/**
-	 * Exception thrown when the bound component does not produce a format this
-	 * date picker can work with.
+	 * Exception thrown when the bound component does not produce a format this date picker can work
+	 * with.
 	 */
-	private static final class UnableToDetermineFormatException extends
-			WicketRuntimeException {
+	private static final class UnableToDetermineFormatException extends WicketRuntimeException
+	{
 		private static final long serialVersionUID = 1L;
 
-		public UnableToDetermineFormatException() {
-			super(
-					"This behavior can only be added to components that either implement "
-							+ ITextFormatProvider.class.getName()
-							+ " AND produce a non-null format, or that use"
-							+ " converters that this datepicker can use to determine"
-							+ " the pattern being used. Alternatively, you can extend "
-							+ " the date picker and override getDatePattern to provide your own");
+		public UnableToDetermineFormatException()
+		{
+			super("This behavior can only be added to components that either implement " +
+					ITextFormatProvider.class.getName() +
+					" AND produce a non-null format, or that use" +
+					" converters that this datepicker can use to determine" +
+					" the pattern being used. Alternatively, you can extend " +
+					" the date picker and override getDatePattern to provide your own");
 		}
 	}
 
 	/**
-	 * Format to be used when configuring YUI calendar. Can be used when using
-	 * the &quot;selected&quot; property.
+	 * Format to be used when configuring YUI calendar. Can be used when using the
+	 * &quot;selected&quot; property.
 	 */
-	public static final DateFormat FORMAT_DATE = new SimpleDateFormat(
-			"MM/dd/yyyy");
+	public static final DateFormat FORMAT_DATE = new SimpleDateFormat("MM/dd/yyyy");
 
 	/**
-	 * For specifying which page (month/year) to show in the calendar, use this
-	 * format for the date. This is to be used together with the property
-	 * &quot;pagedate&quot;
+	 * For specifying which page (month/year) to show in the calendar, use this format for the date.
+	 * This is to be used together with the property &quot;pagedate&quot;
 	 */
-	public static final DateFormat FORMAT_PAGEDATE = new SimpleDateFormat(
-			"MM/yyyy");
+	public static final DateFormat FORMAT_PAGEDATE = new SimpleDateFormat("MM/yyyy");
 
-	private static final ResourceReference YUI = new JavascriptResourceReference(
-			YuiLib.class, "");
+	private static final ResourceReference YUI = new JavascriptResourceReference(YuiLib.class, "");
 
 	private static final ResourceReference WICKET_DATE = new JavascriptResourceReference(
 			DatePicker.class, "wicket-date.js");
@@ -121,14 +132,16 @@
 	/**
 	 * Construct.
 	 */
-	public DatePicker() {
+	public DatePicker()
+	{
 	}
 
 	/**
 	 * @see org.apache.wicket.behavior.AbstractBehavior#bind(org.apache.wicket.Component)
 	 */
 	@Override
-	public void bind(Component component) {
+	public void bind(Component component)
+	{
 		this.component = component;
 		checkComponentProvidesDateFormat(component);
 		component.setOutputMarkupId(true);
@@ -138,16 +151,20 @@
 	 * @see org.apache.wicket.behavior.AbstractBehavior#onRendered(org.apache.wicket.Component)
 	 */
 	@Override
-	public void onRendered(Component component) {
+	public void onRendered(Component component)
+	{
 		super.onRendered(component);
 		// Append the span and img icon right after the rendering of the
 		// component. Not as pretty as working with a panel etc, but works
 		// for behaviors and is more efficient
 		Response response = component.getResponse();
 		response.write("\n<span class=\"yui-skin-sam\">&nbsp;<span style=\"");
-		if (renderOnLoad()) {
+		if (renderOnLoad())
+		{
 			response.write("display:block;");
-		} else {
+		}
+		else
+		{
 			response.write("display:none;");
 			response.write("position:absolute;");
 		}
@@ -159,10 +176,10 @@
 		response.write(getIconId());
 		response.write("\" src=\"");
 		CharSequence iconUrl = getIconUrl();
-		response.write(Strings.escapeMarkup(iconUrl != null ? iconUrl
-				.toString() : ""));
+		response.write(Strings.escapeMarkup(iconUrl != null ? iconUrl.toString() : ""));
 		response.write("\" alt=\"\"/>");
-		if (renderOnLoad()) {
+		if (renderOnLoad())
+		{
 			response.write("<br style=\"clear:left;\"/>");
 		}
 		response.write("</span>");
@@ -172,7 +189,8 @@
 	 * @see org.apache.wicket.markup.html.IHeaderContributor#renderHead(org.apache.wicket.markup.html.IHeaderResponse)
 	 */
 	@Override
-	public void renderHead(IHeaderResponse response) {
+	public void renderHead(IHeaderResponse response)
+	{
 		YuiLib.load(response);
 		// variables for the initialization script
 		Map<String, Object> variables = new HashMap<String, Object>();
@@ -184,107 +202,118 @@
 		variables.put("alignWithIcon", alignWithIcon());
 		variables.put("hideOnSelect", hideOnSelect());
 		// variables for YUILoader
-		variables.put("basePath", Strings.stripJSessionId(RequestCycle.get()
-				.urlFor(YUI)));
-		variables.put("wicketDatePath", Strings.stripJSessionId(RequestCycle
-				.get().urlFor(WICKET_DATE)));
-		if (Application.DEVELOPMENT.equals(Application.get()
-				.getConfigurationType())) {
+		variables.put("basePath", Strings.stripJSessionId(RequestCycle.get().urlFor(YUI)));
+		variables.put("wicketDatePath", Strings.stripJSessionId(RequestCycle.get().urlFor(
+				WICKET_DATE)));
+		if (Application.DEVELOPMENT.equals(Application.get().getConfigurationType()))
+		{
 			variables.put("filter", "filter: \"RAW\",");
 			variables.put("allowRollup", false);
-		} else {
+		}
+		else
+		{
 			variables.put("filter", "");
 			variables.put("allowRollup", true);
 		}
 
 		String script = getAdditionalJavascript();
-		if (script != null) {
-			variables.put("additionalJavascript", Strings.replaceAll(script,
-					"${calendar}", "YAHOO.wicket." + widgetId + "DpJs"));
+		if (script != null)
+		{
+			variables.put("additionalJavascript", Strings.replaceAll(script, "${calendar}",
+					"YAHOO.wicket." + widgetId + "DpJs"));
 		}
 		// print out the initialization properties
 		Map<String, Object> p = new HashMap<String, Object>();
 		configure(p);
-		if (!p.containsKey("navigator") && enableMonthYearSelection()) {
+		if (!p.containsKey("navigator") && enableMonthYearSelection())
+		{
 			p.put("navigator", Boolean.TRUE);
 		}
 
-		if (enableMonthYearSelection() && p.containsKey("pages")
-				&& Objects.longValue(p.get("pages")) > 1) {
+		if (enableMonthYearSelection() && p.containsKey("pages") &&
+				Objects.longValue(p.get("pages")) > 1)
+		{
 			throw new IllegalStateException(
 					"You cannot use a CalendarGroup with month/year selection!");
 		}
 
 		// ${calendarInit}
 		StringBuffer calendarInit = new StringBuffer();
-		for (Iterator<Entry<String, Object>> i = p.entrySet().iterator(); i
-				.hasNext();) {
+		for (Iterator<Entry<String, Object>> i = p.entrySet().iterator(); i.hasNext();)
+		{
 			Entry<String, Object> entry = i.next();
 			calendarInit.append(entry.getKey());
 			Object value = entry.getValue();
-			if (value instanceof CharSequence) {
+			if (value instanceof CharSequence)
+			{
 				calendarInit.append(":\"");
 				calendarInit.append(Strings.toEscapedUnicode(value.toString()));
 				calendarInit.append("\"");
-			} else if (value instanceof CharSequence[]) {
+			}
+			else if (value instanceof CharSequence[])
+			{
 				calendarInit.append(":[");
-				CharSequence[] valueArray = (CharSequence[]) value;
-				for (int j = 0; j < valueArray.length; j++) {
+				CharSequence[] valueArray = (CharSequence[])value;
+				for (int j = 0; j < valueArray.length; j++)
+				{
 					CharSequence tmpValue = valueArray[j];
-					if (j > 0) {
+					if (j > 0)
+					{
 						calendarInit.append(",");
 					}
-					if (tmpValue != null) {
+					if (tmpValue != null)
+					{
 						calendarInit.append("\"");
-						calendarInit.append(Strings.toEscapedUnicode(tmpValue
-								.toString()));
+						calendarInit.append(Strings.toEscapedUnicode(tmpValue.toString()));
 						calendarInit.append("\"");
 					}
 				}
 				calendarInit.append("]");
-			} else {
+			}
+			else
+			{
 				calendarInit.append(":");
-				calendarInit.append(Strings.toEscapedUnicode(String
-						.valueOf(value)));
+				calendarInit.append(Strings.toEscapedUnicode(String.valueOf(value)));
 			}
-			if (i.hasNext()) {
+			if (i.hasNext())
+			{
 				calendarInit.append(",");
 			}
 		}
 		variables.put("calendarInit", calendarInit.toString());
 
 		// render initialization script with the variables interpolated
-		TextTemplate datePickerJs = new PackagedTextTemplate(DatePicker.class,
-				"DatePicker.js");
+		TextTemplate datePickerJs = new PackagedTextTemplate(DatePicker.class, "DatePicker.js");
 		datePickerJs.interpolate(variables);
 		response.renderOnDomReadyJavascript(datePickerJs.asString());
 
 		// remove previously generated markup (see onRendered) via javascript in
 		// ajax requests to not render the yui calendar multiple times
-		if (AjaxRequestTarget.get() != null) {
-			final String javascript = "var e = Wicket.$('"
-					+ getEscapedComponentMarkupId()
-					+ "Dp"
-					+ "'); if (e != null && typeof(e.parentNode) != 'undefined' && "
-					+ "typeof(e.parentNode.parentNode != 'undefined')) "
-					+ "e.parentNode.parentNode.removeChild(e.parentNode);";
+		if (AjaxRequestTarget.get() != null)
+		{
+			final String javascript = "var e = Wicket.$('" + getEscapedComponentMarkupId() + "Dp" +
+					"'); if (e != null && typeof(e.parentNode) != 'undefined' && " +
+					"typeof(e.parentNode.parentNode != 'undefined')) " +
+					"e.parentNode.parentNode.removeChild(e.parentNode);";
 
 			response.renderJavascript(javascript, null);
 		}
 	}
 
 	/**
-	 * Check that this behavior can get a date format out of the component it is
-	 * coupled to. It checks whether {@link #getDatePattern()} produces a
-	 * non-null value. If that method returns null, and exception will be thrown
+	 * Check that this behavior can get a date format out of the component it is coupled to. It
+	 * checks whether {@link #getDatePattern()} produces a non-null value. If that method returns
+	 * null, and exception will be thrown
 	 * 
 	 * @param component
 	 *            the component this behavior is being coupled to
 	 * @throws UnableToDetermineFormatException
 	 *             if this date picker is unable to determine a format.
 	 */
-	private final void checkComponentProvidesDateFormat(Component component) {
-		if (getDatePattern() == null) {
+	private final void checkComponentProvidesDateFormat(Component component)
+	{
+		if (getDatePattern() == null)
+		{
 			throw new UnableToDetermineFormatException();
 		}
 	}
@@ -296,9 +325,10 @@
 	 * @param key
 	 * @param array
 	 */
-	private void setWidgetProperty(Map<String, Object> widgetProperties,
-			String key, String[] array) {
-		if (array != null && array.length > 0) {
+	private void setWidgetProperty(Map<String, Object> widgetProperties, String key, String[] array)
+	{
+		if (array != null && array.length > 0)
+		{
 			widgetProperties.put(key, array);
 		}
 	}
@@ -306,47 +336,28 @@
 	/**
 	 * Whether to position the date picker relative to the trigger icon.
 	 * 
-	 * @return If true, the date picker is aligned with the left position of the
-	 *         icon, and with the top right under. If false, the date picker
-	 *         will skip positioning and will let you do the positioning
-	 *         yourself. Returns true by default.
+	 * @return If true, the date picker is aligned with the left position of the icon, and with the
+	 *         top right under. If false, the date picker will skip positioning and will let you do
+	 *         the positioning yourself. Returns true by default.
 	 */
-	protected boolean alignWithIcon() {
+	protected boolean alignWithIcon()
+	{
 		return true;
 	}
 
 	/**
-	 * Append javascript to the initialization function for the YUI widget. Can
-	 * be used by subclasses to conveniently extend configuration without having
-	 * to write a separate contribution.
-	 * 
-	 * @param markupId
-	 *            The markup id of the calendar component
-	 * @param javascriptId
-	 *            the non-name spaced javascript id of the widget
-	 * @param javascriptWidgetId
-	 *            the name space id of the widget
-	 * @param b
-	 *            the buffer to append the script to
-	 */
-	protected void appendToInit(String markupId, String javascriptId,
-			String javascriptWidgetId, StringBuffer b) {
-	}
-
-	/**
-	 * Gives overriding classes the option of adding (or even changing/
-	 * removing) configuration properties for the javascript widget. See <a
-	 * href="http://developer.yahoo.com/yui/calendar/">the widget's
-	 * documentation</a> for the available options. If you want to override/
-	 * remove properties, you should call super.configure(properties) first. If
-	 * you don't call that, be aware that you will have to call
-	 * {@link #localize(Map)} manually if you like localized strings to be
-	 * added.
+	 * Gives overriding classes the option of adding (or even changing/ removing) configuration
+	 * properties for the javascript widget. See <a
+	 * href="http://developer.yahoo.com/yui/calendar/">the widget's documentation</a> for the
+	 * available options. If you want to override/ remove properties, you should call
+	 * super.configure(properties) first. If you don't call that, be aware that you will have to
+	 * call {@link #localize(Map)} manually if you like localized strings to be added.
 	 * 
 	 * @param widgetProperties
 	 *            the current widget properties
 	 */
-	protected void configure(Map<String, Object> widgetProperties) {
+	protected void configure(Map<String, Object> widgetProperties)
+	{
 		widgetProperties.put("close", true);
 
 		// localize date fields
@@ -354,8 +365,9 @@
 
 		Object modelObject = component.getDefaultModelObject();
 		// null and cast check
-		if (modelObject instanceof Date) {
-			Date date = (Date) modelObject;
+		if (modelObject instanceof Date)
+		{
+			Date date = (Date)modelObject;
 			widgetProperties.put("selected", FORMAT_DATE.format(date));
 			widgetProperties.put("pagedate", FORMAT_PAGEDATE.format(date));
 		}
@@ -366,26 +378,30 @@
 	 */
 	// TODO remove this very ugly named method
 	@Deprecated
-	protected final void configureWidgetProperties(
-			Map<String, Object> widgetProperties) {
+	protected final void configureWidgetProperties(Map<String, Object> widgetProperties)
+	{
 		throw new UnsupportedOperationException("");
 	}
 
 	/**
-	 * Filter all empty elements (workaround for {@link DateFormatSymbols}
-	 * returning arrays with empty elements).
+	 * Filter all empty elements (workaround for {@link DateFormatSymbols} returning arrays with
+	 * empty elements).
 	 * 
 	 * @param array
 	 *            array to filter
 	 * @return filtered array (without null or empty string elements)
 	 */
-	protected final String[] filterEmpty(String[] array) {
-		if (array == null) {
+	protected final String[] filterEmpty(String[] array)
+	{
+		if (array == null)
+		{
 			return null;
 		}
 		List<String> l = new ArrayList<String>(array.length);
-		for (int i = 0; i < array.length; i++) {
-			if (!Strings.isEmpty(array[i])) {
+		for (int i = 0; i < array.length; i++)
+		{
+			if (!Strings.isEmpty(array[i]))
+			{
 				l.add(array[i]);
 			}
 		}
@@ -393,49 +409,52 @@
 	}
 
 	/**
-	 * Gets the id of the component that the calendar widget will get attached
-	 * to.
+	 * Gets the id of the component that the calendar widget will get attached to.
 	 * 
 	 * @return The DOM id of the component
 	 */
-	protected final String getComponentMarkupId() {
+	protected final String getComponentMarkupId()
+	{
 		return component.getMarkupId();
 	}
 
 	/**
-	 * Gets the date pattern to use for putting selected values in the coupled
-	 * component.
+	 * Gets the date pattern to use for putting selected values in the coupled component.
 	 * 
 	 * @return The date pattern
 	 */
-	protected String getDatePattern() {
+	protected String getDatePattern()
+	{
 		String format = null;
-		if (component instanceof ITextFormatProvider) {
-			format = ((ITextFormatProvider) component).getTextFormat();
+		if (component instanceof ITextFormatProvider)
+		{
+			format = ((ITextFormatProvider)component).getTextFormat();
 			// it is possible that components implement ITextFormatProvider but
 			// don't provide a format
 		}
 
-		if (format == null) {
-			IConverter<?> converter = component.getConverter(DateTime.class);
-			if (!(converter instanceof DateConverter)) {
+		if (format == null)
+		{
+			IConverter converter = component.getConverter(DateTime.class);
+			if (!(converter instanceof DateConverter))
+			{
 				converter = component.getConverter(Date.class);
 			}
-			format = ((SimpleDateFormat) ((DateConverter) converter)
-					.getDateFormat(component.getLocale())).toPattern();
+			format = ((SimpleDateFormat)((DateConverter)converter).getDateFormat(component
+					.getLocale())).toPattern();
 		}
 
 		return format;
 	}
 
 	/**
-	 * Gets the escaped DOM id that the calendar widget will get attached to.
-	 * All non word characters (\W) will be removed from the string.
+	 * Gets the escaped DOM id that the calendar widget will get attached to. All non word
+	 * characters (\W) will be removed from the string.
 	 * 
-	 * @return The DOM id of the calendar widget - same as the component's
-	 *         markup id + 'Dp'}
+	 * @return The DOM id of the calendar widget - same as the component's markup id + 'Dp'}
 	 */
-	protected final String getEscapedComponentMarkupId() {
+	protected final String getEscapedComponentMarkupId()
+	{
 		return component.getMarkupId().replaceAll("\\W", "");
 	}
 
@@ -444,7 +463,8 @@
 	 * 
 	 * @return The id of the icon
 	 */
-	protected final String getIconId() {
+	protected final String getIconId()
+	{
 		return getEscapedComponentMarkupId() + "Icon";
 	}
 
@@ -453,19 +473,19 @@
 	 * 
 	 * @return The style of the icon, e.g. 'cursor: point' etc.
 	 */
-	protected String getIconStyle() {
+	protected String getIconStyle()
+	{
 		return "cursor: pointer; border: none;";
 	}
 
 	/**
-	 * Gets the url for the popup button. Users can override to provide their
-	 * own icon URL.
+	 * Gets the url for the popup button. Users can override to provide their own icon URL.
 	 * 
 	 * @return the url to use for the popup button/ icon
 	 */
-	protected CharSequence getIconUrl() {
-		return RequestCycle.get().urlFor(
-				new ResourceReference(DatePicker.class, "icon1.gif"));
+	protected CharSequence getIconUrl()
+	{
+		return RequestCycle.get().urlFor(new ResourceReference(DatePicker.class, "icon1.gif"));
 	}
 
 	/**
@@ -473,75 +493,88 @@
 	 * 
 	 * @return By default the locale of the bound component.
 	 */
-	protected Locale getLocale() {
+	protected Locale getLocale()
+	{
 		return component.getLocale();
 	}
 
 	/**
-	 * Configure the localized strings for the datepicker widget. This
-	 * implementation uses {@link DateFormatSymbols} and some slight string
-	 * manupilation to get the strings for months and week days. Also, the first
-	 * week day is set according to the {@link Locale} returned by
+	 * Configure the localized strings for the datepicker widget. This implementation uses
+	 * {@link DateFormatSymbols} and some slight string manupilation to get the strings for months
+	 * and week days. Also, the first week day is set according to the {@link Locale} returned by
 	 * {@link #getLocale()}. It should work well for most locales.
 	 * <p>
-	 * This method is called from {@link #configureWidgetProperties(Map)} and
-	 * can be overridden if you want to customize setting up the localized
-	 * strings but are happy with the rest of
-	 * {@link #configureWidgetProperties(Map)}'s behavior. Note that you can
-	 * call (overridable) method {@link #getLocale()} to get the locale that
-	 * should be used for setting up the widget.
+	 * This method is called from {@link #configureWidgetProperties(Map)} and can be overridden if
+	 * you want to customize setting up the localized strings but are happy with the rest of
+	 * {@link #configureWidgetProperties(Map)}'s behavior. Note that you can call (overridable)
+	 * method {@link #getLocale()} to get the locale that should be used for setting up the widget.
 	 * </p>
 	 * <p>
-	 * See YUI Calendar's <a
-	 * href="http://developer.yahoo.com/yui/examples/calendar/germany/1.html">
+	 * See YUI Calendar's <a href="http://developer.yahoo.com/yui/examples/calendar/germany/1.html">
 	 * German</a> and <a
-	 * href="http://developer.yahoo.com/yui/examples/calendar/japan/1.html">Japanese</a>
-	 * examples for more info.
+	 * href="http://developer.yahoo.com/yui/examples/calendar/japan/1.html">Japanese</a> examples
+	 * for more info.
 	 * </p>
 	 * 
 	 * @param widgetProperties
 	 *            the current widget properties
 	 */
-	protected void localize(Map<String, Object> widgetProperties) {
-		DateFormatSymbols dfSymbols = new DateFormatSymbols(getLocale());
-		if (Locale.SIMPLIFIED_CHINESE.equals(getLocale())) {
-			dfSymbols.setShortWeekdays(new String[] { "", "\u65E5", "\u4E00",
-					"\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D" });
-		}
-		setWidgetProperty(widgetProperties, "MONTHS_SHORT",
-				filterEmpty(dfSymbols.getShortMonths()));
-		setWidgetProperty(widgetProperties, "MONTHS_LONG",
-				filterEmpty(dfSymbols.getMonths()));
-		setWidgetProperty(widgetProperties, "WEEKDAYS_1CHAR",
-				filterEmpty(substring(dfSymbols.getShortWeekdays(), 1)));
-		setWidgetProperty(widgetProperties, "WEEKDAYS_SHORT",
-				filterEmpty(substring(dfSymbols.getShortWeekdays(), 2)));
-		setWidgetProperty(widgetProperties, "WEEKDAYS_MEDIUM",
-				filterEmpty(dfSymbols.getShortWeekdays()));
-		setWidgetProperty(widgetProperties, "WEEKDAYS_LONG",
-				filterEmpty(dfSymbols.getWeekdays()));
-
-		widgetProperties.put("START_WEEKDAY", new Integer(Calendar.getInstance(
-				getLocale()).getFirstDayOfWeek() - 1));
+	protected void localize(Map<String, Object> widgetProperties)
+	{
+		DateFormatSymbols dfSymbols = null;
+		if (GETINSTANCEMETHOD != null)
+		{
+			// try to use JDK 6 DateFormatSymbols.getInstance(Locale)
+			try
+			{
+				dfSymbols = (DateFormatSymbols)GETINSTANCEMETHOD.invoke(null,
+						new Object[] { getLocale() });
+			}
+			catch (Exception e)
+			{
+				// ignore
+			}
+		}
+		if (dfSymbols == null)
+		{
+			dfSymbols = new DateFormatSymbols(getLocale());
+		}
+
+		if (Locale.SIMPLIFIED_CHINESE.equals(getLocale()))
+		{
+			dfSymbols.setShortWeekdays(new String[] { "", "\u65E5", "\u4E00", "\u4E8C", "\u4E09",
+					"\u56DB", "\u4E94", "\u516D" });
+		}
+		setWidgetProperty(widgetProperties, "MONTHS_SHORT", filterEmpty(dfSymbols.getShortMonths()));
+		setWidgetProperty(widgetProperties, "MONTHS_LONG", filterEmpty(dfSymbols.getMonths()));
+		setWidgetProperty(widgetProperties, "WEEKDAYS_1CHAR", filterEmpty(substring(dfSymbols
+				.getShortWeekdays(), 1)));
+		setWidgetProperty(widgetProperties, "WEEKDAYS_SHORT", filterEmpty(substring(dfSymbols
+				.getShortWeekdays(), 2)));
+		setWidgetProperty(widgetProperties, "WEEKDAYS_MEDIUM", filterEmpty(dfSymbols
+				.getShortWeekdays()));
+		setWidgetProperty(widgetProperties, "WEEKDAYS_LONG", filterEmpty(dfSymbols.getWeekdays()));
+
+		widgetProperties.put("START_WEEKDAY", new Integer(Calendar.getInstance(getLocale())
+				.getFirstDayOfWeek() - 1));
 	}
 
 	/**
-	 * Whether to notify the associated component when a date is selected.
-	 * Notifying is done by calling the associated component's onchange
-	 * Javascript event handler. You can for instance attach an
-	 * {@link AjaxEventBehavior} to that component to get a call back to the
-	 * server. The default is true.
+	 * Whether to notify the associated component when a date is selected. Notifying is done by
+	 * calling the associated component's onchange Javascript event handler. You can for instance
+	 * attach an {@link AjaxEventBehavior} to that component to get a call back to the server. The
+	 * default is true.
 	 * 
-	 * @return if true, notifies the associated component when a date is
-	 *         selected
+	 * @return if true, notifies the associated component when a date is selected
 	 */
-	protected boolean notifyComponentOnDateSelected() {
+	protected boolean notifyComponentOnDateSelected()
+	{
 		return true;
 	}
 
 	/**
-	 * Makes a copy of the provided array and for each element copy the
-	 * substring 0..len to the new array
+	 * Makes a copy of the provided array and for each element copy the substring 0..len to the new
+	 * array
 	 * 
 	 * @param array
 	 *            array to copy from
@@ -549,15 +582,22 @@
 	 *            size of substring for each element to copy
 	 * @return copy of the array filled with substrings.
 	 */
-	protected final String[] substring(String[] array, int len) {
-		if (array != null) {
+	protected final String[] substring(String[] array, int len)
+	{
+		if (array != null)
+		{
 			String[] copy = new String[array.length];
-			for (int i = 0; i < array.length; i++) {
+			for (int i = 0; i < array.length; i++)
+			{
 				String el = array[i];
-				if (el != null) {
-					if (el.length() > len) {
+				if (el != null)
+				{
+					if (el.length() > len)
+					{
 						copy[i] = el.substring(0, len);
-					} else {
+					}
+					else
+					{
 						copy[i] = el;
 					}
 				}
@@ -568,52 +608,52 @@
 	}
 
 	/**
-	 * Indicates whether plain text is rendered or two select boxes are used to
-	 * allow direct selection of month and year.
+	 * 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.
+	 * @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() {
+	protected boolean enableMonthYearSelection()
+	{
 		return false;
 	}
 
 	/**
-	 * Indicates whether the calendar should be hidden after a date was
-	 * selected.
+	 * Indicates whether the calendar should be hidden after a date was selected.
 	 * 
-	 * @return <code>true</code> (default) if the calendar should be hidden
-	 *         after the date selection <br/><code>false</code> if the
-	 *         calendar should remain visible after the date selection.
+	 * @return <code>true</code> (default) if the calendar should be hidden after the date selection <br/>
+	 *         <code>false</code> if the calendar should remain visible after the date selection.
 	 */
-	protected boolean hideOnSelect() {
+	protected boolean hideOnSelect()
+	{
 		return true;
 	}
 
 	/**
-	 * Indicates whether the calendar should be rendered after it has been
-	 * loaded.
+	 * Indicates whether the calendar should be rendered after it has been loaded.
 	 * 
-	 * @return <code>true</code> if the calendar should be rendered after it
-	 *         has been loaded.<br/><code>false</code> (default) if it's
-	 *         initially hidden.
+	 * @return <code>true</code> if the calendar should be rendered after it has been loaded.<br/>
+	 *         <code>false</code> (default) if it's initially hidden.
 	 */
-	protected boolean renderOnLoad() {
+	protected boolean renderOnLoad()
+	{
 		return false;
 	}
 
 	/**
-	 * Override this method to further customize the YUI Calendar with
-	 * additional Javascript code. The code returned by this method is executed
-	 * right after the Calendar has been constructed and initialized. To refer
-	 * to the actual Calendar DOM object, use <code>${calendar}</code> in your
-	 * code.<br/>See <a href="http://developer.yahoo.com/yui/calendar/">the
-	 * widget's documentation</a> for more information about the YUI Calendar.<br/>
+	 * Override this method to further customize the YUI Calendar with additional Javascript code.
+	 * The code returned by this method is executed right after the Calendar has been constructed
+	 * and initialized. To refer to the actual Calendar DOM object, use <code>${calendar}</code> in
+	 * your code.<br/>
+	 * See <a href="http://developer.yahoo.com/yui/calendar/">the widget's documentation</a> for
+	 * more information about the YUI Calendar.<br/>
 	 * Example:
 	 * 
 	 * <pre>
-	 * protected String getAdditionalJavascript() {
+	 * protected String getAdditionalJavascript()
+	 * {
 	 * 	return &quot;${calendar}.addRenderer(\&quot;10/3\&quot;, ${calendar}.renderCellStyleHighlight1);&quot;;
 	 * }
 	 * </pre>
@@ -621,7 +661,8 @@
 	 * @return a String containing additional Javascript code
 	 * 
 	 */
-	protected String getAdditionalJavascript() {
+	protected String getAdditionalJavascript()
+	{
 		return "";
 	}
 
@@ -629,7 +670,8 @@
 	 * @see org.apache.wicket.behavior.AbstractBehavior#isEnabled(org.apache.wicket.Component)
 	 */
 	@Override
-	public boolean isEnabled(Component component) {
-		return component.isEnabled() && component.isEnableAllowed();
+	public boolean isEnabled(Component component)
+	{
+		return component.isEnabledInHierarchy();
 	}
 }

Modified: wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DateTimeField.java Sat Jan 17 10:27:57 2009
@@ -38,16 +38,17 @@
 import org.apache.wicket.util.lang.EnumeratedType;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.validator.NumberValidator;
+import org.apache.wicket.validation.validator.RangeValidator;
 import org.joda.time.DateTimeFieldType;
 import org.joda.time.DateTimeZone;
 import org.joda.time.MutableDateTime;
 import org.joda.time.format.DateTimeFormat;
 
 /**
- * Works on a {@link java.util.Date} object. Displays a date field and a {@link DatePicker}, a
- * field for hours and a field for minutes, and an AM/PM field. The format (12h/24h) of the hours
- * field depends on the time format of this {@link DateTimeField}'s {@link Locale}, as does the
- * visibility of the AM/PM field (see {@link DateTimeField#use12HourFormat}).
+ * Works on a {@link java.util.Date} object. Displays a date field and a {@link DatePicker}, a field
+ * for hours and a field for minutes, and an AM/PM field. The format (12h/24h) of the hours field
+ * depends on the time format of this {@link DateTimeField}'s {@link Locale}, as does the visibility
+ * of the AM/PM field (see {@link DateTimeField#use12HourFormat}).
  * 
  * @author eelcohillenius
  * @see DateField for a variant with just the date field and date picker
@@ -77,7 +78,7 @@
 		}
 	}
 
-	private static final IConverter<Integer> MINUTES_CONVERTER = new ZeroPaddingIntegerConverter(2);
+	private static final IConverter MINUTES_CONVERTER = new ZeroPaddingIntegerConverter(2);
 
 	private static final long serialVersionUID = 1L;
 
@@ -146,7 +147,7 @@
 				return MINUTES_CONVERTER;
 			}
 		});
-		minutesField.add(NumberValidator.range(0, 59));
+		minutesField.add(new RangeValidator<Integer>(0, 59));
 		minutesField.setLabel(new Model<String>("minutes"));
 		add(amOrPmChoice = new DropDownChoice<AM_PM>("amOrPmChoice", new PropertyModel<AM_PM>(this,
 				"amOrPm"), Arrays.asList(AM_PM.values())));
@@ -288,8 +289,8 @@
 		if (dateFieldInput != null)
 		{
 			MutableDateTime date = new MutableDateTime(dateFieldInput);
-			Integer hours = (Integer)hoursField.getConvertedInput();
-			Integer minutes = (Integer)minutesField.getConvertedInput();
+			Integer hours = hoursField.getConvertedInput();
+			Integer minutes = minutesField.getConvertedInput();
 			AM_PM amOrPm = amOrPmChoice.getConvertedInput();
 
 			try
@@ -360,10 +361,11 @@
 		hoursField.setRequired(isRequired());
 		minutesField.setRequired(isRequired());
 
-		dateField.setEnabled(isEnabled() && isEnableAllowed());
-		hoursField.setEnabled(isEnabled() && isEnableAllowed());
-		minutesField.setEnabled(isEnabled() && isEnableAllowed());
-		amOrPmChoice.setEnabled(isEnabled() && isEnableAllowed());
+		// obsolete with WICKET-1919
+		// dateField.setEnabled(isEnabledInHierarchy());
+		// hoursField.setEnabled(isEnabledInHierarchy());
+		// minutesField.setEnabled(isEnabledInHierarchy());
+		// amOrPmChoice.setEnabled(isEnabledInHierarchy());
 
 		boolean use12HourFormat = use12HourFormat();
 		amOrPmChoice.setVisible(use12HourFormat);
@@ -413,7 +415,8 @@
 	 * Checks whether the current {@link Locale} uses the 12h or 24h time format. This method can be
 	 * overridden to e.g. always use 24h format.
 	 * 
-	 * @return true, if the current {@link Locale} uses the 12h format.<br/>false, otherwise
+	 * @return true, if the current {@link Locale} uses the 12h format.<br/>
+	 *         false, otherwise
 	 */
 	protected boolean use12HourFormat()
 	{

Modified: wicket/sandbox/knopp/experimental/wicket-examples/.amateras
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-examples/.amateras?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-examples/.amateras (original)
+++ wicket/sandbox/knopp/experimental/wicket-examples/.amateras Sat Jan 17 10:27:57 2009
@@ -1,11 +1,12 @@
 #EclipseHTMLEditor configuration file
-#Tue Apr 10 14:11:00 CEST 2007
-validateDTD=true
-useDTD=true
-validateJSP=true
-validateXML=true
-validateJS=true
+#Thu Oct 16 09:06:23 PDT 2008
+validateDTD=false
+javaScriptCompleters=
+useDTD=false
+validateJSP=false
+validateXML=false
+validateJS=false
 removeMarkers=true
 root=/
-validateHTML=true
+validateHTML=false
 javaScripts=

Modified: wicket/sandbox/knopp/experimental/wicket-examples/pom.xml
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-examples/pom.xml?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-examples/pom.xml (original)
+++ wicket/sandbox/knopp/experimental/wicket-examples/pom.xml Sat Jan 17 10:27:57 2009
@@ -63,6 +63,10 @@
 			<artifactId>wicket-spring</artifactId>
 		</dependency>
 		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring</artifactId>
+		</dependency>
+		<dependency>
 			<groupId>commons-lang</groupId>
 			<artifactId>commons-lang</artifactId>
 		</dependency>
@@ -123,6 +127,13 @@
 				</configuration>
 			</plugin>
 			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<configuration>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+			<plugin>
 				<groupId>org.mortbay.jetty</groupId>
 				<artifactId>maven-jetty-plugin</artifactId>
 			</plugin>

Modified: wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/OnChangeAjaxBehaviorPage.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/OnChangeAjaxBehaviorPage.java?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/OnChangeAjaxBehaviorPage.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/OnChangeAjaxBehaviorPage.java Sat Jan 17 10:27:57 2009
@@ -63,13 +63,13 @@
 	 */
 	public OnChangeAjaxBehaviorPage()
 	{
-		Form form = new Form("form");
+		Form<Void> form = new Form<Void>("form");
 		add(form);
 
-		final TextField field = new TextField("field", new Model(""));
+		final TextField<String> field = new TextField<String>("field", new Model<String>(""));
 		form.add(field);
 
-		final Label label = new Label("selectedValue", new Model(""));
+		final Label label = new Label("selectedValue", new Model<String>(""));
 		label.setOutputMarkupId(true);
 		form.add(label);
 

Modified: wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java?rev=735320&r1=735319&r2=735320&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java (original)
+++ wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java Sat Jan 17 10:27:57 2009
@@ -51,7 +51,7 @@
 	/**
 	 * Link to reset the ratings.
 	 */
-	private final class ResetRatingLink extends Link
+	private final class ResetRatingLink extends Link<RatingModel>
 	{
 		/** For serialization. */
 		private static final long serialVersionUID = 1L;
@@ -64,7 +64,7 @@
 		 * @param object
 		 *            the model to reset.
 		 */
-		public ResetRatingLink(String id, IModel object)
+		public ResetRatingLink(String id, IModel<RatingModel> object)
 		{
 			super(id, object);
 		}
@@ -72,9 +72,10 @@
 		/**
 		 * @see Link#onClick()
 		 */
+		@Override
 		public void onClick()
 		{
-			RatingModel rating = (RatingModel)getDefaultModelObject();
+			RatingModel rating = getModelObject();
 			rating.nrOfVotes = 0;
 			rating.rating = 0;
 			rating.sumOfRatings = 0;
@@ -167,38 +168,44 @@
 	 */
 	public RatingsPage()
 	{
-		add(new RatingPanel("rating1", new PropertyModel(rating1, "rating"), 5, new PropertyModel(
+		add(new RatingPanel("rating1", new PropertyModel<Integer>(rating1, "rating"), 5, new PropertyModel<Integer>(
 				rating1, "nrOfVotes"), true)
 		{
+			@Override
 			protected boolean onIsStarActive(int star)
 			{
 				return RatingsPage.rating1.isActive(star);
 			}
 
+			@Override
 			protected void onRated(int rating, AjaxRequestTarget target)
 			{
 				RatingsPage.rating1.addRating(rating);
 			}
 		});
-		add(new RatingPanel("rating2", new PropertyModel(rating2, "rating"),
-							new Model(5), new PropertyModel(rating2, "nrOfVotes"),
-							new PropertyModel(this, "hasVoted"), true)
+		add(new RatingPanel("rating2", new PropertyModel<Integer>(rating2, "rating"),
+							new Model<Integer>(5), new PropertyModel<Integer>(rating2, "nrOfVotes"),
+							new PropertyModel<Boolean>(this, "hasVoted"), true)
 		{
+			@Override
 			protected String getActiveStarUrl(int iteration)
 			{
 				return getRequestCycle().urlFor(WICKETSTAR1).toString();
 			}
 
+			@Override
 			protected String getInactiveStarUrl(int iteration)
 			{
 				return getRequestCycle().urlFor(WICKETSTAR0).toString();
 			}
 
+			@Override
 			protected boolean onIsStarActive(int star)
 			{
 				return RatingsPage.rating2.isActive(star);
 			}
 
+			@Override
 			protected void onRated(int rating, AjaxRequestTarget target)
 			{
 				// make sure the user can't vote again
@@ -206,8 +213,8 @@
 				RatingsPage.rating2.addRating(rating);
 			}
 		});
-		add(new ResetRatingLink("reset1", new Model(rating1)));
-		add(new ResetRatingLink("reset2", new Model(rating2)));
+		add(new ResetRatingLink("reset1", new Model<RatingModel>(rating1)));
+		add(new ResetRatingLink("reset2", new Model<RatingModel>(rating2)));
 	}
 
 	/**

Added: wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/CheckGroupPage2.html
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/CheckGroupPage2.html?rev=735320&view=auto
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/CheckGroupPage2.html (added)
+++ wicket/sandbox/knopp/experimental/wicket-examples/src/main/java/org/apache/wicket/examples/compref/CheckGroupPage2.html Sat Jan 17 10:27:57 2009
@@ -0,0 +1,56 @@
+
+<?xml version="1.0" encoding="UTF-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml" >
+<head>
+    <title>Wicket Examples - component reference</title>
+    <link rel="stylesheet" type="text/css" href="style.css"/>
+</head>
+<body>
+    <span wicket:id="mainNavigation"/>
+
+	<h1>wicket.markup.html.form.CheckGroup</h1>
+	<wicket:link><a href="Index.html">[back to the reference]</a></wicket:link>
+
+	<p>
+	A CheckBoxGroup and CheckBoxComponnet components let users select multiple values from a group of checkboxes. These components are more flexible then the CheckBoxMultipleChoice component in that individual checkboxes are full components, unlike with CheckBoxMultipleChoice, and thus can be used anywhere in the markup.
+	</p>
+	<p>
+	 <form wicket:id="form">
+		<wicket:container wicket:id="group">
+			<wicket:container wicket:id="group2">
+				<table style="border: 2px dotted #fc0; width: 400px; padding: 5px;">
+				 <tr>
+				  <td valign="top">Select persons</td>
+				  <td>
+					  <input type="checkbox" wicket:id="groupselector">check/uncheck all in selection 1</input><br/>
+					  <input type="checkbox" wicket:id="groupselector2">check/uncheck all in selection 2</input><br/>
+					  <table cellspacing="0" cellpadding="2">
+						<tr>
+							<td><b>Select1</b></td>
+							<td><b>Select2</b></td>
+							<td><b>First Name</b></td>
+							<td><b>Last Name</b></td>
+						</tr>
+					  	<tr wicket:id="persons">
+					  		<td><input type="checkbox" wicket:id="checkbox"/></td>
+					  		<td><input type="checkbox" wicket:id="checkbox2"/></td>
+					  		<td><span wicket:id="name">[this is where name will be]</span></td>
+					  		<td><span wicket:id="lastName">[this is where lastname will be]</span></td>
+					  	</tr>
+					  </table>
+					  <span valign="top">
+					  </span>
+				  </td>
+				 </tr>
+				 <tr>
+				  <td colspan="2" align="center">
+				   <input type="submit" value="submit" />
+				  </td>
+				 </tr>
+				</table>
+			</wicket:container>
+		</wicket:container>
+	 </form>
+	 <span wicket:id="feedback">feedbackmessages will be put here</span>
+</body>
+</html>