ref #7421 refactor verbatim date sections and elements
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 15 May 2018 23:04:17 +0000 (01:04 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 15 May 2018 23:04:45 +0000 (01:04 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSectionBase.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TimePeriodElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TimePeriodElementBase.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/VerbatimDateDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/VerbatimTimePeriodElement.java

index c8e761231a2472452c2f7a6df8e5a45e581db51a..d132a97428f34966f3982173636b5d8081f3adcf 100644 (file)
@@ -1247,9 +1247,9 @@ public class CdmFormFactory extends FormToolkit {
      * @return a {@link eu.etaxonomy.taxeditor.ui.element.TimePeriodElement}
      *         object.
      */
-    public TimePeriodElement createTimePeriodElement(ICdmFormElement parentElement, String labelString,
+    public TimePeriodElement<TimePeriod> createTimePeriodElement(ICdmFormElement parentElement, String labelString,
             TimePeriod timePeriod, int style) {
-        TimePeriodElement element = new TimePeriodElement(this, parentElement, labelString, timePeriod, style);
+        TimePeriodElement<TimePeriod> element = new TimePeriodElement<TimePeriod>(this, parentElement, labelString, timePeriod, style);
         adapt(element);
         parentElement.addElement(element);
         return element;
index 2b897c936253c2f17adc48b97a13a674e94bb0e8..72fb367e35924119950eb68d26f5e5adc2857a28 100644 (file)
@@ -9,13 +9,7 @@
 
 package eu.etaxonomy.taxeditor.ui.element;
 
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.widgets.Text;
-import org.joda.time.Partial;
-
-import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
 
 /**
  * <p>
@@ -24,169 +18,16 @@ import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
  *
  * @author n.hoffmann
  * @created Mar 31, 2010
- * @version 1.0
  */
-public class DateDetailSection extends AbstractFormSection<TimePeriod> {
-
-       protected TextWithLabelElement text_freeText;
-       private PartialElement partialElement_start;
-       private PartialElement partialElement_end;
-       private TextWithLabelElement text_parseText;
-       private int cursorPosition;
-
-       public int getCursorPosition() {
-        return cursorPosition;
-    }
-
-    public void setCursorPosition(int cursorPosition) {
-        this.cursorPosition = cursorPosition;
-    }
+public class DateDetailSection extends DateDetailSectionBase<TimePeriod> {
 
-    /**
-        * <p>
-        * Constructor for DateDetailSection.
-        * </p>
-        *
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param style
-        *            a int.
-        */
-       protected DateDetailSection(CdmFormFactory formFactory,
+       protected DateDetailSection(CdmFormFactory formFactory, 
                        ICdmFormElement parentElement, int style) {
                super(formFactory, parentElement, style);
-
-               partialElement_start = formFactory.createPartialElement(this,
-                               "Start ", null, style);
-               partialElement_end = formFactory.createPartialElement(this, "End ",
-                               null, style);
-
-               setText_parseText(formFactory.createTextWithLabelElement(this, "Parse",
-                               null, style));
-               getText_parseText().getMainControl().setLayoutData(
-                               LayoutConstants.FILL_HORIZONTALLY(6, 1));
-
-               text_freeText = formFactory.createTextWithLabelElement(this,
-                               "Freetext", null, style);
-               text_freeText.getMainControl().setLayoutData(
-                               LayoutConstants.FILL_HORIZONTALLY(6, 1));
-
-
-               formFactory.addPropertyChangeListener(this);
-       }
-
-       @Override
-       public TimePeriod getEntity() {
-               if(super.getEntity() == null){
-                       setEntity(TimePeriod.NewInstance());
-               }
-               return super.getEntity();
-       }
-
-       /**
-        * <p>
-        * Setter for the field <code>timePeriod</code>.
-        * </p>
-        *
-        * @param timePeriod
-        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-        */
-       @Override
-       public void setEntity(TimePeriod timePeriod) {
-               setEntityInternally(timePeriod);
-               updateTitle();
-               getText_parseText().setText(timePeriod.toString());
-       }
-
-       /**
-        * When setting the entity through parsing we do not want to alter the parse field
-        * @param timePeriod
-        */
-       protected void setEntityInternally(TimePeriod timePeriod){
-               Partial start = timePeriod.getStart();
-               partialElement_start.setPartial(start);
-               Partial end = timePeriod.getEnd();
-               partialElement_end.setPartial(end);
-
-               ((Text) getText_parseText().getMainControl()).setSelection(cursorPosition);
-               text_freeText.setText(timePeriod.getFreeText());
-
-               super.setEntity(timePeriod);
-       }
-
-       /** {@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()) {
-                                       handleException((CdmPropertyChangeEvent) event);
-                                       return;
-                               }
-                       }
-                       handleEvent(eventSource);
-               }
-       }
-
-       /**
-        * @param event
-        */
-       private void handleException(CdmPropertyChangeEvent event) {
-               firePropertyChangeEvent(new CdmPropertyChangeEvent(this,
-                               event.getException()));
-       }
-
-       protected void handleEvent(Object eventSource) {
-               if (eventSource == partialElement_start) {
-                       Partial start = partialElement_start.getPartial();
-                       getEntity().setStart(start);
-               } else if (eventSource == partialElement_end) {
-                       Partial end = partialElement_end.getPartial();
-                       getEntity().setEnd(end);
-               } else if (eventSource == getText_parseText()) {
-                       cursorPosition = ((Text) getText_parseText().getMainControl())
-                                       .getCaretPosition();
-                       setEntityInternally(TimePeriodParser.parseString(getText_parseText().getText()));
-               } else if (eventSource == text_freeText) {
-                       getEntity().setFreeText(text_freeText.getText());
-               }
-               updateTitle();
-               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
        }
 
-       protected void updateTitle(){
-               String title = CdmUtils.Nz(getEntity().toString());
-               this.setText(title);
-               layout();
+       protected TimePeriod newInstance(){
+               return TimePeriod.NewInstance();
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see eu.etaxonomy.taxeditor.forms.AbstractFormSection#dispose()
-        */
-       /** {@inheritDoc} */
-       @Override
-       public void dispose() {
-               formFactory.removePropertyChangeListener(this);
-               super.dispose();
-       }
-
-    public TextWithLabelElement getText_parseText() {
-        return text_parseText;
-    }
-
-    public void setText_parseText(TextWithLabelElement text_parseText) {
-        this.text_parseText = text_parseText;
-    }
-
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSectionBase.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSectionBase.java
new file mode 100644 (file)
index 0000000..c79a0c2
--- /dev/null
@@ -0,0 +1,178 @@
+package eu.etaxonomy.taxeditor.ui.element;
+
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.widgets.Text;
+import org.joda.time.Partial;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
+
+public abstract class DateDetailSectionBase<T extends TimePeriod> 
+               extends AbstractFormSection<T> {
+       protected TextWithLabelElement text_freeText;
+       private PartialElement partialElement_start;
+       private PartialElement partialElement_end;
+       private TextWithLabelElement text_parseText;
+       private int cursorPosition;
+
+       public int getCursorPosition() {
+        return cursorPosition;
+    }
+
+    public void setCursorPosition(int cursorPosition) {
+        this.cursorPosition = cursorPosition;
+    }
+
+    /**
+        * <p>
+        * Constructor for DateDetailSection.
+        * </p>
+        *
+        * @param formFactory
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+        *            object.
+        * @param parentElement
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+        *            object.
+        * @param style
+        *            a int.
+        */
+       protected DateDetailSectionBase(CdmFormFactory formFactory,
+                       ICdmFormElement parentElement, int style) {
+               super(formFactory, parentElement, style);
+
+               partialElement_start = formFactory.createPartialElement(this,
+                               "Start ", null, style);
+               partialElement_end = formFactory.createPartialElement(this, "End ",
+                               null, style);
+
+               setText_parseText(formFactory.createTextWithLabelElement(this, "Parse",
+                               null, style));
+               getText_parseText().getMainControl().setLayoutData(
+                               LayoutConstants.FILL_HORIZONTALLY(6, 1));
+
+               text_freeText = formFactory.createTextWithLabelElement(this,
+                               "Freetext", null, style);
+               text_freeText.getMainControl().setLayoutData(
+                               LayoutConstants.FILL_HORIZONTALLY(6, 1));
+
+
+               formFactory.addPropertyChangeListener(this);
+       }
+
+       @Override
+       public final T getEntity() {
+               if(super.getEntity() == null){
+                       T newInstance = newInstance();
+                       this.setEntity(newInstance);
+               }
+               return super.getEntity();
+       }
+       
+       protected abstract T newInstance();
+
+       /**
+        * <p>
+        * Setter for the field <code>timePeriod</code>.
+        * </p>
+        *
+        * @param timePeriod
+        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
+        */
+       @Override
+       public void setEntity(T timePeriod) {
+               setEntityInternally(timePeriod);
+               updateTitle();
+               getText_parseText().setText(timePeriod.toString());
+       }
+
+       /**
+        * When setting the entity through parsing we do not want to alter the parse field
+        * @param timePeriod
+        */
+       protected void setEntityInternally(T timePeriod){
+               Partial start = timePeriod.getStart();
+               partialElement_start.setPartial(start);
+               Partial end = timePeriod.getEnd();
+               partialElement_end.setPartial(end);
+
+               ((Text) getText_parseText().getMainControl()).setSelection(cursorPosition);
+               text_freeText.setText(timePeriod.getFreeText());
+
+               super.setEntity(timePeriod);
+       }
+
+       /** {@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()) {
+                                       handleException((CdmPropertyChangeEvent) event);
+                                       return;
+                               }
+                       }
+                       handleEvent(eventSource);
+               }
+       }
+
+       /**
+        * @param event
+        */
+       private void handleException(CdmPropertyChangeEvent event) {
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this,
+                               event.getException()));
+       }
+
+       protected void handleEvent(Object eventSource) {
+               if (eventSource == partialElement_start) {
+                       Partial start = partialElement_start.getPartial();
+                       getEntity().setStart(start);
+               } else if (eventSource == partialElement_end) {
+                       Partial end = partialElement_end.getPartial();
+                       getEntity().setEnd(end);
+               } else if (eventSource == getText_parseText()) {
+                       cursorPosition = ((Text) getText_parseText().getMainControl())
+                                       .getCaretPosition();
+                       T newInstance = parseNewInstance();
+                       setEntityInternally(newInstance);
+               } else if (eventSource == text_freeText) {
+                       getEntity().setFreeText(text_freeText.getText());
+               }
+               updateTitle();
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+       }
+
+       protected T parseNewInstance() {
+               @SuppressWarnings("unchecked")
+               T result = (T)TimePeriodParser.parseString(getText_parseText().getText());
+               return result;
+       }
+
+       protected void updateTitle(){
+               String title = CdmUtils.Nz(getEntity().toString());
+               this.setText(title);
+               layout();
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void dispose() {
+               formFactory.removePropertyChangeListener(this);
+               super.dispose();
+       }
+
+    public TextWithLabelElement getText_parseText() {
+        return text_parseText;
+    }
+
+    public void setText_parseText(TextWithLabelElement text_parseText) {
+        this.text_parseText = text_parseText;
+    }
+}
index 04e1b6253c3e5e9645265e15a2639dbd012bf6b3..201b0f4abc0ce8b0bcc2649a48a711a3465a75a4 100644 (file)
@@ -9,9 +9,6 @@
 
 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.Section;
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
@@ -23,141 +20,21 @@ import eu.etaxonomy.cdm.model.common.TimePeriod;
  *
  * @author n.hoffmann
  * @created Nov 17, 2009
- * @version 1.0
  */
-public class TimePeriodElement extends AbstractCdmFormElement implements ISelectable {
+public class TimePeriodElement<T extends TimePeriod>
+                       extends TimePeriodElementBase<TimePeriod> {
 
-       protected TimePeriod timePeriod;
-       protected Label label;
-       protected DateDetailSection section_dateDetails;
-
-       /**
-        * <p>
-        * Constructor for TimePeriodElement.
-        * </p>
-        *
-        * @param style
-        *            a int.
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param timePeriod
-        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-        */
-       public TimePeriodElement(CdmFormFactory formFactory,
-                       ICdmFormElement parentElement, String labelString,
-                       TimePeriod timePeriod, final int style) {
-               super(formFactory, parentElement);
-
-               label = formFactory.createLabel(getLayoutComposite(), labelString);
-
-               addControl(label);
-
-               section_dateDetails = formFactory.createDateDetailSection(this,
-                               Section.TWISTIE);
-               addControl(section_dateDetails);
-
-               setTimePeriod(timePeriod);
-
-               formFactory.addPropertyChangeListener(this);
+    
+    public TimePeriodElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString,
+                       TimePeriod timePeriod, int style) {
+               super(formFactory, parentElement, labelString, timePeriod, style);
        }
 
-       /**
-     * <p>
-     * Constructor for TimePeriodElement.
-     * </p>
-     *
-     * @param formFactory
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-     *            object.
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     */
-    public TimePeriodElement(CdmFormFactory formFactory,
-            ICdmFormElement parentElement) {
-        super(formFactory, parentElement);
-    }
-
-
-
-
-       /**
-        * <p>
-        * setEntity
-        * </p>
-        *
-        * @param timePeriod
-        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-        */
-       public void setEntity(TimePeriod timePeriod) {
-               setTimePeriod(timePeriod);
-       }
-
-       /** {@inheritDoc} */
        @Override
-       public void propertyChange(PropertyChangeEvent event) {
-               if (event == null) {
-                       return;
-               }
-               Object eventSource = event.getSource();
-
-               if (getElements().contains(eventSource)) {
-                       handleEvent(eventSource);
-               }
-       }
-
-       private void handleEvent(Object eventSource) {
-               if (eventSource == section_dateDetails) {
-                       timePeriod = section_dateDetails.getEntity();
-                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
-               }
-       }
-
-       /**
-        * <p>
-        * Setter for the field <code>timePeriod</code>.
-        * </p>
-        *
-        * @param timePeriod
-        *            the timePeriod to set
-        */
-       public void setTimePeriod(TimePeriod timePeriod) {
-               this.timePeriod = timePeriod;
-               if (timePeriod != null) {
-                       section_dateDetails.setEntity(timePeriod);
-               }
-       }
-
-       /**
-        * <p>
-        * Getter for the field <code>timePeriod</code>.
-        * </p>
-        *
-        * @return the timePeriod
-        */
-       public TimePeriod getTimePeriod() {
-               return timePeriod;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               label.setBackground(color);
-               section_dateDetails.setBackground(color);
+       protected DateDetailSectionBase<TimePeriod> createDateDetailSection() {
+               return formFactory.createDateDetailSection(this,
+                               Section.TWISTIE);
        }
 
-       @Override
-       public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
 
-       public void setLabel(String string) {
-               label.setText(string);
-       }
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TimePeriodElementBase.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TimePeriodElementBase.java
new file mode 100644 (file)
index 0000000..4b43806
--- /dev/null
@@ -0,0 +1,131 @@
+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 eu.etaxonomy.cdm.model.common.TimePeriod;
+
+public abstract class TimePeriodElementBase<T extends TimePeriod> 
+               extends AbstractCdmFormElement 
+               implements ISelectable {
+
+       
+       /**
+        * <p>
+        * Constructor for TimePeriodElement.
+        * </p>
+        *
+        * @param style
+        *            a int.
+        * @param formFactory
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+        *            object.
+        * @param parentElement
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+        *            object.
+        * @param labelString
+        *            a {@link java.lang.String} object.
+        * @param timePeriod
+        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
+        */
+       public TimePeriodElementBase(CdmFormFactory formFactory,
+                       ICdmFormElement parentElement, String labelString,
+                       T timePeriod, final int style) {
+               super(formFactory, parentElement);
+
+               label = formFactory.createLabel(getLayoutComposite(), labelString);
+
+               addControl(label);
+
+               section_dateDetails = createDateDetailSection();
+               addControl(section_dateDetails);
+
+               setTimePeriod(timePeriod);
+
+               formFactory.addPropertyChangeListener(this);
+       }
+
+       protected abstract DateDetailSectionBase<T> createDateDetailSection();
+
+       protected T timePeriod;
+       protected Label label;
+       protected DateDetailSectionBase<T> section_dateDetails;
+
+
+       /**
+        * <p>
+        * setEntity
+        * </p>
+        *
+        * @param timePeriod
+        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
+        */
+       public void setEntity(T timePeriod) {
+               setTimePeriod(timePeriod);
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void propertyChange(PropertyChangeEvent event) {
+               if (event == null) {
+                       return;
+               }
+               Object eventSource = event.getSource();
+
+               if (getElements().contains(eventSource)) {
+                       handleEvent(eventSource);
+               }
+       }
+
+       private void handleEvent(Object eventSource) {
+               if (eventSource == section_dateDetails) {
+                       timePeriod = section_dateDetails.getEntity();
+                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+               }
+       }
+
+       /**
+        * <p>
+        * Setter for the field <code>timePeriod</code>.
+        * </p>
+        *
+        * @param timePeriod
+        *            the timePeriod to set
+        */
+       public void setTimePeriod(T timePeriod) {
+               this.timePeriod = timePeriod;
+               if (timePeriod != null) {
+                       section_dateDetails.setEntity(timePeriod);
+               }
+       }
+
+       /**
+        * <p>
+        * Getter for the field <code>timePeriod</code>.
+        * </p>
+        *
+        * @return the timePeriod
+        */
+       public T getTimePeriod() {
+               return timePeriod;
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void setBackground(Color color) {
+               label.setBackground(color);
+               section_dateDetails.setBackground(color);
+       }
+
+       @Override
+       public void setSelected(boolean selected) {
+               setBackground(selected ? SELECTED : getPersistentBackground());
+       }
+
+       public void setLabel(String string) {
+               label.setText(string);
+       }
+
+}
index 6fd94592ce42d2faf3c2417eddff49ab1da1b4f4..3aedfe81a7affe5fd55b4f0d7fb5f854103a8ff0 100755 (executable)
@@ -18,7 +18,7 @@ import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
  * @since 15.05.2018
  *
  */
-public class VerbatimDateDetailSection extends DateDetailSection {
+public class VerbatimDateDetailSection extends DateDetailSectionBase<VerbatimTimePeriod> {
 
 
     private final TextWithLabelElement text_VerbatimDate;
@@ -50,6 +50,11 @@ public class VerbatimDateDetailSection extends DateDetailSection {
 
         formFactory.addPropertyChangeListener(this);
     }
+    
+    @Override
+       protected VerbatimTimePeriod newInstance(){
+               return VerbatimTimePeriod.NewVerbatimInstance();
+       }
 
 
     /**
@@ -67,6 +72,7 @@ public class VerbatimDateDetailSection extends DateDetailSection {
         getText_parseText().setText(timePeriod.toString());
 
     }
+    
     @Override
     protected void handleEvent(Object eventSource) {
 
@@ -81,27 +87,18 @@ public class VerbatimDateDetailSection extends DateDetailSection {
                 newEntity.setFreeText(entity.getFreeText());
                 newEntity.setVerbatimDate(text_VerbatimDate.getText());
                 setEntity(newEntity);
-
             }
         }
         super.handleEvent(eventSource);
 
     }
 
-    @Override
-    public TimePeriod getEntity() {
-        if(super.getEntity() == null){
-            setEntity(VerbatimTimePeriod.NewVerbatimInstance());
-        }
-        return super.getEntity();
-    }
-
     /**
      * When setting the entity through parsing we do not want to alter the parse field
      * @param timePeriod
      */
-
-    private void setEntityInternally(VerbatimTimePeriod timePeriod){
+    @Override
+    protected void setEntityInternally(VerbatimTimePeriod timePeriod){
         super.setEntityInternally(timePeriod);
         ((Text) text_VerbatimDate.getMainControl()).setSelection(super.getCursorPosition());
         text_VerbatimDate.setText(timePeriod.getVerbatimDate());
index 27300027cdcd3c4f4fbf30532b31731c658b21fd..974f177d739e76ce1ad31786319c1ab10b8d0383 100755 (executable)
@@ -18,48 +18,20 @@ import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
  * @since 15.05.2018
  *
  */
-public class VerbatimTimePeriodElement extends TimePeriodElement {
+public class VerbatimTimePeriodElement 
+                       extends TimePeriodElementBase<VerbatimTimePeriod> {
 
+    
+    public VerbatimTimePeriodElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString,
+                       VerbatimTimePeriod timePeriod, int style) {
+               super(formFactory, parentElement, labelString, timePeriod, style);
+       }
 
-
-    /**
-     * <p>
-     * Constructor for TimePeriodElement.
-     * </p>
-     *
-     * @param style
-     *            a int.
-     * @param formFactory
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-     *            object.
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     * @param labelString
-     *            a {@link java.lang.String} object.
-     * @param timePeriod
-     *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-     */
-    public VerbatimTimePeriodElement(CdmFormFactory formFactory,
-            ICdmFormElement parentElement, String labelString,
-            VerbatimTimePeriod timePeriod, final int style) {
-        super(formFactory, parentElement);
-
-        label = formFactory.createLabel(getLayoutComposite(), labelString);
-
-        addControl(label);
-
-        section_dateDetails = formFactory.createVerbatimDateDetailSection(this,
-                Section.TWISTIE);
-        addControl(section_dateDetails);
-
-        setTimePeriod(timePeriod);
-
-        formFactory.addPropertyChangeListener(this);
-
-
-
-    }
+       @Override
+       protected DateDetailSectionBase<VerbatimTimePeriod> createDateDetailSection() {
+               return formFactory.createVerbatimDateDetailSection(this,
+                               Section.TWISTIE);
+       }
 
     /**
      * <p>
@@ -70,9 +42,8 @@ public class VerbatimTimePeriodElement extends TimePeriodElement {
      *            the timePeriod to set
      */
     @Override
-    public void setTimePeriod(TimePeriod timePeriod) {
+    public void setTimePeriod(VerbatimTimePeriod timePeriod) {
         super.setTimePeriod(timePeriod);
-
     }