Änderungen in Date, Time und DateTime Widgets um codeverdopplungen zu vermeiden
git-svn-id: https://svn.libreccm.org/ccm/trunk@379 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
dbff86175b
commit
5cd3d70eb9
|
|
@ -29,7 +29,6 @@ import com.arsdigita.util.Assert;
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.DateParameter;
|
import com.arsdigita.bebop.parameters.DateParameter;
|
||||||
import com.arsdigita.bebop.parameters.ParameterData;
|
import com.arsdigita.bebop.parameters.ParameterData;
|
||||||
import com.arsdigita.bebop.util.BebopConstants;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.Form;
|
import com.arsdigita.bebop.Form;
|
||||||
import com.arsdigita.bebop.FormData;
|
import com.arsdigita.bebop.FormData;
|
||||||
|
|
@ -40,6 +39,7 @@ import com.arsdigita.kernel.Kernel;
|
||||||
import com.arsdigita.bebop.util.BebopConstants;
|
import com.arsdigita.bebop.util.BebopConstants;
|
||||||
|
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -48,7 +48,8 @@ import java.util.Locale;
|
||||||
* @author Karl Goldstein
|
* @author Karl Goldstein
|
||||||
* @author Uday Mathur
|
* @author Uday Mathur
|
||||||
* @author Michael Pih
|
* @author Michael Pih
|
||||||
* @version $Id: Date.java 287 2005-02-22 00:29:02Z sskracic $
|
* @author Sören Bernstein
|
||||||
|
* @version $Id: Date.java 288 2010-02-20 07:29:00Z sbernstein $
|
||||||
*/
|
*/
|
||||||
public class Date extends Widget implements BebopConstants {
|
public class Date extends Widget implements BebopConstants {
|
||||||
|
|
||||||
|
|
@ -66,6 +67,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -74,6 +76,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
Object value = parent.getFragmentValue(ps, Calendar.YEAR);
|
Object value = parent.getFragmentValue(ps, Calendar.YEAR);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -95,6 +98,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -103,6 +107,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
return parent.getFragmentValue(ps, Calendar.MONTH);
|
return parent.getFragmentValue(ps, Calendar.MONTH);
|
||||||
}
|
}
|
||||||
|
|
@ -118,6 +123,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -126,6 +132,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
return parent.getFragmentValue(ps, Calendar.DATE);
|
return parent.getFragmentValue(ps, Calendar.DATE);
|
||||||
}
|
}
|
||||||
|
|
@ -211,10 +218,12 @@ public class Date extends Widget implements BebopConstants {
|
||||||
|
|
||||||
/** The XML tag for this derived class of Widget.
|
/** The XML tag for this derived class of Widget.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
protected String getElementTag() {
|
protected String getElementTag() {
|
||||||
return BEBOP_DATE;
|
return BEBOP_DATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void generateWidget(PageState ps, Element parent) {
|
public void generateWidget(PageState ps, Element parent) {
|
||||||
|
|
||||||
if ( ! isVisible(ps) ) {
|
if ( ! isVisible(ps) ) {
|
||||||
|
|
@ -222,24 +231,37 @@ public class Date extends Widget implements BebopConstants {
|
||||||
}
|
}
|
||||||
|
|
||||||
Element date = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
Element date = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||||
// parent.addContent(date);
|
|
||||||
date.addAttribute("name", getParameterModel().getName());
|
date.addAttribute("name", getParameterModel().getName());
|
||||||
exportAttributes(date);
|
exportAttributes(date);
|
||||||
m_month.generateXML(ps, date);
|
generateLocalizedWidget(ps, date);
|
||||||
m_day .generateXML(ps, date);
|
|
||||||
m_year .generateXML(ps, date);
|
|
||||||
|
|
||||||
|
// If Element could be null insert an extra widget to clear entry
|
||||||
if (!hasValidationListener(new NotNullValidationListener())) {
|
if (!hasValidationListener(new NotNullValidationListener())) {
|
||||||
date.newChildElement("NoDate");
|
date.newChildElement("NoDate");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resepct the localized
|
||||||
|
public void generateLocalizedWidget(PageState ps, Element date) {
|
||||||
|
|
||||||
|
// Get the current Pattern
|
||||||
|
// String format = new SimpleDateFormat(SimpleDateFormat.SHORT, Kernel.getContext().getLocale()).toPattern();
|
||||||
|
String format = new SimpleDateFormat().toPattern();
|
||||||
|
|
||||||
|
m_month.generateXML(ps, date);
|
||||||
|
m_day.generateXML(ps, date);
|
||||||
|
m_year.generateXML(ps, date);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setDisabled() {
|
public void setDisabled() {
|
||||||
m_month.setDisabled();
|
m_month.setDisabled();
|
||||||
m_day.setDisabled();
|
m_day.setDisabled();
|
||||||
m_year.setDisabled();
|
m_year.setDisabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setReadOnly() {
|
public void setReadOnly() {
|
||||||
m_month.setReadOnly();
|
m_month.setReadOnly();
|
||||||
m_day.setReadOnly();
|
m_day.setReadOnly();
|
||||||
|
|
@ -255,6 +277,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
* @param the <code>Form</code> Object for this Widget.
|
* @param the <code>Form</code> Object for this Widget.
|
||||||
* @exception IllegalStateException if form already set.
|
* @exception IllegalStateException if form already set.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void setForm(Form f) {
|
public void setForm(Form f) {
|
||||||
super .setForm(f);
|
super .setForm(f);
|
||||||
m_year .setForm(f);
|
m_year .setForm(f);
|
||||||
|
|
@ -276,6 +299,7 @@ public class Date extends Widget implements BebopConstants {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setClassAttr(String at) {
|
public void setClassAttr(String at) {
|
||||||
m_month.setClassAttr(at);
|
m_month.setClassAttr(at);
|
||||||
m_year.setClassAttr(at);
|
m_year.setClassAttr(at);
|
||||||
|
|
@ -284,5 +308,6 @@ public class Date extends Widget implements BebopConstants {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't lock
|
// Don't lock
|
||||||
|
@Override
|
||||||
public void lock() {}
|
public void lock() {}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,221 +19,24 @@
|
||||||
package com.arsdigita.bebop.form;
|
package com.arsdigita.bebop.form;
|
||||||
|
|
||||||
import com.arsdigita.bebop.Form;
|
import com.arsdigita.bebop.Form;
|
||||||
import com.arsdigita.bebop.FormData;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.parameters.DateTimeParameter;
|
import com.arsdigita.bebop.parameters.DateTimeParameter;
|
||||||
import com.arsdigita.bebop.parameters.NumberInRangeValidationListener;
|
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.ParameterData;
|
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.util.Assert;
|
|
||||||
import com.arsdigita.bebop.util.BebopConstants;
|
|
||||||
import com.arsdigita.bebop.util.BebopConstants;
|
import com.arsdigita.bebop.util.BebopConstants;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
import java.text.DateFormatSymbols;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class representing a date and time field in an HTML form.
|
* A class representing a date and time field in an HTML form.
|
||||||
* (based on the code in Date.java)
|
* (based on the code in Date.java)
|
||||||
*
|
*
|
||||||
* @author Scott Seago
|
* @author Sören Bernstein
|
||||||
* @version $Id: DateTime.java 287 2005-02-22 00:29:02Z sskracic $
|
* @version $Id: DateTime.java 288 2010-02-20 07:29:00Z ssbernstein $
|
||||||
*/
|
*/
|
||||||
public class DateTime extends Widget implements BebopConstants {
|
public class DateTime extends Widget implements BebopConstants {
|
||||||
|
|
||||||
private OptionGroup m_year;
|
private Date m_date;
|
||||||
private OptionGroup m_month;
|
private Time m_time;
|
||||||
private TextField m_day;
|
|
||||||
private TextField m_hour;
|
|
||||||
private TextField m_minute;
|
|
||||||
private TextField m_second;
|
|
||||||
private OptionGroup m_amOrPm;
|
|
||||||
private static final String ZERO = "0";
|
|
||||||
private boolean m_showSeconds;
|
|
||||||
|
|
||||||
// Inner classes for the fragment widgets
|
|
||||||
private class YearFragment extends SingleSelect {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public YearFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
Object value = parent.getFragmentValue(ps, Calendar.YEAR);
|
|
||||||
if (value == null) {
|
|
||||||
Calendar currentTime = GregorianCalendar.getInstance();
|
|
||||||
int currentYear = currentTime.get(Calendar.YEAR);
|
|
||||||
value = new Integer(currentYear);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private class MonthFragment extends SingleSelect {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public MonthFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
return parent.getFragmentValue(ps, Calendar.MONTH);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private class DayFragment extends TextField {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public DayFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
return parent.getFragmentValue(ps, Calendar.DATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class HourFragment extends TextField {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public HourFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
this.addValidationListener(new NumberInRangeValidationListener(1,12));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
return parent.getFragmentValue(ps, Calendar.HOUR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class MinuteFragment extends TextField {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public MinuteFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
this.addValidationListener(new NumberInRangeValidationListener(0,59));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
Integer min = (Integer) parent.getFragmentValue(ps, Calendar.MINUTE);
|
|
||||||
if (min == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if ( min.intValue() < 10 ) {
|
|
||||||
return ZERO + min.toString();
|
|
||||||
} else {
|
|
||||||
return min.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class SecondFragment extends TextField {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public SecondFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
this.addValidationListener(new NumberInRangeValidationListener(0,59));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
Integer sec = (Integer) parent.getFragmentValue(ps, Calendar.SECOND);
|
|
||||||
if (sec == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if ( sec.intValue() < 10 ) {
|
|
||||||
return ZERO + sec.toString();
|
|
||||||
} else {
|
|
||||||
return sec.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class AmPmFragment extends SingleSelect {
|
|
||||||
|
|
||||||
private DateTime parent;
|
|
||||||
|
|
||||||
public AmPmFragment(String name, DateTime parent) {
|
|
||||||
super(name);
|
|
||||||
this.parent = parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
|
||||||
Object value = getValue(ps);
|
|
||||||
if (value == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ParameterData(getParameterModel(), value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getValue(PageState ps) {
|
|
||||||
return parent.getFragmentValue(ps, Calendar.AM_PM);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new DateTime. The model must be a DateTimeParameter
|
* Construct a new DateTime. The model must be a DateTimeParameter
|
||||||
|
|
@ -248,69 +51,14 @@ public class DateTime extends Widget implements BebopConstants {
|
||||||
public DateTime(ParameterModel model, boolean showSeconds) {
|
public DateTime(ParameterModel model, boolean showSeconds) {
|
||||||
super(model);
|
super(model);
|
||||||
|
|
||||||
if ( ! (model instanceof DateTimeParameter)) {
|
if (!(model instanceof DateTimeParameter)) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"The DateTime widget " + model.getName() +
|
"The DateTime widget " + model.getName() +
|
||||||
" must be backed by a DateTimeParameter parmeter model");
|
" must be backed by a DateTimeParameter parmeter model");
|
||||||
}
|
|
||||||
|
|
||||||
String name = model.getName();
|
|
||||||
String nameYear = name + ".year";
|
|
||||||
String nameMonth = name + ".month";
|
|
||||||
String nameDay = name + ".day";
|
|
||||||
String nameHour = name + ".hour";
|
|
||||||
String nameMinute = name + ".minute";
|
|
||||||
String nameSecond = name + ".second";
|
|
||||||
String nameAmOrPm = name + ".amOrPm";
|
|
||||||
|
|
||||||
|
|
||||||
DateFormatSymbols dfs = new DateFormatSymbols();
|
|
||||||
Calendar currentTime = GregorianCalendar.getInstance();
|
|
||||||
|
|
||||||
m_year = new YearFragment(nameYear, this);
|
|
||||||
m_month = new MonthFragment(nameMonth, this);
|
|
||||||
m_day = new DayFragment(nameDay, this);
|
|
||||||
m_hour = new HourFragment(nameHour, this);
|
|
||||||
m_minute = new MinuteFragment(nameMinute, this);
|
|
||||||
m_showSeconds = showSeconds;
|
|
||||||
if (m_showSeconds) {
|
|
||||||
m_second = new SecondFragment(nameSecond, this);
|
|
||||||
} else {
|
|
||||||
m_second = null;
|
|
||||||
}
|
|
||||||
m_amOrPm = new AmPmFragment(nameAmOrPm, this);
|
|
||||||
|
|
||||||
m_day.setMaxLength(2);
|
|
||||||
m_day.setSize(2);
|
|
||||||
m_hour.setMaxLength(2);
|
|
||||||
m_hour.setSize(2);
|
|
||||||
m_minute.setMaxLength(2);
|
|
||||||
m_minute.setSize(2);
|
|
||||||
if (m_showSeconds) {
|
|
||||||
m_second.setMaxLength(2);
|
|
||||||
m_second.setSize(2);
|
|
||||||
}
|
|
||||||
String [] months = dfs.getMonths();
|
|
||||||
|
|
||||||
for (int i=0; i<months.length; i+=1) { // globalize ?
|
|
||||||
// This check is necessary because
|
|
||||||
// java.text.DateFormatSymbols.getMonths() returns an array
|
|
||||||
// of 13 Strings: 12 month names and an empty string.
|
|
||||||
if ( months[i].length() > 0 ) {
|
|
||||||
m_month.addOption(new Option(String.valueOf(i),months[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int currentYear = currentTime.get(Calendar.YEAR);
|
|
||||||
setYearRange(currentYear - 1, currentYear + 3);
|
|
||||||
|
|
||||||
|
|
||||||
String [] amPmStrings = dfs.getAmPmStrings();
|
|
||||||
for (int i=0; i<amPmStrings.length; i+=1) {
|
|
||||||
//if ( amPmStrings[i].length() > 0 ) {
|
|
||||||
m_amOrPm.addOption(new Option(String.valueOf(i),amPmStrings[i]));
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_date = new Date(model);
|
||||||
|
m_time = new Time(model, showSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DateTime(String name) {
|
public DateTime(String name) {
|
||||||
|
|
@ -318,11 +66,7 @@ public class DateTime extends Widget implements BebopConstants {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setYearRange(int startYear, int endYear) {
|
public void setYearRange(int startYear, int endYear) {
|
||||||
Assert.isUnlocked(this);
|
m_date.setYearRange(startYear, endYear);
|
||||||
m_year.clearOptions();
|
|
||||||
for (int j= startYear; j<=endYear; j+=1) {
|
|
||||||
m_year.addOption(new Option(String.valueOf(j)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -346,51 +90,39 @@ public class DateTime extends Widget implements BebopConstants {
|
||||||
|
|
||||||
/** The XML tag for this derived class of Widget.
|
/** The XML tag for this derived class of Widget.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
protected String getElementTag() {
|
protected String getElementTag() {
|
||||||
return BEBOP_DATETIME;
|
return BEBOP_DATETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void generateWidget(PageState ps, Element parent) {
|
public void generateWidget(PageState ps, Element parent) {
|
||||||
|
|
||||||
if ( ! isVisible(ps) ) {
|
if (!isVisible(ps)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element date = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
Element datetime = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||||
date.addAttribute("name", getParameterModel().getName());
|
datetime.addAttribute("name", getParameterModel().getName());
|
||||||
m_month .generateXML(ps, date);
|
m_date.generateLocalizedWidget(ps, datetime);
|
||||||
m_day .generateXML(ps, date);
|
m_time.generateLocalizedWidget(ps, datetime);
|
||||||
m_year .generateXML(ps, date);
|
|
||||||
m_hour .generateXML(ps, date);
|
// If Element could be null insert a extra widget to clear entry
|
||||||
m_minute.generateXML(ps, date);
|
if (!hasValidationListener(new NotNullValidationListener())) {
|
||||||
if (m_showSeconds) {
|
datetime.newChildElement("NoDateTime");
|
||||||
m_second.generateXML(ps, date);
|
|
||||||
}
|
}
|
||||||
m_amOrPm.generateXML(ps, date);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setDisabled() {
|
public void setDisabled() {
|
||||||
m_month.setDisabled();
|
m_date.setDisabled();
|
||||||
m_day.setDisabled();
|
m_time.setDisabled();
|
||||||
m_year.setDisabled();
|
|
||||||
m_hour.setDisabled();
|
|
||||||
m_minute.setDisabled();
|
|
||||||
if (m_showSeconds) {
|
|
||||||
m_second.setDisabled();
|
|
||||||
}
|
|
||||||
m_amOrPm.setDisabled();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setReadOnly() {
|
public void setReadOnly() {
|
||||||
m_month.setReadOnly();
|
m_date.setReadOnly();
|
||||||
m_day.setReadOnly();
|
m_time.setReadOnly();
|
||||||
m_year.setReadOnly();
|
|
||||||
m_hour.setReadOnly();
|
|
||||||
m_minute.setReadOnly();
|
|
||||||
if (m_showSeconds) {
|
|
||||||
m_second.setReadOnly();
|
|
||||||
}
|
|
||||||
m_amOrPm.setReadOnly();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -402,30 +134,10 @@ public class DateTime extends Widget implements BebopConstants {
|
||||||
* @param the <code>Form</code> Object for this Widget.
|
* @param the <code>Form</code> Object for this Widget.
|
||||||
* @exception IllegalStateException if form already set.
|
* @exception IllegalStateException if form already set.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void setForm(Form f) {
|
public void setForm(Form f) {
|
||||||
super .setForm(f);
|
super.setForm(f);
|
||||||
m_year .setForm(f);
|
m_date.setForm(f);
|
||||||
m_month.setForm(f);
|
m_time.setForm(f);
|
||||||
m_day .setForm(f);
|
|
||||||
m_hour.setForm(f);
|
|
||||||
m_minute.setForm(f);
|
|
||||||
if (m_showSeconds) {
|
|
||||||
m_second.setForm(f);
|
|
||||||
}
|
|
||||||
m_amOrPm.setForm(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Object getFragmentValue(PageState ps, int field) {
|
|
||||||
Assert.exists(ps, "PageState");
|
|
||||||
FormData f = getForm().getFormData(ps);
|
|
||||||
if (f != null) {
|
|
||||||
java.util.Date value = (java.util.Date)f.get(getName());
|
|
||||||
if (value != null) {
|
|
||||||
Calendar c = Calendar.getInstance();
|
|
||||||
c.setTime(value);
|
|
||||||
return new Integer(c.get(field));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ package com.arsdigita.bebop.form;
|
||||||
import com.arsdigita.bebop.Form;
|
import com.arsdigita.bebop.Form;
|
||||||
import com.arsdigita.bebop.FormData;
|
import com.arsdigita.bebop.FormData;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.TimeParameter;
|
import com.arsdigita.bebop.parameters.TimeParameter;
|
||||||
import com.arsdigita.bebop.parameters.NumberInRangeValidationListener;
|
import com.arsdigita.bebop.parameters.NumberInRangeValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.ParameterData;
|
import com.arsdigita.bebop.parameters.ParameterData;
|
||||||
|
|
@ -32,16 +33,15 @@ import com.arsdigita.xml.Element;
|
||||||
import java.text.DateFormatSymbols;
|
import java.text.DateFormatSymbols;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A class representing a time field in an HTML form.
|
* A class representing a time field in an HTML form.
|
||||||
*
|
*
|
||||||
* @see com.arsdigita.bebop.form.DateTime
|
* @see com.arsdigita.bebop.form.DateTime
|
||||||
* @author Dave Turner
|
* @author Dave Turner
|
||||||
* @version $Id: Time.java 287 2005-02-22 00:29:02Z sskracic $
|
* @author Sören Bernstein
|
||||||
|
* @version $Id: Time.java 288 2010-02-20 07:29:00Z sbernstein $
|
||||||
*/
|
*/
|
||||||
public class Time extends Widget implements BebopConstants
|
public class Time extends Widget implements BebopConstants {
|
||||||
{
|
|
||||||
|
|
||||||
private TextField m_hour;
|
private TextField m_hour;
|
||||||
private TextField m_minute;
|
private TextField m_minute;
|
||||||
|
|
@ -50,7 +50,6 @@ public class Time extends Widget implements BebopConstants
|
||||||
private boolean m_showSeconds;
|
private boolean m_showSeconds;
|
||||||
private static final String ZERO = "0";
|
private static final String ZERO = "0";
|
||||||
|
|
||||||
|
|
||||||
private class HourFragment extends TextField {
|
private class HourFragment extends TextField {
|
||||||
|
|
||||||
private Time parent;
|
private Time parent;
|
||||||
|
|
@ -58,8 +57,10 @@ public class Time extends Widget implements BebopConstants
|
||||||
public HourFragment(String name, Time parent) {
|
public HourFragment(String name, Time parent) {
|
||||||
super(name);
|
super(name);
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.addValidationListener(new NumberInRangeValidationListener(1,12)); }
|
this.addValidationListener(new NumberInRangeValidationListener(1, 12));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -68,8 +69,11 @@ public class Time extends Widget implements BebopConstants
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
return parent.getFragmentValue(ps, Calendar.HOUR);
|
// Depending on locale we need to differ between 12 hour and 24 hout format
|
||||||
|
// return parent.getFragmentValue(ps, Calendar.HOUR);
|
||||||
|
return parent.getFragmentValue(ps, Calendar.HOUR_OF_DAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -80,8 +84,10 @@ public class Time extends Widget implements BebopConstants
|
||||||
public MinuteFragment(String name, Time parent) {
|
public MinuteFragment(String name, Time parent) {
|
||||||
super(name);
|
super(name);
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.addValidationListener(new NumberInRangeValidationListener(0,59)); }
|
this.addValidationListener(new NumberInRangeValidationListener(0, 59));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -90,12 +96,13 @@ public class Time extends Widget implements BebopConstants
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
Integer min = (Integer) parent.getFragmentValue(ps, Calendar.MINUTE);
|
Integer min = (Integer) parent.getFragmentValue(ps, Calendar.MINUTE);
|
||||||
if (min == null) {
|
if (min == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if ( min.intValue() < 10 ) {
|
if (min.intValue() < 10) {
|
||||||
return ZERO + min.toString();
|
return ZERO + min.toString();
|
||||||
} else {
|
} else {
|
||||||
return min.toString();
|
return min.toString();
|
||||||
|
|
@ -110,8 +117,10 @@ public class Time extends Widget implements BebopConstants
|
||||||
public SecondFragment(String name, Time parent) {
|
public SecondFragment(String name, Time parent) {
|
||||||
super(name);
|
super(name);
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.addValidationListener(new NumberInRangeValidationListener(0,59)); }
|
this.addValidationListener(new NumberInRangeValidationListener(0, 59));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -120,12 +129,13 @@ public class Time extends Widget implements BebopConstants
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
Integer sec = (Integer) parent.getFragmentValue(ps, Calendar.SECOND);
|
Integer sec = (Integer) parent.getFragmentValue(ps, Calendar.SECOND);
|
||||||
if (sec == null) {
|
if (sec == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if ( sec.intValue() < 10 ) {
|
if (sec.intValue() < 10) {
|
||||||
return ZERO + sec.toString();
|
return ZERO + sec.toString();
|
||||||
} else {
|
} else {
|
||||||
return sec.toString();
|
return sec.toString();
|
||||||
|
|
@ -142,6 +152,7 @@ public class Time extends Widget implements BebopConstants
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected ParameterData getParameterData(PageState ps) {
|
protected ParameterData getParameterData(PageState ps) {
|
||||||
Object value = getValue(ps);
|
Object value = getValue(ps);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
|
|
@ -150,26 +161,25 @@ public class Time extends Widget implements BebopConstants
|
||||||
return new ParameterData(getParameterModel(), value);
|
return new ParameterData(getParameterModel(), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object getValue(PageState ps) {
|
public Object getValue(PageState ps) {
|
||||||
return parent.getFragmentValue(ps, Calendar.AM_PM);
|
return parent.getFragmentValue(ps, Calendar.AM_PM);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
public Time ( ParameterModel model ) {
|
public Time(ParameterModel model) {
|
||||||
this(model, false);
|
this(model, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
public Time ( ParameterModel model, boolean showSeconds ) {
|
public Time(ParameterModel model, boolean showSeconds) {
|
||||||
super(model);
|
super(model);
|
||||||
|
|
||||||
if ( ! (model instanceof TimeParameter)) {
|
if (!(model instanceof TimeParameter)) {
|
||||||
throw new IllegalArgumentException (
|
throw new IllegalArgumentException(
|
||||||
"The Time widget " + model.getName() +
|
"The Time widget " + model.getName() +
|
||||||
" must be backed by a TimeParameter parameter model");
|
" must be backed by a TimeParameter parameter model");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -184,7 +194,7 @@ public class Time extends Widget implements BebopConstants
|
||||||
m_hour = new HourFragment(nameHour, this);
|
m_hour = new HourFragment(nameHour, this);
|
||||||
m_minute = new MinuteFragment(nameMinute, this);
|
m_minute = new MinuteFragment(nameMinute, this);
|
||||||
m_showSeconds = showSeconds;
|
m_showSeconds = showSeconds;
|
||||||
if ( m_showSeconds ) {
|
if (m_showSeconds) {
|
||||||
m_second = new SecondFragment(nameSecond, this);
|
m_second = new SecondFragment(nameSecond, this);
|
||||||
} else {
|
} else {
|
||||||
m_second = null;
|
m_second = null;
|
||||||
|
|
@ -200,20 +210,19 @@ public class Time extends Widget implements BebopConstants
|
||||||
m_second.setSize(2);
|
m_second.setSize(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
String [] amPmStrings = dfs.getAmPmStrings();
|
String[] amPmStrings = dfs.getAmPmStrings();
|
||||||
for ( int i = 0 ; i < amPmStrings.length ; i++ ) {
|
for (int i = 0; i < amPmStrings.length; i++) {
|
||||||
m_amOrPm.addOption(new Option(String.valueOf(i), amPmStrings[i]));
|
m_amOrPm.addOption(new Option(String.valueOf(i), amPmStrings[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Time(String name) {
|
||||||
public Time ( String name ) {
|
|
||||||
this(new TimeParameter(name));
|
this(new TimeParameter(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns a string naming the type of this widget. */
|
/** Returns a string naming the type of this widget. */
|
||||||
public String getType () {
|
public String getType() {
|
||||||
return "time";
|
return "time";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -221,54 +230,66 @@ public class Time extends Widget implements BebopConstants
|
||||||
* Sets the <tt>MAXLENGTH</tt> attributes for the <tt>INPUT</tt> tag
|
* Sets the <tt>MAXLENGTH</tt> attributes for the <tt>INPUT</tt> tag
|
||||||
* used to render this form element.
|
* used to render this form element.
|
||||||
*/
|
*/
|
||||||
public void setMaxLength ( int length ) {
|
public void setMaxLength(int length) {
|
||||||
setAttribute("MAXLENGTH", String.valueOf(length));
|
setAttribute("MAXLENGTH", String.valueOf(length));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCompound () {
|
public boolean isCompound() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The XML tag for this derived class of Widget. */
|
/** The XML tag for this derived class of Widget. */
|
||||||
protected String getElementTag () {
|
@Override
|
||||||
return "bebop:time";
|
protected String getElementTag() {
|
||||||
|
return "BEBOP_TIME";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateWidget ( PageState ps, Element parent ) {
|
@Override
|
||||||
|
public void generateWidget(PageState ps, Element parent) {
|
||||||
|
|
||||||
if ( ! isVisible(ps) ) {
|
if (!isVisible(ps)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Element time = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
Element time = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||||
time.addAttribute("name", getParameterModel().getName());
|
time.addAttribute("name", getParameterModel().getName());
|
||||||
m_hour .generateXML(ps, time);
|
generateLocalizedWidget(ps, time);
|
||||||
|
|
||||||
|
// If Element could be null insert a extra widget to clear entry
|
||||||
|
if (!hasValidationListener(new NotNullValidationListener())) {
|
||||||
|
time.newChildElement("NoTime");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void generateLocalizedWidget(PageState ps, Element time) {
|
||||||
|
m_hour.generateXML(ps, time);
|
||||||
m_minute.generateXML(ps, time);
|
m_minute.generateXML(ps, time);
|
||||||
if ( m_showSeconds ) {
|
if (m_showSeconds) {
|
||||||
m_second.generateXML(ps, time);
|
m_second.generateXML(ps, time);
|
||||||
}
|
}
|
||||||
m_amOrPm.generateXML(ps, time);
|
m_amOrPm.generateXML(ps, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisabled () {
|
@Override
|
||||||
|
public void setDisabled() {
|
||||||
m_hour.setDisabled();
|
m_hour.setDisabled();
|
||||||
m_minute.setDisabled();
|
m_minute.setDisabled();
|
||||||
if ( m_showSeconds ) {
|
if (m_showSeconds) {
|
||||||
m_second.setDisabled();
|
m_second.setDisabled();
|
||||||
}
|
}
|
||||||
m_amOrPm.setDisabled();
|
m_amOrPm.setDisabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setReadOnly () {
|
@Override
|
||||||
|
public void setReadOnly() {
|
||||||
m_hour.setReadOnly();
|
m_hour.setReadOnly();
|
||||||
m_minute.setReadOnly();
|
m_minute.setReadOnly();
|
||||||
if ( m_showSeconds ) {
|
if (m_showSeconds) {
|
||||||
m_second.setReadOnly();
|
m_second.setReadOnly();
|
||||||
}
|
}
|
||||||
m_amOrPm.setReadOnly();
|
m_amOrPm.setReadOnly();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Form Object for this Widget. This method will throw an
|
* Sets the Form Object for this Widget. This method will throw an
|
||||||
* exception if the _form pointer is already set. To explicity
|
* exception if the _form pointer is already set. To explicity
|
||||||
|
|
@ -278,8 +299,9 @@ public class Time extends Widget implements BebopConstants
|
||||||
* @param the <code>Form</code> Object for this Widget.
|
* @param the <code>Form</code> Object for this Widget.
|
||||||
* @exception IllegalStateException if form already set.
|
* @exception IllegalStateException if form already set.
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void setForm(Form f) {
|
public void setForm(Form f) {
|
||||||
super .setForm(f);
|
super.setForm(f);
|
||||||
m_hour.setForm(f);
|
m_hour.setForm(f);
|
||||||
m_minute.setForm(f);
|
m_minute.setForm(f);
|
||||||
if (m_showSeconds) {
|
if (m_showSeconds) {
|
||||||
|
|
@ -292,19 +314,17 @@ public class Time extends Widget implements BebopConstants
|
||||||
Assert.exists(ps, "PageState");
|
Assert.exists(ps, "PageState");
|
||||||
FormData f = getForm().getFormData(ps);
|
FormData f = getForm().getFormData(ps);
|
||||||
if (f != null) {
|
if (f != null) {
|
||||||
java.util.Date value = (java.util.Date)f.get(getName());
|
java.util.Date value = (java.util.Date) f.get(getName());
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
Calendar c = Calendar.getInstance();
|
Calendar c = Calendar.getInstance();
|
||||||
c.setTime(value);
|
c.setTime(value);
|
||||||
int intVal = c.get(field);
|
int intVal = c.get(field);
|
||||||
if (field == Calendar.HOUR && intVal == 0) {
|
if (field == Calendar.HOUR && intVal == 0) {
|
||||||
intVal = 12;
|
intVal = 12;
|
||||||
}
|
}
|
||||||
return new Integer(intVal);
|
return new Integer(intVal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue