ref #8410: add nomencl. code edition
authorKatja Luther <k.luther@bgbm.org>
Thu, 26 Sep 2019 14:13:34 +0000 (16:13 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 26 Sep 2019 14:14:42 +0000 (16:14 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
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/section/name/NameRelationshipDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NomenclaturalStatusElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/RuleConsideredElement.java [new file with mode: 0755]

index ffa3a5440198839c7c846c112265771a558e50b0..7f449ac4b5118a07015cde452ba226834309b2ce 100644 (file)
@@ -20,12 +20,13 @@ import java.util.Map.Entry;
 
 import org.eclipse.swt.events.SelectionEvent;
 
-import eu.etaxonomy.cdm.model.term.IEnumTerm;
-import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.media.ExternalLinkType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+import eu.etaxonomy.cdm.model.name.NomenclaturalCodeEdition;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
@@ -137,7 +138,25 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
                                return OriginalSourceType.class;
                        }
 
-               }
+               },
+        new CdmEnumDataHolder<NomenclaturalCodeEdition>(){
+
+            @Override
+            public String getName() {
+                return "Nomenclatural Code Edition";
+            }
+
+            @Override
+            public Collection<NomenclaturalCodeEdition> getElements() {
+                return Arrays.asList(NomenclaturalCodeEdition.values());
+            }
+
+            @Override
+            public Class<NomenclaturalCodeEdition> getClazz() {
+                return NomenclaturalCodeEdition.class;
+            }
+
+        }
 
        };
 
@@ -167,9 +186,10 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
                        return "Orig. Source Type";
                } else if(enumType.equals(SpecimenOrObservationType.class)) {
                        return "Spec./Obs. Type";
-               }
-               else if(enumType.equals(ExternalLinkType.class)) {
+               } else if(enumType.equals(ExternalLinkType.class)) {
             return "Type";
+        } else if(enumType.equals(NomenclaturalCodeEdition.class)) {
+            return "Nomencl. Code Edition";
         }
                return "No Label";
        }
index aee3a1fd38462b118286a843265693f414abd186..d58450773102a131a80773fc2f5387e185c069a4 100644 (file)
@@ -240,6 +240,7 @@ import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueElement;
 import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
+import eu.etaxonomy.taxeditor.ui.section.name.RuleConsideredElement;
 import eu.etaxonomy.taxeditor.ui.section.name.SpecimenTypeDesignationElement;
 import eu.etaxonomy.taxeditor.ui.section.name.TextTypeDesignationElement;
 import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
@@ -3232,8 +3233,88 @@ public class CdmFormFactory extends FormToolkit {
                return section;
        }
 
