Merge branch 'release/5.18.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonRelationshipDetailElement.java
index ec2f2f3d7cbfb66c32ffcfaecf37898b2e4d66dc..8e92ff33be51a67858f7763279bfe8de1982547a 100644 (file)
@@ -14,20 +14,21 @@ import org.eclipse.swt.SWT;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
-import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractSingleSourceElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
@@ -35,7 +36,7 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @date Dec 1, 2011
  *
  */
-public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<TaxonRelationship> {
+public class TaxonRelationshipDetailElement extends AbstractSingleSourceElement<TaxonRelationship> {//TODO: use AbstractSingleSourcedElement
 
        private TermComboElement<TaxonRelationshipTypeInverseContainer> combo_taxonRelationshipType;
        private MisappliedRelationshipComboElement combo_misappliedRelationshipType;
@@ -43,15 +44,17 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
        private EntitySelectionElement<Taxon> selection_relatedTaxon;
        private CheckboxElement checkBoxDoubtful;
        protected ToggleableTextElement toggleable_cache;
-       private  EntitySelectionElement<Reference> secReference;
+//     private  EntitySelectionElement<Reference> secReference;
        private  EntitySelectionElement<Reference> sensuReference;
        private TextWithLabelElement text_sensu_microreference;
 
 
-       private TextWithLabelElement text_secundum_microreference;
+//     private TextWithLabelElement text_secundum_microreference;
 
        private TextWithLabelElement text_appendedPhrase;
 
+    private CheckboxElement checkbox_published;
+
        private Taxon taxon;
 
        private TaxonDetailSection taxonElement;
@@ -62,27 +65,35 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
 
     public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
                        ICdmFormElement formElement) {
+
                super(formFactory, formElement);
        }
 
        @Override
-       protected void createControls(ICdmFormElement formElement,
+    public void createControls(ICdmFormElement formElement,
                        TaxonRelationship entity, int style) {
-               if ((entity.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) || entity.getType().equals(TaxonRelationshipType.PRO_PARTE_MISAPPLIED_NAME_FOR())) ){
+           if ((entity.getType().isAnyMisappliedName()) ){
 
                        taxon = entity.getFromTaxon();
 
-            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
+            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
             taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             addControl(taxonElement);
             addElement(taxonElement);
-            combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Relationship Type",
-                    entity.getType(), style);
-
-            combo_misappliedRelationshipType.setEnabled(true);
+            String label;
+            if (entity.getType().isAnyMisappliedName()) {
+                label = "Sensu";
+            }else{
+                label = "Sec.";
+            }
+            text_appendedPhrase = formFactory.createTextWithLabelElement(
+                    this, "Appended Phrase", taxon.getAppendedPhrase(),
+                    SWT.WRAP);
 
+            checkbox_published = formFactory.createCheckbox(this,
+                    "Published", taxon.isPublish(), style);
             sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
-                 formElement, "Sensu",
+                 formElement, label,
                 taxon.getSec(), EntitySelectionElement.ALL,
                 style);
 
@@ -91,8 +102,26 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
                     taxon.getSecMicroReference(),null,
                     SWT.WRAP);
 
+            if (entity.getType().isAnyMisappliedName()) {
+                label = "Misapplication Type";
+            }else{
+                label = "Relationship Type";
+            }
+            combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, label,
+                        entity.getType(), style);
+
+            combo_misappliedRelationshipType.setEnabled(true);
+
+
+            if (entity.getType().isAnyMisappliedName()) {
+                label = "Misappl. Sec.";
+            }else{
+                label = "Err. Sec.";
+            }
+
+            /*TODO: use super.createControls(); to create single source element
             secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
-                    formElement, "Misappl. Sec.",
+                    formElement, label,
                     entity.getCitation(), EntitySelectionElement.ALL,
                     style);
 
@@ -100,31 +129,35 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
                     formElement, "Detail",
                     entity.getCitationMicroReference(),null,
                     SWT.WRAP);
-            checkBoxDoubtful = formFactory.createCheckbox(formElement, "Misapplication Doubtful", entity.isDoubtful(), style);
-               }else if ((entity.getType().equals(TaxonRelationshipType.PRO_PARTE_SYNONYM_FOR()) || entity.getType().equals(TaxonRelationshipType.PARTIAL_SYNONYM_FOR())) ){
+                    */
+            super.createControls(formElement, entity, style);
+            setSourceLabel(label);
+
+            if (entity.getType().isAnyMisappliedName()) {
+                label = "Misapplication Doubtful";
+            }else{
+                label = "Relationship Doubtful";
+            }
+            checkBoxDoubtful = formFactory.createCheckbox(formElement, label, entity.isDoubtful(), style);
+               }else if (entity.getType().isAnySynonym() ){
                    taxon = entity.getFromTaxon();
 
-            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
+            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
             taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             addControl(taxonElement);
             addElement(taxonElement);
-            combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Relationship Type",
-                    entity.getType(), style);
 
