package com.rectang.xsm.widget; import com.rectang.xsm.doc.DocWidget; import java.text.SimpleDateFormat; import java.text.ParseException; import java.io.Serializable; import java.lang.*; import java.lang.String; import org.jdom.Element; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; import org.apache.wicket.extensions.yui.calendar.DatePicker; import org.apache.wicket.datetime.markup.html.form.DateTextField; import org.apache.wicket.datetime.DateConverter; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormat; public class Date extends DocWidget implements Serializable { private SimpleDateFormat store = new SimpleDateFormat( "yyyy-MM-dd" ); private SimpleDateFormat format = new SimpleDateFormat( "EEE, d MMMM yyyy" ); public Date( java.lang.String name ) { super( name ); } private synchronized java.util.Date parseDate( Element node ) { if ( node == null || node.getValue() == null || node.getValue().equals( "" ) ) { return new java.util.Date(); } try { return store.parse( node.getValue() ); } catch ( Exception e ) { return new java.util.Date(); } } private synchronized java.lang.String formatDate( java.util.Date date ) { return store.format( date ); } private synchronized java.lang.String renderDate( java.util.Date date ) { return format.format( date ); } public void view( Element node, StringBuffer s ) { s.append( renderDate( parseDate( node ) ) ); } public void publish( Element node, StringBuffer s ) { s.append( renderDate( parseDate( node ) ) ); } public WebMarkupContainer edit( java.lang.String wicketId, Element node, java.lang.String path ) { return new DatePanel( wicketId, node ); } protected SimpleDateFormat getStoreFormat() { return store; } public void create( Element node ) { node.setText( formatDate( new java.util.Date() ) ); } class DatePanel extends Panel { public DatePanel( java.lang.String id, final Element node ) { super( id ); // TODO methinks this could be improved to display in the user's locale final DateConverter conv = new DateConverter( true ) { public String getDatePattern() { return getStoreFormat().toPattern(); } protected DateTimeFormatter getFormat() { return DateTimeFormat.forPattern( getStoreFormat().toPattern() ); } }; TextField<java.util.Date> date = DateTextField.withConverter( "value", new Model<java.util.Date>() { public void setObject( java.util.Date object ) { node.setText( getStoreFormat().format( object ) ); } public java.util.Date getObject() { try { return getStoreFormat().parse( node.getText() ); } catch ( ParseException e ) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } return null; } }, conv ); add( new Label( "label", name ) ); add( date.add( new DatePicker() ) ); } } }