+         /**
+     * <p>
+     * createTextWithLabelElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param textLimit maximal number of characters allowed
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+     *         object.
+     */
+    public RuleConsideredElement createRuleConsideredElement(ICdmFormElement parentElement, String labelString,
+            NameRelationship relation, int style) {
+
 
+        RuleConsideredElement element = new RuleConsideredElement(this, parentElement, labelString, relation, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
+    /**
+     * <p>
+     * createTextWithLabelElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param textLimit maximal number of characters allowed
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+     *         object.
+     */
+    public RuleConsideredElement createRuleConsideredElement(ICdmFormElement parentElement, String labelString,
+            NomenclaturalStatus status, int style) {
+
+
+        RuleConsideredElement element = new RuleConsideredElement(this, parentElement, labelString, status, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
+    /**
+     * <p>
+     * createTextWithLabelElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param textLimit maximal number of characters allowed
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+     *         object.
+     */
+    public RuleConsideredElement createRuleConsideredElement(ICdmFormElement parentElement, String labelString,
+            int style) {
+
+
+        RuleConsideredElement element = new RuleConsideredElement(this, parentElement, labelString, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
 
 //     public RichTextWithLabelElement createRichTextLabelElement(ICdmFormElement parentElement, String labelString, String initialText, int textHeight, int style) {
index 1cd513759b46599eb5df71539c669c2e8a165ad4..57d0392e192713a69a0ded40da42fb8914b09719 100644 (file)
@@ -21,7 +21,6 @@ import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
-import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
@@ -34,7 +33,7 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  */
 public class NameRelationshipDetailElement extends AbstractReferencedEntityElement<NameRelationship>{
 
-       private TextWithLabelElement text_ruleConsidered;
+       private RuleConsideredElement ruleConsidered;
        private EntitySelectionElement selection_toName;
        private TermComboElement<NameRelationshipType> combo_relationshipType;
        private LabelElement label;
@@ -62,7 +61,7 @@ public class NameRelationshipDetailElement extends AbstractReferencedEntityEleme
        public void createControls(ICdmFormElement element, int style) {
                label = formFactory.createLabel(element, null);
 
-               text_ruleConsidered = formFactory.createTextWithLabelElement(element, "Rule Considered", null, SWT.NULL);
+               ruleConsidered = formFactory.createRuleConsideredElement(element, "Rule Considered", SWT.NULL);
 
                super.createControls(element, style);
        }
@@ -73,7 +72,7 @@ public class NameRelationshipDetailElement extends AbstractReferencedEntityEleme
                String text = entity.getFromName().getTitleCache() + " is " + entity.getType().getLabel() + " " + entity.getToName().getTitleCache();
 
                label.setText(text);
-               text_ruleConsidered.setText(entity.getRuleConsidered());
+               ruleConsidered.setNameRelation(entity);
 
                super.setEntity(entity);
        }
@@ -81,14 +80,14 @@ public class NameRelationshipDetailElement extends AbstractReferencedEntityEleme
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-               if(eventSource == combo_relationshipType){
+       if(eventSource == combo_relationshipType){
                        getEntity().setType(combo_relationshipType.getSelection());
                }
                else if(eventSource == selection_toName){
                        MessagingUtils.error(getClass(), "No API call available.", null);
                }
-               else if(eventSource == text_ruleConsidered){
-                       getEntity().setRuleConsidered(text_ruleConsidered.getText());
+               else if(eventSource == ruleConsidered.textRuleConsidered){
+                       getEntity().setRuleConsidered(ruleConsidered.textRuleConsidered.getText());
                }
                else if(eventSource == selection_reference){
                        getEntity().setCitation(selection_reference.getSelection());
index 3d850d620b931b479f0ec43750955211b3cea344..9cd155ef42f84b10ceb72def8c35e6e2e8b7abb5 100644 (file)
@@ -36,6 +36,8 @@ public class NomenclaturalStatusElement extends AbstractReferencedEntityElement<
 
        private TextWithLabelElement ruleConsideredText;
 
+
+
        private final SelectionArbitrator selectionArbitrator;
 
        public NomenclaturalStatusElement(CdmFormFactory cdmFormFactory, AbstractFormSection formElement,
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/RuleConsideredElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/RuleConsideredElement.java
new file mode 100755 (executable)
index 0000000..88ed919
--- /dev/null
@@ -0,0 +1,166 @@
+/**
+* Copyright (C) 2019 EDIT
+* 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.
+*/
+package eu.etaxonomy.taxeditor.ui.section.name;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.name.NameRelationship;
+import eu.etaxonomy.cdm.model.name.NomenclaturalCodeEdition;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
+import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+
+
+/**
+ * @author k.luther
+ * @since 17.09.2019
+ */
+public class RuleConsideredElement extends AbstractCdmFormElement implements SelectionListener {
+
+    protected TextWithLabelElement textRuleConsidered;
+
+    protected EnumComboElement<NomenclaturalCodeEdition> nomenclaturalCodeEdition;
+
+    Map<String, Integer> nomenclaturalCodeEditionStringMap;
+
+    private NomenclaturalStatus status = null;
+
+
+    private NameRelationship nameRelation = null;
+
+    /**
+     * @param cdmFormFactory
+     * @param parentElement
+     * @param labelString
+     * @param initialRule
+     * @param style
+     */
+    public RuleConsideredElement( CdmFormFactory formFactory, ICdmFormElement formElement, String labelString, int style) {
+        super(formFactory, formElement);
+        this.textRuleConsidered = formFactory.createTextWithLabelElement(formElement, "Rule considered", null, style);
+        this.nomenclaturalCodeEdition = formFactory.createEnumComboElement(NomenclaturalCodeEdition.class, formElement, null, style);
+        nomenclaturalCodeEditionStringMap = new HashMap<>();
+        nomenclaturalCodeEdition.addSelectionListener(this);
+
+    }
+
+
+    /**
+     * @param cdmFormFactory
+     * @param parentElement
+     * @param labelString
+     * @param initialRule
+     * @param style
+     */
+    public RuleConsideredElement( CdmFormFactory formFactory, ICdmFormElement formElement, String labelString, NomenclaturalStatus status, int style) {
+        super(formFactory, formElement);
+        this.textRuleConsidered = formFactory.createTextWithLabelElement(formElement, "Rule considered", null, style);
+        this.nomenclaturalCodeEdition =  formFactory.createEnumComboElement(NomenclaturalCodeEdition.class, formElement, null, style);
+
+        nomenclaturalCodeEditionStringMap = new HashMap<>();
+
+
+        this.status = status;
+        textRuleConsidered.setText(status.getRuleConsidered());
+
+        nomenclaturalCodeEdition.addSelectionListener(this);
+
+    }
+
+    /**
+     * @param cdmFormFactory
+     * @param parentElement
+     * @param labelString
+     * @param initialRule
+     * @param style
+     */
+    public RuleConsideredElement( CdmFormFactory formFactory, ICdmFormElement formElement, String labelString, NameRelationship relation, int style) {
+        super(formFactory, formElement);
+        this.textRuleConsidered = formFactory.createTextWithLabelElement(formElement, "Rule considered", null, style);
+
+        this.nomenclaturalCodeEdition =  formFactory.createEnumComboElement(NomenclaturalCodeEdition.class, formElement, null, style);
+
+        nomenclaturalCodeEditionStringMap = new HashMap<>();
+
+        this.nameRelation = relation;
+        textRuleConsidered.setText(nameRelation.getRuleConsidered());
+
+        nomenclaturalCodeEdition.addSelectionListener(this);
+
+    }
+
+
+    public NomenclaturalStatus getStatus() {
+        return status;
+    }
+
+
+    public void setStatus(NomenclaturalStatus status) {
+        this.status = status;
+    }
+
+
+    public NameRelationship getNameRelation() {
+        return nameRelation;
+    }
+
+
+    public void setNameRelation(NameRelationship nameRelation) {
+        this.nameRelation = nameRelation;
+        this.textRuleConsidered.setText(getText());
+        this.nomenclaturalCodeEdition.setSelection(getCodeEdition());
+    }
+
+    public String getText(){
+        return this.nameRelation.getRuleConsidered();
+    }
+
+    public NomenclaturalCodeEdition getCodeEdition(){
+        return this.nameRelation.getCodeEdition();
+    }
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+       //if (e.getSource().equals(nomenclaturalCodeEdition)){
+            NomenclaturalCodeEdition edition =  nomenclaturalCodeEdition.getSelection();
+            if (status != null){
+                this.status.setCodeEdition(edition);
+            }else if (nameRelation != null){
+                this.nameRelation.setCodeEdition(edition);
+            }
+     //   }
+
+    }
+
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+        // TODO Auto-generated method stub
+
+    }
+
+
+    public void handleEvent(Object eventSource) {
+        if(eventSource == textRuleConsidered){
+            if (status != null){
+                status.setRuleConsidered(textRuleConsidered.getText());
+            }else if (nameRelation != null){
+                nameRelation.setRuleConsidered(textRuleConsidered.getText());
+            }
+        }
+
+    }
+
+
+}