Merge branch 'hotfix/3.12.4' into develop
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / classification / TaxonNodeDetailElement.java
index 869801d2abca7765b2823fd6906cf1b045b77616..043587499ddc7955ad65fd147b547c2f603a59f5 100644 (file)
@@ -95,9 +95,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                selection_parentTaxonNode = formFactory
                                .createTaxonNodeSelectionElement(getConversationHolder(), formElement, "Parent", null,
                                                EntitySelectionElement.DELETABLE, style);
-               selection_SecRef = formFactory
-                               .createSelectionElement(Reference.class,getConversationHolder(), formElement, "Secundum Reference", null,
-                                               EntitySelectionElement.DELETABLE, style);
+
                selection_reuseExistingTaxon = formFactory
                                .createSelectionElement(Taxon.class,
                                                getConversationHolder(), formElement,
@@ -109,7 +107,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                                                getConversationHolder(), formElement,
                                                "Reuse existing name", null,
                                                EntitySelectionElement.DELETABLE, style);
-
+               selection_SecRef = formFactory
+                .createSelectionElement(Reference.class,getConversationHolder(), formElement, "Secundum Reference", null,
+                        EntitySelectionElement.DELETABLE, style);
                textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
                                "New Taxon", "", style);
                textNewTaxonName.setFocus();
@@ -145,6 +145,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                         }
                     }
                 }
+               
             }
         }
     }
@@ -164,6 +165,8 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                                textNewTaxonName.setEnabled(enabled);
                                if (!enabled){
                                        setTaxon(selection_reuseExistingTaxon.getEntity());
+                               } else{
+                                   textNewTaxonName.setText(null);
                                }
                                complete = !textNewTaxonName.getText().isEmpty();
 
@@ -174,7 +177,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                        selection_reuseExistingTaxon.setEnabled(enabled);
                        textNewTaxonName.setEnabled(enabled);
 
-                       //setTaxon(selection_reuseExistingName.getEntity());
+                       setTaxon(selection_reuseExistingName.getEntity());
 
                        complete = !textNewTaxonName.getText().isEmpty();
                } else if (eventSource == textNewTaxonName) {
@@ -239,12 +242,14 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                        selection_classification.setEntity(classification);
                        selection_parentTaxonNode.setEntity(null);
                        selection_parentTaxonNode.setClassification(classification);
+                       selection_SecRef.setEntity(classification.getReference());
                } else if (parentTreeNode instanceof TaxonNode) {
                        classification = (Classification) HibernateProxyHelper
                                        .deproxy(((TaxonNode) parentTreeNode).getClassification());
                        selection_classification.setEntity(classification);
                        selection_parentTaxonNode.setEntity((TaxonNode) parentTreeNode);
                        selection_parentTaxonNode.setClassification(classification);
+                       selection_SecRef.setEntity(((TaxonNode)parentTreeNode).getTaxon().getSec());
                } else if(parentTreeNode == null){
                        this.parentTreeNode = selection_classification.getEntity();
                }
@@ -258,7 +263,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
        private void setTaxon(Taxon taxon) {
                this.taxon = taxon;
                textNewTaxonName.setText(taxon.getName().getTitleCache());
-               this.secReference = taxon.getSec();
+               selection_SecRef.setEntity(taxon.getSec());
        }
 
        private void setTaxon(String taxonNameString) {
@@ -270,18 +275,24 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
        private void setTaxon(TaxonNameBase taxonName) {
                Reference secundum = null;
                if (getParentTreeNode() != null) {
-                       if (this.secReference != null){
-                               secundum = this.secReference;
-                       } else if (getParentTreeNode() instanceof Classification) {
+                       if (this.selection_SecRef.getEntity() != null){
+                               secundum = this.selection_SecRef.getEntity();
+                       } /*else if (getParentTreeNode() instanceof Classification) {
                                secundum = ((Classification) getParentTreeNode())
                                                .getReference();
                        } else if (getParentTreeNode() instanceof TaxonNode) {
                                secundum = ((TaxonNode) getParentTreeNode()).getTaxon()
                                                .getSec();
-                       }
+                       }*/
+               }
+               if (taxonName != null){
+                   taxon = Taxon.NewInstance(taxonName, secundum);
+                   if (!taxonName.getTitleCache().trim().equals(textNewTaxonName.getText().trim())){
+                       textNewTaxonName.setText(taxonName.getTitleCache());
+                   }
+               } else {
+                   textNewTaxonName.setText(null);
                }
-               taxon = Taxon.NewInstance(taxonName, secundum);
-               //textNewTaxonName.setText(taxonName.getTitleCache());
        }
 
        private void setOpenInEditor(boolean openInEditor) {