cleanup
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / taxon / TaxonRelationshipDetailElement.java
index dfaaec7dd5458b62648b6864ea20804c22a3cb53..3862e0bf983f2c0b1d26d88077049cca58b2e5db 100644 (file)
@@ -14,99 +14,187 @@ 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.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.combo.MisappliedRelationshipComboElement;
+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;
 
 /**
  * @author n.hoffmann
  * @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;
 
        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;
 
-       public TaxonRelationshipDetailElement(CdmFormFactory formFactory,
+       public TaxonDetailSection getTaxonElement() {
+        return taxonElement;
+    }
+
+    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())){
-                       combo_taxonRelationshipType = formFactory.createTermComboElement(
-                                       TaxonRelationshipTypeInverseContainer.class,
-                                       formElement, "Relationship Type",
-                                       getTaxonRelationshipTypeInverseContainer(), style);
-                       combo_taxonRelationshipType.setEnabled(false);
-                       selection_relatedTaxon = formFactory.createSelectionElement(
-                                       Taxon.class, //getConversationHolder(),
-                                       formElement, "Related Taxon", getRelatedTaxon(),
-                                       EntitySelectionElement.SELECTABLE, style);
-                       checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation is doubtful", entity.isDoubtful(), style);
-               }else{
+           if ((entity.getType().isAnyMisappliedName()) ){
+
                        taxon = entity.getFromTaxon();
-//                     toggleable_cache = formFactory.createToggleableTextField(formElement,
-//                                     "Title Cache", taxon.getTitleCache(),
-//                                     taxon.isProtectedTitleCache(), style);
-//
-//                     text_appendedPhrase = formFactory.createTextWithLabelElement(
-//                                     formElement, "Appended Phrase", taxon.getAppendedPhrase(),
-//                                     SWT.WRAP);
-
-
-                       taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, style);
-                       taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-                       addControl(taxonElement);
-                       addElement(taxonElement);
-
-                       sensuReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
-                                formElement, "Sensu",
-                               taxon.getSec(), EntitySelectionElement.ALL,
-                               style);
-
-                       text_sensu_microreference = formFactory.createTextWithLabelElement(
-                                       formElement, "Detail",
-                                       taxon.getSecMicroReference(),null,
-                                       SWT.WRAP);
-
-                       secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
-                                       formElement, "Misappl. Sec.",
-                                       entity.getCitation(), EntitySelectionElement.ALL,
-                                       style);
-
-                       text_secundum_microreference = formFactory.createTextWithLabelElement(
-                           formElement, "Detail",
-                           entity.getCitationMicroReference(),null,
-                           SWT.WRAP);
+
+            taxonElement = formFactory.createTaxonDetailSection(getConversationHolder(), formElement, null, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
+            taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            addControl(taxonElement);
+            addElement(taxonElement);
+            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, label,
+                taxon.getSec(), EntitySelectionElement.ALL,
+                style);
+
+            text_sensu_microreference = formFactory.createTextWithLabelElement(
+                    formElement, "Detail",
+                    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, label,
+                    entity.getCitation(), EntitySelectionElement.ALL,
+                    style);
+
+            text_secundum_microreference = formFactory.createTextWithLabelElement(
+                    formElement, "Detail",
+                    entity.getCitationMicroReference(),null,
+                    SWT.WRAP);
+                    */
+            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, StoreUtil.getSectionStyle(TaxonDetailSection.class, Taxon.class.getCanonicalName()));
+            taxonElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            addControl(taxonElement);
+            addElement(taxonElement);
+
+
+            text_appendedPhrase = formFactory.createTextWithLabelElement(
+                    this, "Appended Phrase", taxon.getAppendedPhrase(),
+                    SWT.WRAP);
+
+            checkbox_published = formFactory.createCheckbox(this,
+                    "Published", taxon.isPublish(), style);
+            /*
+             * secReference = formFactory.createSelectionElement(Reference.class,//getConversationHolder(),
+
+                    formElement, "Syn. Sec.",
+                    entity.getCitation(), EntitySelectionElement.ALL,
+                    style);
+
+            text_secundum_microreference = formFactory.createTextWithLabelElement(
+                    formElement, "Detail",
+                    entity.getCitationMicroReference(),null,
+                    SWT.WRAP);
+                    */
+
+            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(
+                    TaxonRelationshipTypeInverseContainer.class,
+                    formElement, "Relationship Type",
+                    getTaxonRelationshipTypeInverseContainer(), style);
+
+            combo_taxonRelationshipType.setEnabled(false);
+            selection_relatedTaxon = formFactory.createSelectionElement(
+                    Taxon.class, //getConversationHolder(),
+                    formElement, "Related Taxon", getRelatedTaxon(),
+                    EntitySelectionElement.SELECTABLE, style);
+            checkBoxDoubtful = formFactory.createCheckbox(formElement, "Relation Doubtful", entity.isDoubtful(), style);
                }
        }
 
@@ -124,16 +212,26 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
 
        @Override
        public void handleEvent(Object eventSource) {
-               if (getEntity().getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){
-                        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) {
+                       } else if (eventSource == sensuReference) {
                                taxon.setSec(sensuReference.getSelection());
-                       }
+                       } else if (eventSource == combo_taxonRelationshipType ) {
+                           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){
                                boolean inverse = getTaxonRelationshipTypeInverseContainer().isInverse();
@@ -143,11 +241,14 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
                                }else{
                                        getEntity().setToTaxon(relatedTaxon);
                                }
-                       }else if(eventSource==checkBoxDoubtful){
-                           getEntity().setDoubtful(checkBoxDoubtful.getSelection());
                        }
                }
+               if(eventSource==checkBoxDoubtful){
+            getEntity().setDoubtful(checkBoxDoubtful.getSelection());
+        }
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+               EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, getEntity().getToTaxon());
+               taxonElement.updateTitle();
        }
 
         @Override
@@ -157,7 +258,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);
@@ -167,7 +268,6 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
        @Override
        public void refresh(){
                 updateContent();
-
         }
 
        @Override
@@ -176,7 +276,11 @@ public class TaxonRelationshipDetailElement extends AbstractCdmDetailElement<Tax
                if (taxonElement!=null) {
                        taxonElement.setEntity(entity.getFromTaxon());
         }
-
        }
 
-}
+    @Override
+    public SelectionArbitrator getSelectionArbitrator() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+}
\ No newline at end of file