fix #6433 fix NPE in PartialElement
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / PartialElement.java
index f448fe3c415c2f268b63b9067288aa7aadfc2a1f..c06c099959f55d37901d21bf369fc7728cb8c57d 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,6 +12,7 @@ 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;
@@ -22,7 +22,6 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
  *
  * @author n.hoffmann
  * @created Mar 31, 2010
- * @version 1.0
  */
 public class PartialElement extends AbstractCdmFormElement implements ISelectable {
 
@@ -31,7 +30,7 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
        private NumberWithLabelElement number_month;
        private NumberWithLabelElement number_year;
        private Partial partial;
-       
+
        /**
         * <p>Constructor for PartialElement.</p>
         *
@@ -43,25 +42,27 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
        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>
         *
@@ -69,7 +70,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));
@@ -86,18 +87,15 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
                return partial;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-        */
        /** {@inheritDoc} */
        @Override
        public void propertyChange(PropertyChangeEvent event) {
                if(event == null){
                        return;
                }
-               
+
                Object eventSource = event.getSource();
-               
+
                if(getElements().contains(eventSource)){
                        if(event instanceof CdmPropertyChangeEvent){
                                if(((CdmPropertyChangeEvent) event).hasException()){
@@ -106,9 +104,9 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
                                }
                        }
                        handleEvent(eventSource);
-               }               
+               }
        }
-       
+
        /**
         * @param event
         */
@@ -118,31 +116,31 @@ public class PartialElement extends AbstractCdmFormElement implements ISelectabl
 
        private void handleEvent(Object eventSource){
                if(eventSource == number_month){
-                       if (number_month.getInteger() == 0){
+                       if (number_month.getInteger() == null || 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){
-                       if (number_day.getInteger() == 0){
+                       if (number_day.getInteger() == null || 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){
-                       if (number_year.getInteger() == 0){
+                       if (number_year.getInteger() == null || 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) {