Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / PartialElement.java
index 852018d0a104146c1252e7cb147c5c14537f85b9..063819a7d4b1537f8405328c556706090b49510f 100644 (file)
@@ -1,9 +1,8 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -13,10 +12,10 @@ package eu.etaxonomy.taxeditor.ui.element;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
 import org.joda.time.Partial;
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>PartialElement class.</p>
@@ -32,37 +31,39 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
        private NumberWithLabelElement number_month;
        private NumberWithLabelElement number_year;
        private Partial partial;
-       
+
        /**
         * <p>Constructor for PartialElement.</p>
         *
         * @param formFactory a {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param formElement a {@link eu.etaxonomy.taxeditor.forms.ICdmFormElement} object.
+        * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.forms.ICdmFormElement} object.
         * @param labelString a {@link java.lang.String} object.
         * @param style a int.
         */
        public PartialElement(CdmFormFactory formFactory,
                        ICdmFormElement formElement, String labelString, int style) {
                super(formFactory, formElement);
-               
-               formElement.getLayoutComposite().setLayout(LayoutConstants.LAYOUT(7, false));
-               
+
+               TableWrapLayout layout = LayoutConstants.LAYOUT(7, false);
+               layout.horizontalSpacing = 5;
+        formElement.getLayoutComposite().setLayout(layout);
+
                label = formFactory.createLabel(getLayoutComposite(), labelString);
                addControl(label);
-               
+
                number_year = formFactory.createNumberTextWithLabelElement(this, "Year", null, style);
                number_year.setLimits(4, -9999, 9999);
-               
-               number_month = formFactory.createNumberTextWithLabelElement(this, "Month", null, style);                
+
+               number_month = formFactory.createNumberTextWithLabelElement(this, "Month", null, style);
                number_month.setLimits(2, 1, 12);
-               
+
                number_day = formFactory.createNumberTextWithLabelElement(this, "Day", null, style);
                number_day.setLimits(2, 1, 31);
-               
-               
-               formFactory.addPropertyChangeListener(this);            
+
+
+               formFactory.addPropertyChangeListener(this);
        }
-       
+
        /**
         * <p>Setter for the field <code>partial</code>.</p>
         *
@@ -70,7 +71,7 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
         */
        public void setPartial(Partial partial){
                this.partial = partial;
-               
+
                if(partial != null){
                        number_day.setNumber(TimePeriod.getPartialValue(partial, TimePeriod.DAY_TYPE));
                        number_month.setNumber(TimePeriod.getPartialValue(partial, TimePeriod.MONTH_TYPE));
@@ -96,9 +97,9 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
                if(event == null){
                        return;
                }
-               
+
                Object eventSource = event.getSource();
-               
+
                if(getElements().contains(eventSource)){
                        if(event instanceof CdmPropertyChangeEvent){
                                if(((CdmPropertyChangeEvent) event).hasException()){
@@ -107,9 +108,9 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
                                }
                        }
                        handleEvent(eventSource);
-               }               
+               }
        }
-       
+
        /**
         * @param event
         */
@@ -119,15 +120,31 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
 
        private void handleEvent(Object eventSource){
                if(eventSource == number_month){
-                       partial = TimePeriod.setPartialField(partial, number_month.getInteger(), TimePeriod.MONTH_TYPE);
+                       if (number_month.getInteger() == 0){
+                               partial = TimePeriod.setPartialField(partial, null, TimePeriod.MONTH_TYPE);
+                       } else{
+                               partial = TimePeriod.setPartialField(partial, number_month.getInteger(), TimePeriod.MONTH_TYPE);
+                       }
+
                }else if(eventSource == number_day){
-                       partial = TimePeriod.setPartialField(partial, number_day.getInteger(), TimePeriod.DAY_TYPE);
+                       if (number_day.getInteger() == 0){
+                               partial = TimePeriod.setPartialField(partial, null, TimePeriod.DAY_TYPE);
+                       } else{
+                               partial = TimePeriod.setPartialField(partial, number_day.getInteger(), TimePeriod.DAY_TYPE);
+                       }
+
+
                }else if(eventSource == number_year){
-                       partial = TimePeriod.setPartialField(partial, number_year.getInteger(), TimePeriod.YEAR_TYPE);
+                       if (number_year.getInteger() == 0){
+                               partial = TimePeriod.setPartialField(partial, null, TimePeriod.YEAR_TYPE);
+                       } else{
+                               partial = TimePeriod.setPartialField(partial, number_year.getInteger(), TimePeriod.YEAR_TYPE);
+                       }
+
                }
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public void setBackground(Color color) {