Ä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.DateParameter;
|
||||
import com.arsdigita.bebop.parameters.ParameterData;
|
||||
import com.arsdigita.bebop.util.BebopConstants;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.FormData;
|
||||
|
|
@ -40,6 +39,7 @@ import com.arsdigita.kernel.Kernel;
|
|||
import com.arsdigita.bebop.util.BebopConstants;
|
||||
|
||||
import com.arsdigita.xml.Element;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
|
|
@ -47,8 +47,9 @@ import java.util.Locale;
|
|||
*
|
||||
* @author Karl Goldstein
|
||||
* @author Uday Mathur
|
||||
* @author Michael Pih
|
||||
* @version $Id: Date.java 287 2005-02-22 00:29:02Z sskracic $
|
||||
* @author Michael Pih
|
||||
* @author Sören Bernstein
|
||||
* @version $Id: Date.java 288 2010-02-20 07:29:00Z sbernstein $
|
||||
*/
|
||||
public class Date extends Widget implements BebopConstants {
|
||||
|
||||
|
|
@ -66,6 +67,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -74,6 +76,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(PageState ps) {
|
||||
Object value = parent.getFragmentValue(ps, Calendar.YEAR);
|
||||
if (value == null) {
|
||||
|
|
@ -95,6 +98,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -103,6 +107,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(PageState ps) {
|
||||
return parent.getFragmentValue(ps, Calendar.MONTH);
|
||||
}
|
||||
|
|
@ -118,6 +123,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -126,6 +132,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(PageState ps) {
|
||||
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.
|
||||
*/
|
||||
@Override
|
||||
protected String getElementTag() {
|
||||
return BEBOP_DATE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateWidget(PageState ps, Element parent) {
|
||||
|
||||
if ( ! isVisible(ps) ) {
|
||||
|
|
@ -222,24 +231,37 @@ public class Date extends Widget implements BebopConstants {
|
|||
}
|
||||
|
||||
Element date = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||
// parent.addContent(date);
|
||||
date.addAttribute("name", getParameterModel().getName());
|
||||
exportAttributes(date);
|
||||
m_month.generateXML(ps, date);
|
||||
m_day .generateXML(ps, date);
|
||||
m_year .generateXML(ps, date);
|
||||
generateLocalizedWidget(ps, date);
|
||||
|
||||
// If Element could be null insert an extra widget to clear entry
|
||||
if (!hasValidationListener(new NotNullValidationListener())) {
|
||||
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() {
|
||||
m_month.setDisabled();
|
||||
m_day.setDisabled();
|
||||
m_year.setDisabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadOnly() {
|
||||
m_month.setReadOnly();
|
||||
m_day.setReadOnly();
|
||||
|
|
@ -255,6 +277,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
* @param the <code>Form</code> Object for this Widget.
|
||||
* @exception IllegalStateException if form already set.
|
||||
*/
|
||||
@Override
|
||||
public void setForm(Form f) {
|
||||
super .setForm(f);
|
||||
m_year .setForm(f);
|
||||
|
|
@ -276,6 +299,7 @@ public class Date extends Widget implements BebopConstants {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClassAttr(String at) {
|
||||
m_month.setClassAttr(at);
|
||||
m_year.setClassAttr(at);
|
||||
|
|
@ -284,5 +308,6 @@ public class Date extends Widget implements BebopConstants {
|
|||
}
|
||||
|
||||
// Don't lock
|
||||
@Override
|
||||
public void lock() {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,221 +19,24 @@
|
|||
package com.arsdigita.bebop.form;
|
||||
|
||||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.parameters.DateTimeParameter;
|
||||
import com.arsdigita.bebop.parameters.NumberInRangeValidationListener;
|
||||
import com.arsdigita.bebop.parameters.ParameterData;
|
||||
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||
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.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.
|
||||
* (based on the code in Date.java)
|
||||
*
|
||||
* @author Scott Seago
|
||||
* @version $Id: DateTime.java 287 2005-02-22 00:29:02Z sskracic $
|
||||
* @author Sören Bernstein
|
||||
* @version $Id: DateTime.java 288 2010-02-20 07:29:00Z ssbernstein $
|
||||
*/
|
||||
public class DateTime extends Widget implements BebopConstants {
|
||||
|
||||
private OptionGroup m_year;
|
||||
private OptionGroup m_month;
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
private Date m_date;
|
||||
private Time m_time;
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
super(model);
|
||||
|
||||
if ( ! (model instanceof DateTimeParameter)) {
|
||||
if (!(model instanceof DateTimeParameter)) {
|
||||
throw new IllegalArgumentException(
|
||||
"The DateTime widget " + model.getName() +
|
||||
" 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]));
|
||||
//}
|
||||
"The DateTime widget " + model.getName() +
|
||||
" must be backed by a DateTimeParameter parmeter model");
|
||||
}
|
||||
|
||||
m_date = new Date(model);
|
||||
m_time = new Time(model, showSeconds);
|
||||
}
|
||||
|
||||
public DateTime(String name) {
|
||||
|
|
@ -318,11 +66,7 @@ public class DateTime extends Widget implements BebopConstants {
|
|||
}
|
||||
|
||||
public void setYearRange(int startYear, int endYear) {
|
||||
Assert.isUnlocked(this);
|
||||
m_year.clearOptions();
|
||||
for (int j= startYear; j<=endYear; j+=1) {
|
||||
m_year.addOption(new Option(String.valueOf(j)));
|
||||
}
|
||||
m_date.setYearRange(startYear, endYear);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -346,51 +90,39 @@ public class DateTime extends Widget implements BebopConstants {
|
|||
|
||||
/** The XML tag for this derived class of Widget.
|
||||
*/
|
||||
@Override
|
||||
protected String getElementTag() {
|
||||
return BEBOP_DATETIME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateWidget(PageState ps, Element parent) {
|
||||
|
||||
if ( ! isVisible(ps) ) {
|
||||
if (!isVisible(ps)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Element date = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||
date.addAttribute("name", getParameterModel().getName());
|
||||
m_month .generateXML(ps, date);
|
||||
m_day .generateXML(ps, date);
|
||||
m_year .generateXML(ps, date);
|
||||
m_hour .generateXML(ps, date);
|
||||
m_minute.generateXML(ps, date);
|
||||
if (m_showSeconds) {
|
||||
m_second.generateXML(ps, date);
|
||||
Element datetime = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||
datetime.addAttribute("name", getParameterModel().getName());
|
||||
m_date.generateLocalizedWidget(ps, datetime);
|
||||
m_time.generateLocalizedWidget(ps, datetime);
|
||||
|
||||
// If Element could be null insert a extra widget to clear entry
|
||||
if (!hasValidationListener(new NotNullValidationListener())) {
|
||||
datetime.newChildElement("NoDateTime");
|
||||
}
|
||||
m_amOrPm.generateXML(ps, date);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDisabled() {
|
||||
m_month.setDisabled();
|
||||
m_day.setDisabled();
|
||||
m_year.setDisabled();
|
||||
m_hour.setDisabled();
|
||||
m_minute.setDisabled();
|
||||
if (m_showSeconds) {
|
||||
m_second.setDisabled();
|
||||
}
|
||||
m_amOrPm.setDisabled();
|
||||
m_date.setDisabled();
|
||||
m_time.setDisabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadOnly() {
|
||||
m_month.setReadOnly();
|
||||
m_day.setReadOnly();
|
||||
m_year.setReadOnly();
|
||||
m_hour.setReadOnly();
|
||||
m_minute.setReadOnly();
|
||||
if (m_showSeconds) {
|
||||
m_second.setReadOnly();
|
||||
}
|
||||
m_amOrPm.setReadOnly();
|
||||
m_date.setReadOnly();
|
||||
m_time.setReadOnly();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -402,30 +134,10 @@ public class DateTime extends Widget implements BebopConstants {
|
|||
* @param the <code>Form</code> Object for this Widget.
|
||||
* @exception IllegalStateException if form already set.
|
||||
*/
|
||||
@Override
|
||||
public void setForm(Form f) {
|
||||
super .setForm(f);
|
||||
m_year .setForm(f);
|
||||
m_month.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;
|
||||
super.setForm(f);
|
||||
m_date.setForm(f);
|
||||
m_time.setForm(f);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ package com.arsdigita.bebop.form;
|
|||
import com.arsdigita.bebop.Form;
|
||||
import com.arsdigita.bebop.FormData;
|
||||
import com.arsdigita.bebop.PageState;
|
||||
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||
import com.arsdigita.bebop.parameters.TimeParameter;
|
||||
import com.arsdigita.bebop.parameters.NumberInRangeValidationListener;
|
||||
import com.arsdigita.bebop.parameters.ParameterData;
|
||||
|
|
@ -32,16 +33,15 @@ import com.arsdigita.xml.Element;
|
|||
import java.text.DateFormatSymbols;
|
||||
import java.util.Calendar;
|
||||
|
||||
|
||||
/**
|
||||
* A class representing a time field in an HTML form.
|
||||
*
|
||||
* @see com.arsdigita.bebop.form.DateTime
|
||||
* @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_minute;
|
||||
|
|
@ -50,7 +50,6 @@ public class Time extends Widget implements BebopConstants
|
|||
private boolean m_showSeconds;
|
||||
private static final String ZERO = "0";
|
||||
|
||||
|
||||
private class HourFragment extends TextField {
|
||||
|
||||
private Time parent;
|
||||
|
|
@ -58,8 +57,10 @@ public class Time extends Widget implements BebopConstants
|
|||
public HourFragment(String name, Time parent) {
|
||||
super(name);
|
||||
this.parent = parent;
|
||||
this.addValidationListener(new NumberInRangeValidationListener(1,12)); }
|
||||
this.addValidationListener(new NumberInRangeValidationListener(1, 12));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -68,8 +69,11 @@ public class Time extends Widget implements BebopConstants
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
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) {
|
||||
super(name);
|
||||
this.parent = parent;
|
||||
this.addValidationListener(new NumberInRangeValidationListener(0,59)); }
|
||||
this.addValidationListener(new NumberInRangeValidationListener(0, 59));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -90,12 +96,13 @@ public class Time extends Widget implements BebopConstants
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(PageState ps) {
|
||||
Integer min = (Integer) parent.getFragmentValue(ps, Calendar.MINUTE);
|
||||
if (min == null) {
|
||||
return null;
|
||||
}
|
||||
if ( min.intValue() < 10 ) {
|
||||
if (min.intValue() < 10) {
|
||||
return ZERO + min.toString();
|
||||
} else {
|
||||
return min.toString();
|
||||
|
|
@ -110,8 +117,10 @@ public class Time extends Widget implements BebopConstants
|
|||
public SecondFragment(String name, Time parent) {
|
||||
super(name);
|
||||
this.parent = parent;
|
||||
this.addValidationListener(new NumberInRangeValidationListener(0,59)); }
|
||||
this.addValidationListener(new NumberInRangeValidationListener(0, 59));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -120,12 +129,13 @@ public class Time extends Widget implements BebopConstants
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(PageState ps) {
|
||||
Integer sec = (Integer) parent.getFragmentValue(ps, Calendar.SECOND);
|
||||
if (sec == null) {
|
||||
return null;
|
||||
}
|
||||
if ( sec.intValue() < 10 ) {
|
||||
if (sec.intValue() < 10) {
|
||||
return ZERO + sec.toString();
|
||||
} else {
|
||||
return sec.toString();
|
||||
|
|
@ -142,6 +152,7 @@ public class Time extends Widget implements BebopConstants
|
|||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ParameterData getParameterData(PageState ps) {
|
||||
Object value = getValue(ps);
|
||||
if (value == null) {
|
||||
|
|
@ -150,26 +161,25 @@ public class Time extends Widget implements BebopConstants
|
|||
return new ParameterData(getParameterModel(), value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValue(PageState ps) {
|
||||
return parent.getFragmentValue(ps, Calendar.AM_PM);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** Constructor. */
|
||||
public Time ( ParameterModel model ) {
|
||||
public Time(ParameterModel model) {
|
||||
this(model, false);
|
||||
}
|
||||
|
||||
/** Constructor. */
|
||||
public Time ( ParameterModel model, boolean showSeconds ) {
|
||||
public Time(ParameterModel model, boolean showSeconds) {
|
||||
super(model);
|
||||
|
||||
if ( ! (model instanceof TimeParameter)) {
|
||||
throw new IllegalArgumentException (
|
||||
"The Time widget " + model.getName() +
|
||||
" must be backed by a TimeParameter parameter model");
|
||||
if (!(model instanceof TimeParameter)) {
|
||||
throw new IllegalArgumentException(
|
||||
"The Time widget " + model.getName() +
|
||||
" 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_minute = new MinuteFragment(nameMinute, this);
|
||||
m_showSeconds = showSeconds;
|
||||
if ( m_showSeconds ) {
|
||||
if (m_showSeconds) {
|
||||
m_second = new SecondFragment(nameSecond, this);
|
||||
} else {
|
||||
m_second = null;
|
||||
|
|
@ -200,20 +210,19 @@ public class Time extends Widget implements BebopConstants
|
|||
m_second.setSize(2);
|
||||
}
|
||||
|
||||
String [] amPmStrings = dfs.getAmPmStrings();
|
||||
for ( int i = 0 ; i < amPmStrings.length ; i++ ) {
|
||||
String[] amPmStrings = dfs.getAmPmStrings();
|
||||
for (int i = 0; i < amPmStrings.length; i++) {
|
||||
m_amOrPm.addOption(new Option(String.valueOf(i), amPmStrings[i]));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public Time ( String name ) {
|
||||
public Time(String name) {
|
||||
this(new TimeParameter(name));
|
||||
}
|
||||
|
||||
/** Returns a string naming the type of this widget. */
|
||||
public String getType () {
|
||||
public String getType() {
|
||||
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
|
||||
* used to render this form element.
|
||||
*/
|
||||
public void setMaxLength ( int length ) {
|
||||
public void setMaxLength(int length) {
|
||||
setAttribute("MAXLENGTH", String.valueOf(length));
|
||||
}
|
||||
|
||||
public boolean isCompound () {
|
||||
public boolean isCompound() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** The XML tag for this derived class of Widget. */
|
||||
protected String getElementTag () {
|
||||
return "bebop:time";
|
||||
@Override
|
||||
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;
|
||||
}
|
||||
|
||||
Element time = parent.newChildElement(getElementTag(), BEBOP_XML_NS);
|
||||
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);
|
||||
if ( m_showSeconds ) {
|
||||
if (m_showSeconds) {
|
||||
m_second.generateXML(ps, time);
|
||||
}
|
||||
m_amOrPm.generateXML(ps, time);
|
||||
}
|
||||
|
||||
public void setDisabled () {
|
||||
@Override
|
||||
public void setDisabled() {
|
||||
m_hour.setDisabled();
|
||||
m_minute.setDisabled();
|
||||
if ( m_showSeconds ) {
|
||||
if (m_showSeconds) {
|
||||
m_second.setDisabled();
|
||||
}
|
||||
m_amOrPm.setDisabled();
|
||||
}
|
||||
|
||||
public void setReadOnly () {
|
||||
@Override
|
||||
public void setReadOnly() {
|
||||
m_hour.setReadOnly();
|
||||
m_minute.setReadOnly();
|
||||
if ( m_showSeconds ) {
|
||||
if (m_showSeconds) {
|
||||
m_second.setReadOnly();
|
||||
}
|
||||
m_amOrPm.setReadOnly();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the Form Object for this Widget. This method will throw an
|
||||
* 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.
|
||||
* @exception IllegalStateException if form already set.
|
||||
*/
|
||||
@Override
|
||||
public void setForm(Form f) {
|
||||
super .setForm(f);
|
||||
super.setForm(f);
|
||||
m_hour.setForm(f);
|
||||
m_minute.setForm(f);
|
||||
if (m_showSeconds) {
|
||||
|
|
@ -292,19 +314,17 @@ public class Time extends Widget implements BebopConstants
|
|||
Assert.exists(ps, "PageState");
|
||||
FormData f = getForm().getFormData(ps);
|
||||
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) {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(value);
|
||||
int intVal = c.get(field);
|
||||
if (field == Calendar.HOUR && intVal == 0) {
|
||||
intVal = 12;
|
||||
}
|
||||
int intVal = c.get(field);
|
||||
if (field == Calendar.HOUR && intVal == 0) {
|
||||
intVal = 12;
|
||||
}
|
||||
return new Integer(intVal);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue