import java.beans.PropertyChangeSupport;\r
import java.text.DateFormat;\r
import java.text.SimpleDateFormat;\r
-import java.util.Calendar;\r
import java.util.Vector;\r
\r
import org.apache.log4j.Logger;\r
new String[] {P_ID_STARTYEAR, P_ID_STARTMONTH, P_ID_STARTDAY, \r
P_ID_ENDYEAR, P_ID_ENDMONTH, P_ID_ENDDAY};\r
\r
- private static final String[] P_MONTH_MENU = new String[] {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};\r
+ private static final String[] P_MONTH_MENU = new String[] {"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};\r
\r
public TimePeriodPropertySource(TimePeriod timePeriod) {\r
super();\r
this.timePeriod = timePeriod;\r
\r
// Add property sheet descriptors\r
- addDescriptor(P_ID_STARTYEAR);\r
- if (!getPropertyValue(P_ID_STARTYEAR).equals("")) {\r
- \r
- // Only show start month and start day after start year has been populated\r
- addDescriptor(P_ID_STARTMONTH);\r
- addDescriptor(P_ID_STARTDAY);\r
- \r
- // Only show end if start has been populated\r
- addDescriptor(P_ID_ENDYEAR);\r
- \r
- if (!getPropertyValue(P_ID_ENDYEAR).equals("")) {\r
- // Only show end month and end day after end year has been populated\r
- addDescriptor(P_ID_ENDMONTH);\r
- addDescriptor(P_ID_ENDDAY); \r
- } \r
+ for (String key : TOP_LEVEL_PROPERTIES) {\r
+ addDescriptor(key);\r
}\r
-// for (String key : TOP_LEVEL_PROPERTIES) {\r
-// addDescriptor(key);\r
-// }\r
}\r
- \r
+ \r
//static date formatter\r
private static final DateFormat formatter = new SimpleDateFormat(\r
"EEEE, MMMM d, yyyy"); //$NON-NLS-1$\r
}\r
}\r
\r
- /* (non-Javadoc)\r
- * Method declared on IPropertySource\r
- */\r
- public Object getEditableValue() {\r
- return "";\r
- }\r
-\r
/* (non-Javadoc)\r
* Method declared on IPropertySource\r
*/\r
\r
public Object getPropertyValue(Object id) {\r
\r
- Calendar start = timePeriod.getStart();\r
- Calendar end = timePeriod.getEnd();\r
- \r
if (id.equals(P_ID_STARTYEAR)) {\r
- return (start == null) ? "" : String.valueOf(start.get(Calendar.YEAR));\r
+ Integer startYear = timePeriod.getStartYear();\r
+ return (startYear == null) ? "" : String.valueOf(startYear);\r
}\r
- \r
+\r
if (id.equals(P_ID_STARTMONTH)) {\r
- return (start == null) ? 0 : Integer.valueOf(start.get(Calendar.MONTH));\r
+ Integer startMonth = timePeriod.getStartMonth();\r
+ return (startMonth == null) ? 0 : startMonth;\r
}\r
\r
if (id.equals(P_ID_STARTDAY)) {\r
- return (start == null) ? "" : String.valueOf(start.get(Calendar.DAY_OF_MONTH));\r
+ Integer startDay = timePeriod.getStartDay(); \r
+ return (startDay == null) ? "" : String.valueOf(startDay);\r
}\r
\r
if (id.equals(P_ID_ENDYEAR)) {\r
- return (end == null) ? "" : String.valueOf(end.get(Calendar.YEAR));\r
+ Integer endYear = timePeriod.getEndYear();\r
+ return (endYear == null) ? "" : String.valueOf(endYear);\r
}\r
\r
if (id.equals(P_ID_ENDMONTH)) {\r
- return (end == null) ? 0 : Integer.valueOf(end.get(Calendar.MONTH));\r
+ Integer endMonth = timePeriod.getEndMonth();\r
+ return (endMonth == null) ? 0 : endMonth;\r
}\r
\r
if (id.equals(P_ID_ENDDAY)) {\r
- return (end == null) ? "" : String.valueOf(end.get(Calendar.DAY_OF_MONTH));\r
+ Integer endDay = timePeriod.getEndDay();\r
+ return (endDay == null) ? "" : String.valueOf(endDay);\r
}\r
\r
return "";\r
public void resetPropertyValue(Object property) {}\r
\r
public void setPropertyValue(Object id, Object value) {\r
- Calendar start = timePeriod.getStart();\r
- Calendar end = timePeriod.getEnd();\r
- \r
- // Init start if necessary\r
- if (id.equals(P_ID_STARTYEAR) || id.equals(P_ID_STARTMONTH) || \r
- id.equals(P_ID_STARTDAY) ) {\r
- if (start == null) {\r
- start = Calendar.getInstance();\r
- timePeriod.setStart(start);\r
- \r
- // Default to January 1\r
- start.set(Calendar.DAY_OF_YEAR, 1);\r
- } \r
- }\r
\r
- // Init end if necessary\r
- if (id.equals(P_ID_ENDYEAR) || id.equals(P_ID_ENDMONTH) || \r
- id.equals(P_ID_ENDDAY) ) {\r
- if (end == null) {\r
- end = Calendar.getInstance();\r
- timePeriod.setEnd(end);\r
- \r
- // Default to January 1\r
- end.set(Calendar.DAY_OF_YEAR, 1);\r
- } \r
- }\r
+ if (id.equals(P_ID_STARTYEAR)) {\r
+ timePeriod.setStartYear(castToInteger(value));\r
+ }\r
+ \r
+ if (id.equals(P_ID_STARTMONTH)) {\r
+ timePeriod.setStartMonth(castToInteger(value));\r
+ }\r
+ \r
+ if (id.equals(P_ID_STARTDAY)) {\r
+ timePeriod.setStartDay(castToInteger(value));\r
+ }\r
+ \r
+ if (id.equals(P_ID_ENDYEAR)) {\r
+ timePeriod.setEndYear(castToInteger(value));\r
+ }\r
+ \r
+ if (id.equals(P_ID_ENDMONTH)) {\r
+ timePeriod.setEndMonth(castToInteger(value));\r
+ }\r
+ \r
+ if (id.equals(P_ID_ENDDAY)) {\r
+ timePeriod.setEndDay(castToInteger(value));\r
+ }\r
\r
- if (id.equals(P_ID_STARTYEAR)) {\r
- \r
- // Empty year string, set start and end to null\r
- if (((String) value).equals("")) {\r
- start = null;\r
- end = null;\r
- } else {\r
- start.set(Calendar.YEAR, castToInteger(value));\r
- }\r
- }\r
-\r
- if (id.equals(P_ID_STARTMONTH)) {\r
- start.set(Calendar.MONTH, (Integer) value);\r
- }\r
+ propertyChangeSupport.firePropertyChange(ITaxEditorConstants.PROPERTY_SHEET_CHANGE, null, timePeriod);\r
+ }\r
\r
- if (id.equals(P_ID_STARTDAY)) {\r
- start.set(Calendar.DAY_OF_MONTH, castToInteger(value));\r
- }\r
+ private Integer castToInteger(Object value) {\r
\r
- if (id.equals(P_ID_ENDYEAR)) {\r
-\r
- // Empty year string, set end to null\r
- if (((String) value).equals("")) {\r
- timePeriod.setEnd(null);\r
+ // Dropdown lists return an Integer index\r
+ if (value instanceof Integer) {\r
+ \r
+ // First entry in dropdown is empty\r
+ if (((Integer) value).equals(0)) {\r
+ return null;\r
} else {\r
- end.set(Calendar.YEAR, castToInteger(value));\r
+ return (Integer) value; \r
}\r
}\r
-\r
- if (id.equals(P_ID_ENDMONTH)) {\r
- end.set(Calendar.MONTH, (Integer) value);\r
- }\r
-\r
- if (id.equals(P_ID_ENDDAY)) {\r
- end.set(Calendar.DAY_OF_MONTH, castToInteger(value));\r
- }\r
- \r
- propertyChangeSupport.firePropertyChange(ITaxEditorConstants.PROPERTY_SHEET_CHANGE, null, timePeriod);\r
- }\r
-\r
- private int castToInteger(Object value) {\r
- Integer integer;\r
+ \r
+ Integer integer = null;\r
try {\r
integer = new Integer((String) value);\r
+ \r
} catch (ClassCastException e) {\r
- integer = 0;\r
} catch (NumberFormatException e) {\r
- // Likely because value = ""\r
- integer = 0;\r
}\r
return integer;\r
}\r
\r
- /**\r
- * The value as displayed in the Property Sheet.\r
- * @return java.lang.String\r
+ /* (non-Javadoc)\r
+ * Method declared on IPropertySource\r
*/\r
- public String toString() {\r
-// Date bday = (new GregorianCalendar(getYear().intValue(), getMonth()\r
-// .intValue() - 1, getDay().intValue())).getTime();\r
-// return formatter.format(bday);\r
- return "";\r
- } \r
+ public Object getEditableValue() {\r
+ if (timePeriod == null) {\r
+ return "";\r
+ }\r
+ return timePeriod.getYear();\r
+ }\r
+ \r
+// /**\r
+// * The value as displayed in the Property Sheet.\r
+// * @return java.lang.String\r
+// */\r
+// public String toString() {\r
+// if (timePeriod == null) {\r
+// return "";\r
+// }\r
+// return timePeriod.getYear();\r
+// \r
+// } \r
\r
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);\r
\r