Rough version of images module that doesn't actually save image URLs i.e. Taxon has...
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / propertysheet / TimePeriodPropertySource.java
index 71c38bde22c0ba5d3a6527e8565c7b3baa2630d9..a4ee263b2db9d8fb5ef9620d72d7732c70e94ff2 100644 (file)
@@ -13,7 +13,6 @@ import java.beans.PropertyChangeListener;
 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
@@ -57,7 +56,7 @@ public class TimePeriodPropertySource implements IPropertySource {
                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
@@ -68,27 +67,11 @@ public class TimePeriodPropertySource implements IPropertySource {
                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
@@ -132,13 +115,6 @@ public class TimePeriodPropertySource implements IPropertySource {
         }\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
@@ -149,31 +125,34 @@ public class TimePeriodPropertySource implements IPropertySource {
 \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
@@ -192,96 +171,78 @@ public class TimePeriodPropertySource implements IPropertySource {
     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