further implementation for verbatimdate
authorKatja Luther <k.luther@bgbm.org>
Tue, 15 May 2018 12:52:13 +0000 (14:52 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 15 May 2018 12:52:13 +0000 (14:52 +0200)
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/VerbatimDateDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java

index 218ca46f7d5ab02c689568ff91c310b9583b7356..2b897c936253c2f17adc48b97a13a674e94bb0e8 100644 (file)
@@ -34,7 +34,15 @@ public class DateDetailSection extends AbstractFormSection<TimePeriod> {
        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>
@@ -98,7 +106,7 @@ public class DateDetailSection extends AbstractFormSection<TimePeriod> {
         * When setting the entity through parsing we do not want to alter the parse field
         * @param timePeriod
         */
-       private void setEntityInternally(TimePeriod timePeriod){
+       protected void setEntityInternally(TimePeriod timePeriod){
                Partial start = timePeriod.getStart();
                partialElement_start.setPartial(start);
                Partial end = timePeriod.getEnd();
@@ -155,7 +163,7 @@ public class DateDetailSection extends AbstractFormSection<TimePeriod> {
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
        }
 
-       private void updateTitle(){
+       protected void updateTitle(){
                String title = CdmUtils.Nz(getEntity().toString());
                this.setText(title);
                layout();
index 22a67d4371e9a4c99f23dc51925b004ece2bd72f..bf5dbd86efffe79936d5cc3999fdde2830390a0a 100755 (executable)
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.taxeditor.ui.element;
 
+import org.eclipse.swt.widgets.Text;
+
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
 
@@ -60,6 +62,9 @@ public class VerbatimDateDetailSection extends DateDetailSection {
      */
     @Override
     public void setEntity(TimePeriod timePeriod) {
+        setEntityInternally(timePeriod);
+        updateTitle();
+        getText_parseText().setText(timePeriod.toString());
         if (timePeriod instanceof VerbatimTimePeriod){
             text_VerbatimDate.setText(((VerbatimTimePeriod)timePeriod).getVerbatimDate());
         }
@@ -68,11 +73,40 @@ public class VerbatimDateDetailSection extends DateDetailSection {
     protected void handleEvent(Object eventSource) {
 
         if (eventSource == text_VerbatimDate) {
-
-            ((VerbatimTimePeriod)getEntity()).setVerbatimDate(text_VerbatimDate.getText());
+            TimePeriod entity = getEntity();
+            if(entity instanceof VerbatimTimePeriod){
+                ((VerbatimTimePeriod)entity).setVerbatimDate(text_VerbatimDate.getText());
+            }else{
+                VerbatimTimePeriod newEntity = VerbatimTimePeriod.NewVerbatimInstance();
+                newEntity.setEnd(entity.getEnd());
+                newEntity.setStart(entity.getStart());
+                newEntity.setFreeText(entity.getFreeText());
+                setEntity(newEntity);
+                ((VerbatimTimePeriod)getEntity()).setVerbatimDate(text_VerbatimDate.getText());
+            }
         }
         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){
+        super.setEntityInternally(timePeriod);
+        ((Text) text_VerbatimDate.getMainControl()).setSelection(super.getCursorPosition());
+        text_VerbatimDate.setText(timePeriod.getVerbatimDate());
+        super.setEntity(timePeriod);
+    }
+
 }
index b7699955069a070b4650efa1cc7841f7e429e554..bd91ccb3a5453db29635ee2d159f96d90ab78215 100644 (file)
@@ -31,9 +31,9 @@ import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IErrorIntolerableElement;
 import eu.etaxonomy.taxeditor.ui.element.IExceptionHandler;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.VerbatimTimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
@@ -71,7 +71,7 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
        private UriWithLabelElement text_uri;
        private DateElement text_accessed;
        private EntitySelectionElement<AgentBase> selection_authorTeam;
-       private TimePeriodElement element_timePeriod;
+       private VerbatimTimePeriodElement element_timePeriod;
        private EntitySelectionElement<Reference> selection_inReference;
        private EntitySelectionElement<Institution> selection_institution;
        private EnumComboElement<ReferenceType> combo_referenceType;
@@ -174,7 +174,7 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
                }
 
                // date published
-               element_timePeriod = formFactory.createTimePeriodElement(formElement,
+               element_timePeriod = formFactory.createVerbatimTimePeriodElement(formElement,
                                "Date Published", entity.getDatePublished(), style);
 
                createUriAndAbstract(this, entity, SWT.NULL);