Merge branch 'release/5.42.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / detail / AbstractDetailedDescriptionDetailElement.java
index 0d76982c49796b42130ef8b20ee4da9613914bdc..c99f7a01eefcfd0d75db09b4746b71101e383848 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
 * European Distributed Institute of Taxonomy
@@ -7,23 +6,36 @@
 * 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.
 */
-
 package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
+import org.eclipse.swt.SWT;
+
+import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.description.ModifierSection;
 
 /**
  * <p>Abstract AbstractDetailedDescriptionDetailElement class.</p>
  *
  * @author n.hoffmann
  * @created Jun 10, 2010
- * @version 1.0
  */
 public abstract class AbstractDetailedDescriptionDetailElement<T extends DescriptionElementBase> extends AbstractCdmDetailElement<T>{
 
+    private TimePeriodElement timePeriod;
+    private ModifierSection section_modifiers;
+    private TextWithLabelElement text_modifyingText;
+
        /**
         * <p>Constructor for AbstractDetailedDescriptionDetailElement.</p>
         *
@@ -33,9 +45,78 @@ public abstract class AbstractDetailedDescriptionDetailElement<T extends Descrip
         * @param style a int.
         * @param <T> a T object.
         */
+       public AbstractDetailedDescriptionDetailElement(CdmFormFactory formFactory,
+                       ICdmFormElement formElement, T entity, boolean enabled, int style) {
+               super(formFactory, formElement);
+               setEntity(entity);
+               setEnabled(enabled);
+       }
        public AbstractDetailedDescriptionDetailElement(CdmFormFactory formFactory,
                        ICdmFormElement formElement, T entity, int style) {
                super(formFactory, formElement);
                setEntity(entity);
+
        }
-}
+
+    protected void createTimePeriod(ICdmFormElement formElement, DescriptionElementBase entity,
+            int style) {
+           timePeriod = formFactory.createTimePeriodElement(this, "Time scope", entity.getTimeperiod(), SWT.WRAP);
+           timePeriod.setEnabled(enabled);
+    }
+
+    protected void createModifier(ICdmFormElement formElement, DescriptionElementBase entity,
+            int style) {
+
+        if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifier.getKey())){
+            section_modifiers = formFactory.createModifierSection(this, StoreUtil.getSectionStyle(ModifierSection.class, entity.getClass().getCanonicalName(), true));
+            section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            section_modifiers.setEntity(entity);
+            section_modifiers.setEnabled(enabled);
+        }
+        if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifierFreeText.getKey())){
+            text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+            if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+                text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+            }
+            text_modifyingText.setEnabled(enabled);
+        }
+    }
+
+    protected void createFreetextModifier(ICdmFormElement formElement, DescriptionElementBase entity,
+            int style) {
+        if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowModifierFreeText.getKey())){
+            text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+            if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+                text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+            }
+            text_modifyingText.setEnabled(enabled);
+        }
+    }
+
+    @Override
+    public void handleEvent(Object eventSource) {
+        if(eventSource == timePeriod){
+            getEntity().setTimeperiod(timePeriod.getTimePeriod());
+        }
+        if (eventSource == text_modifyingText){
+            getEntity().putModifyingText(LanguageString.NewInstance(text_modifyingText.getText(), CdmStore.getDefaultLanguage()));
+        }
+
+    }
+
+    @Override
+    public void fillFields() {
+       timePeriod.setEntity(getEntity().getTimeperiod());
+        if (section_modifiers != null) {
+               section_modifiers.setEntity(getEntity());
+        }
+        if (text_modifyingText!= null) {
+               if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+                text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+            }
+        }
+    }
+
+
+
+}
\ No newline at end of file