-            combo_misappliedRelationshipType.setEnabled(true);
 
-            sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
-                 formElement, "Sensu",
-                taxon.getSec(), EntitySelectionElement.ALL,
-                style);
-
-            text_sensu_microreference = formFactory.createTextWithLabelElement(
-                    formElement, "Detail",
-                    taxon.getSecMicroReference(),null,
+            text_appendedPhrase = formFactory.createTextWithLabelElement(
+                    this, "Appended Phrase", taxon.getAppendedPhrase(),
                     SWT.WRAP);
 
-            secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
-                    formElement, "Syn Sec.",
+            checkbox_published = formFactory.createCheckbox(this,
+                    "Published", taxon.isPublish(), style);
+            /*
+             * secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+
+                    formElement, "Syn. Sec.",
                     entity.getCitation(), EntitySelectionElement.ALL,
                     style);
 
@@ -132,7 +165,25 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
                     formElement, "Detail",
                     entity.getCitationMicroReference(),null,
                     SWT.WRAP);
-            checkBoxDoubtful = formFactory.createCheckbox(formElement, "PP Doubtful", entity.isDoubtful(), style);
+                    */
+
+            super.createControls(formElement, entity, style);
+            setSourceLabel("Syn. Sec.");
+            sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+                    formElement, "Sec",
+                   taxon.getSec(), EntitySelectionElement.ALL,
+                   style);
+
+               text_sensu_microreference = formFactory.createTextWithLabelElement(
+                       formElement, "Detail",
+                       taxon.getSecMicroReference(),null,
+                       SWT.WRAP);
+
+            combo_misappliedRelationshipType = formFactory.createMisappliedRelationshipComboElement(formElement, "Synonym Type",
+                    entity.getType(), style);
+
+            combo_misappliedRelationshipType.setEnabled(true);
+            checkBoxDoubtful = formFactory.createCheckbox(formElement, "Syn. Doubtful", entity.isDoubtful(), style);
 
         }else{
             combo_taxonRelationshipType = formFactory.createTermComboElement(
@@ -166,12 +217,14 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
 
        @Override
        public void handleEvent(Object eventSource) {
-               if (getEntity().getType().isAnyMisappliedName()){
-                        if (eventSource == secReference) {
+               if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
+                       /* if (eventSource == secReference) {
                                getEntity().setCitation(secReference.getSelection());
                        } else if (eventSource == text_secundum_microreference) {
                                getEntity().setCitationMicroReference(text_secundum_microreference.getText());
-                       }  else if (eventSource == text_sensu_microreference) {
+                       }  else
+                          */
+                           if (eventSource == text_sensu_microreference) {
                        taxon.setSecMicroReference(text_sensu_microreference.getText());
                        } else if (eventSource == sensuReference) {
                                taxon.setSec(sensuReference.getSelection());
@@ -179,6 +232,10 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
                            getEntity().setType(combo_taxonRelationshipType.getSelection().getType());
                        } else if ( eventSource == combo_misappliedRelationshipType) {
                 getEntity().setType(combo_misappliedRelationshipType.getSelection());
+            } else if (eventSource == text_appendedPhrase) {
+                taxon.setAppendedPhrase(text_appendedPhrase.getText());
+            }  else if (eventSource == checkbox_published) {
+                taxon.setPublish(checkbox_published.getSelection());
             }
                }else{
                        if (eventSource == selection_relatedTaxon){
@@ -196,6 +253,7 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
         }
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
                EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, getEntity().getToTaxon());
+               taxonElement.updateTitle();
        }
 
         @Override
@@ -205,7 +263,7 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
            }
         @Override
         protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
-                if (getEntity().getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
+                if (getEntity().getType().isAnyMisappliedName() || getEntity().getType().isAnySynonym()){
                        String title = taxon.generateTitle();
                        taxon.setTitleCache(title);
                        super.handleTitleCacheRelevantChange(event);
@@ -227,6 +285,12 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
 
        }
 
+    @Override
+    public SelectionArbitrator getSelectionArbitrator() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 
 
 }