merge branches
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / classification / TaxonNodeDetailElement.java
index c76a96279b295e40e4cf90c1fb2ba1a7cacac40c..869801d2abca7765b2823fd6906cf1b045b77616 100644 (file)
@@ -51,9 +51,12 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
        private ITaxonTreeNode parentTreeNode;
 
        private EntitySelectionElement<Taxon> selection_reuseExistingTaxon;
+       private EntitySelectionElement<Reference> selection_SecRef;
 
        private Taxon taxon;
 
+       private Reference secReference;
+
        private TextWithLabelElement textNewTaxonName;
 
        private CheckboxElement checkbox_openInEditor;
@@ -92,6 +95,9 @@ 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,
@@ -150,20 +156,29 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                        setClassification(selection_classification.getEntity());
                } else if (eventSource == selection_parentTaxonNode) {
                        setParentTreeNode(selection_parentTaxonNode.getEntity());
+               } else if (eventSource == selection_SecRef) {
+                       setSecReference(selection_SecRef.getEntity());
                } else if (eventSource == selection_reuseExistingTaxon) {
-                       boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
-                       selection_reuseExistingName.setEnabled(enabled);
-                       textNewTaxonName.setEnabled(enabled);
+                               boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
+                               selection_reuseExistingName.setEnabled(enabled);
+                               textNewTaxonName.setEnabled(enabled);
+                               if (!enabled){
+                                       setTaxon(selection_reuseExistingTaxon.getEntity());
+                               }
+                               complete = !textNewTaxonName.getText().isEmpty();
+
 
-                       setTaxon(selection_reuseExistingTaxon.getEntity());
                } else if (eventSource == selection_reuseExistingName) {
-                       boolean enabled = selection_reuseExistingName.getEntity() == null;
+                   boolean enabled = selection_reuseExistingName.getEntity() == null;
+                       setTaxon(selection_reuseExistingName.getEntity());
                        selection_reuseExistingTaxon.setEnabled(enabled);
                        textNewTaxonName.setEnabled(enabled);
 
-                       setTaxon(selection_reuseExistingName.getEntity());
+                       //setTaxon(selection_reuseExistingName.getEntity());
+
+                       complete = !textNewTaxonName.getText().isEmpty();
                } else if (eventSource == textNewTaxonName) {
-                       boolean enabled = CdmUtils.isEmpty(textNewTaxonName.getText());
+                       boolean enabled = CdmUtils.isBlank(textNewTaxonName.getText());
                        selection_reuseExistingTaxon.setEnabled(enabled);
                        selection_reuseExistingName.setEnabled(enabled);
 
@@ -235,8 +250,15 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                }
        }
 
+       private void setSecReference(Reference secRef){
+               this.secReference = secRef;
+               setTaxon(textNewTaxonName.getText());
+       }
+
        private void setTaxon(Taxon taxon) {
                this.taxon = taxon;
+               textNewTaxonName.setText(taxon.getName().getTitleCache());
+               this.secReference = taxon.getSec();
        }
 
        private void setTaxon(String taxonNameString) {
@@ -248,7 +270,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
        private void setTaxon(TaxonNameBase taxonName) {
                Reference secundum = null;
                if (getParentTreeNode() != null) {
-                       if (getParentTreeNode() instanceof Classification) {
+                       if (this.secReference != null){
+                               secundum = this.secReference;
+                       } else if (getParentTreeNode() instanceof Classification) {
                                secundum = ((Classification) getParentTreeNode())
                                                .getReference();
                        } else if (getParentTreeNode() instanceof TaxonNode) {
@@ -257,6 +281,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                        }
                }
                taxon = Taxon.NewInstance(taxonName, secundum);
+               //textNewTaxonName.setText(taxonName.getTitleCache());
        }
 
        private void setOpenInEditor(boolean openInEditor) {