ref #9116: add single source element to taxon node details and restructure the wizard
authorKatja Luther <k.luther@bgbm.org>
Wed, 12 Aug 2020 11:11:01 +0000 (13:11 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 12 Aug 2020 11:11:01 +0000 (13:11 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/e4/DefaultOpenTaxonNodeWizardHandlerE4.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/classification/TaxonNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/AdvancedSourceElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/OriginalSourceElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/SingleSourceSection.java

index 35c7a98db734e9f84de136b5f875660b2844d4a8..aa93223b91f915c01b12538783b63b57d3335632 100644 (file)
@@ -66,6 +66,7 @@ public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE
         WizardDialog dialog = new WizardDialog(shell, taxonNodeWizard);
         dialog.open();
         EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, entity);
+        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, entity.getTaxonUuid());
 
     }
 
index e679464e6407374a45597a9502972a917c5a01ac..d10dbd84c70eae626a02089d03e0dd414ec2722f 100644 (file)
@@ -320,6 +320,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDe
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.OriginalSourceAdvancedSection;
+import eu.etaxonomy.taxeditor.ui.section.reference.OriginalSourceElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.SingleSourceSection;
@@ -1854,8 +1855,8 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
-    public SingleSourceSection createSingleSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        SingleSourceSection section = new SingleSourceSection(this, conversation, parentElement, selectionProvider, style);
+    public SingleSourceSection createSingleSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, CdmBase cdmEntity, ISelectionProvider selectionProvider, int style){
+        SingleSourceSection section = new SingleSourceSection(this, conversation, parentElement, cdmEntity, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
         return section;
     }
@@ -2204,6 +2205,11 @@ public class CdmFormFactory extends FormToolkit {
         addAndAdaptElement(parentElement, element);
         return element;
     }
+    public OriginalSourceElement createOriginalSourceElement(ICdmFormElement parentElement, CdmBase cdmEntity){
+        OriginalSourceElement element = new OriginalSourceElement(this, parentElement, cdmEntity);
+        addAndAdaptElement(parentElement, element);
+        return element;
+    }
 
     public TaxonRelationshipDetailElement createTaxonRelationshipDetailElement(ICdmFormElement parentElement){
         TaxonRelationshipDetailElement element = new TaxonRelationshipDetailElement(this, parentElement);
index c13d8d89cdfd2513851ed245c2c4cd4a548bc42b..34fdca558185c0ee87435cc02b3930ad768a21e4 100644 (file)
@@ -9,20 +9,26 @@
 
 package eu.etaxonomy.taxeditor.ui.section.classification;
 
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.TableWrapData;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.metadata.PublishEnum;
@@ -46,6 +52,7 @@ import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.reference.OriginalSourceElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
 
@@ -61,6 +68,8 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
     private static final String REUSE_EXISTING_NAME = Messages.TaxonNodeWizardPage_REUSE_EXISTING_NAME;
     private static final String SECUNDUM_REFERENCE = Messages.TaxonNodeWizardPage_SECUNDUM_REFERENCE;
 
+    private static final Font FONT_BOLD = JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT);
+
     private boolean createNew = false;
        private Classification classification;
        private TaxonNode parentNode;
@@ -73,7 +82,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
        private EntitySelectionElement<Taxon> selection_reuseExistingTaxon;
        private EntitySelectionElement<TaxonName> selection_reuseExistingName;
     private EntitySelectionElement<Reference> selection_SecRef;
-       private EntitySelectionElement<Reference> selection_Ref;
+
+    private OriginalSourceElement sourceSection;
+
     private TextWithLabelElement textTaxonSec;
        private TextWithLabelElement microReference;
     private TextWithLabelElement textNewTaxonName;
@@ -97,7 +108,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
        }
 
     public Reference getRef() {
-        return selection_Ref.getEntity();
+        return sourceSection.getEntity().getCitation();
     }
     public TaxonName getExistingName() {
         return selection_reuseExistingName.getEntity();
@@ -110,63 +121,57 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
        protected void createControls(ICdmFormElement formElement,
                TaxonNode entity, int style) {
 //         taxon = entity.getTaxon();
+           Label taxonTitle = new Label(getLayoutComposite(), SWT.NULL);
+        taxonTitle.setText("Taxon Information");
+        TableWrapData tableWrap = LayoutConstants.FILL_HORIZONTALLY(2, 2);
+        tableWrap.valign = SWT.TOP;
+        taxonTitle.setLayoutData(tableWrap);
+        taxonTitle.setFont(FONT_BOLD);
 
            if (isCreateNew()){
-//             setParentTreeNode(entity);
-               selection_parentTaxonNode = formFactory
-                               .createTaxonNodeSelectionElement(getConversationHolder(), formElement, Messages.TaxonNodeWizardPage_PARENT, parentNode,
-                                               EntitySelectionElement.DELETABLE, style, 100);
-
-               selection_Ref = formFactory
-                    .createSelectionElement(Reference.class,
-                            formElement, Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE, null,
-                            EntitySelectionElement.DELETABLE, style, 100);
+               textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
+                    Messages.TaxonNodeWizardPage_NEW_TAXON, "", style);
+            textNewTaxonName.setFocus();
 
-            microReference = formFactory.createTextWithLabelElement(formElement,
-                    Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE_DETAIL, "", style);
-            microReference.setText(parentNode.getMicroReference());
-
-               selection_reuseExistingTaxon = formFactory
-                               .createSelectionElement(Taxon.class,//getConversationHolder(),
-                                       formElement,
-                                               REUSE_EXISTING_TAXON, null,
-                                               EntitySelectionElement.DELETABLE, style);
-
-               selection_reuseExistingName = formFactory
-                               .createSelectionElement(TaxonName.class,//getConversationHolder(),
-                                       formElement,
-                                               REUSE_EXISTING_NAME, taxon != null? taxon.getName(): null,
-                                               EntitySelectionElement.DELETABLE, style);
-               selection_SecRef = formFactory
+               selection_reuseExistingTaxon = formFactory
+                    .createSelectionElement(Taxon.class,//getConversationHolder(),
+                            formElement,
+                            REUSE_EXISTING_TAXON, null,
+                            EntitySelectionElement.DELETABLE, style);
+
+            selection_reuseExistingName = formFactory
+                    .createSelectionElement(TaxonName.class,//getConversationHolder(),
+                            formElement,
+                            REUSE_EXISTING_NAME, taxon != null? taxon.getName(): null,
+                            EntitySelectionElement.DELETABLE, style);
+            selection_SecRef = formFactory
                     .createSelectionElement(Reference.class,//getConversationHolder(),
                             formElement, SECUNDUM_REFERENCE, taxon != null? taxon.getSec(): null,
                             EntitySelectionElement.DELETABLE, style, 100);
 
-               if (isCreateNew()){
-                   textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
-                           Messages.TaxonNodeWizardPage_NEW_TAXON, "", style);
-                   textNewTaxonName.setFocus();
-               } else{
-                   textNewTaxonName = formFactory.createTextWithLabelElement(formElement,
-                           Messages.TaxonNodeWizardPage_TAXON, "", style);
-               }
-           }else{
-               taxon = getEntity().getTaxon();
-               if (entity.getParent().getTaxon() == null){
-                   TextWithLabelElement textParent = formFactory.createTextWithLabelElement(
-                           formElement,CLASSIFICATION_STR, entity.getClassification().getTitleCache(), style);
-                textParent.setEnabled(false);
-               }else{
-                   TextWithLabelElement textParent = formFactory.createTextWithLabelElement(
-                           formElement, Messages.TaxonNodeWizardPage_PARENT, entity.getParent().getTaxon().getTitleCache(), style);
-                   textParent.setEnabled(false);
-               }
+            checkbox_publish = formFactory.createCheckbox(formElement,
+                    "Taxon is published", true, style);
+
+            checkbox_publish.setEnabled(isCreateNew());
+            Label seperator = new Label(getLayoutComposite(), SWT.HORIZONTAL | SWT.SEPARATOR);
+            seperator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 3));
+            Label nodeTitle = new Label(getLayoutComposite(), SWT.NULL);
+            nodeTitle.setText("Taxon Node");
+            nodeTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            nodeTitle.setFont(FONT_BOLD);
 
-               selection_Ref = formFactory
-                    .createSelectionElement(Reference.class,
-                            formElement, Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE, null,
-                            EntitySelectionElement.DELETABLE, style);
 
+//            microReference = formFactory.createTextWithLabelElement(formElement,
+//                    Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE_DETAIL, "", style);
+//            microReference.setText(parentNode.getMicroReference());
+            selection_parentTaxonNode = formFactory
+                    .createTaxonNodeSelectionElement(getConversationHolder(), formElement, Messages.TaxonNodeWizardPage_PARENT, parentNode,
+                            EntitySelectionElement.DELETABLE, style, 100);
+
+
+
+           }else{
+               taxon = getEntity().getTaxon();
                selection_reuseExistingTaxon = formFactory
                   .createSelectionElement(Taxon.class,//getConversationHolder(),
                           formElement,
@@ -174,27 +179,32 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
                           EntitySelectionElement.DELETABLE, style);
 
                textTaxonSec = formFactory.createTextWithLabelElement(formElement,SECUNDUM_REFERENCE, "", style);
+
             if (entity.getTaxon().getSec() != null){
                 textTaxonSec.setText(taxon.getSec().getTitleCache());
             }
             textTaxonSec.setEnabled(false);
-           }
 
-        if (!isCreateNew()){
-            if (entity.getReference() != null){
-                selection_Ref.setEntity(entity.getReference());
-            }
-        }
+            Label nodeTitle = new Label(getLayoutComposite(), SWT.NULL);
+            nodeTitle.setText("Taxon Node");
+            nodeTitle.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            nodeTitle.setFont(FONT_BOLD);
 
-        Taxon tax = null;
-        if (entity.getTaxon() != null){
-            tax = entity.getTaxon();
-        }
-        checkbox_publish = formFactory.createCheckbox(formElement,
-                "Taxon is published", tax != null? tax.isPublish(): true, style);
+            if (entity.getParent().getTaxon() == null){
+                TextWithLabelElement textParent = formFactory.createTextWithLabelElement(
+                        formElement,CLASSIFICATION_STR, entity.getClassification().getTitleCache(), style);
+                textParent.setEnabled(false);
+            }else{
+                TextWithLabelElement textParent = formFactory.createTextWithLabelElement(
+                        formElement, Messages.TaxonNodeWizardPage_PARENT, entity.getParent().getTaxon().getTitleCache(), style);
+                textParent.setEnabled(false);
+            }
+//            sourceSection = formFactory.createOriginalSourceElement(formElement, entity);
 
-        checkbox_publish.setEnabled(isCreateNew());
 
+           }
+           Label spacer = new Label(getLayoutComposite(), SWT.NULL);
+           spacer.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
         combo_status = formFactory.createEnumComboElement(TaxonNodeStatus.class, formElement, style, true);
         if (!isCreateNew()){
             combo_status.setSelection(entity.getStatus());
@@ -231,9 +241,19 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
 
                if (!isCreateNew()){
                    selectionNodeAgentRelation = formFactory.createTaxonNodeAgentRelationCollectionSection(formElement, getConversationHolder(), StoreUtil.getSectionStyle(TaxonNodeAgentRelationCollectionSection.class, entity.getClass().getCanonicalName()));
-                   selectionNodeAgentRelation.setEntity(entity);
+
                    selectionNodeAgentRelation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+                   selectionNodeAgentRelation.setEntity(entity);
+               }
+
+               sourceSection = formFactory.createOriginalSourceElement(formElement, entity);
+               if (isCreateNew()){
+                   sourceSection.setEntity(null);
+               }else{
+                   sourceSection.setEntity(entity.getSource());
                }
+
+
        }
 
        private void preFillTaxonName() {
@@ -304,9 +324,9 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
                        complete = !textNewTaxonName.getText().isEmpty();
                }
 
-        if (eventSource == selection_Ref) {
+        if (eventSource == sourceSection) {
             if(!isCreateNew()){
-                getEntity().setReference(selection_Ref.getEntity());
+                getEntity().setSource((DescriptionElementSource)sourceSection.getEntity());
             }
         }else if (eventSource == selection_SecRef) {
             if (taxon != null){
index 18bdf8db092d7f7353753b3bbc63b6f3ff48dbfd..9df3fef7cde9afbaf678a67cc540c17c35396ec2 100755 (executable)
@@ -12,7 +12,8 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Display;
 
-import eu.etaxonomy.cdm.model.media.ExternalLink;
+import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -28,7 +29,7 @@ import eu.etaxonomy.taxeditor.ui.section.common.ExternalLinksSection;
  * @author k.luther
  * @since Jul 2, 2020
  */
-public class AdvancedSourceElement extends AbstractCdmDetailElement<OriginalSourceBase> {
+public class AdvancedSourceElement extends AbstractCdmDetailElement<ReferencedEntityBase  > {
 
     protected TextWithLabelElement text_idInSource;
     protected TextWithLabelElement text_idNamespace;
@@ -45,16 +46,17 @@ public class AdvancedSourceElement extends AbstractCdmDetailElement<OriginalSour
 
 
     @Override
-    protected void createControls(ICdmFormElement formElement, OriginalSourceBase entity, int style) {
+    protected void createControls(ICdmFormElement formElement, ReferencedEntityBase entity, int style) {
         Display display = Display.getCurrent();
         Color background = display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
 
         if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowIdInSource.getKey())){
-            text_idInSource = formFactory.createTextWithLabelElement(formElement, "ID in Source", entity != null?entity.getIdInSource():null, style);
+
+            text_idInSource = formFactory.createTextWithLabelElement(formElement, "ID in Source", entity != null?((OriginalSourceBase)entity).getIdInSource():null, style);
             text_idInSource.setBackground(background);
         }
         if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowNamespaceInSource.getKey())){
-            text_idNamespace = formFactory.createTextWithLabelElement(formElement, "ID Namespace", entity != null?entity.getIdNamespace():null, style);
+            text_idNamespace = formFactory.createTextWithLabelElement(formElement, "ID Namespace", entity != null?((OriginalSourceBase)entity).getIdNamespace():null, style);
             text_idNamespace.setBackground(background);
         }
         text_originaleNameString = formFactory.createTextWithLabelElement(
@@ -63,23 +65,29 @@ public class AdvancedSourceElement extends AbstractCdmDetailElement<OriginalSour
         text_originaleNameString.setBackground(background);
 //        text_cdmsource = formFactory.createTextWithLabelElement(
 //                formElement, "CDM Source", entity != null?entity.getCdmSource():null, SWT.NULL);
-        externalLinks = formFactory.createExternalLinksSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(ExternalLinksSection.class, ExternalLink.class.getCanonicalName()));
-        externalLinks.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-        externalLinks.setEntity(entity);
+        externalLinks = formFactory.createExternalLinksSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(ExternalLinksSection.class, DescriptionElementSource.class.getCanonicalName()));
+        externalLinks.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 3));
+        externalLinks.setEntity( ((OriginalSourceBase)entity));
         addControl(externalLinks);
         addElement(externalLinks);
 
 
     }
 
+    @Override
+    public void setEntity(ReferencedEntityBase entity) {
+        super.setEntity(entity);
+        externalLinks.setEntity((OriginalSourceBase)entity);
+    }
+
     @Override
     public void handleEvent(Object eventSource) {
         if (eventSource.equals(text_idInSource)){
-            getEntity().setIdInSource(text_idInSource.getText());
+            ((OriginalSourceBase)getEntity()).setIdInSource(text_idInSource.getText());
          }else if (eventSource.equals(text_idNamespace)){
-             getEntity().setIdNamespace(text_idNamespace.getText());
+             ((OriginalSourceBase)getEntity()).setIdNamespace(text_idNamespace.getText());
          }else if (eventSource.equals(text_originaleNameString)){
-             getEntity().setOriginalNameString(text_originaleNameString.getText());
+             ((OriginalSourceBase)getEntity()).setOriginalNameString(text_originaleNameString.getText());
          }
 
     }
index 7eca40b6881e8404b4b27b71c47aa9579a93ab65..089dcdf6fbc3d52a53db25f13d06eb4369850574 100755 (executable)
@@ -10,9 +10,12 @@ package eu.etaxonomy.taxeditor.ui.section.reference;
 
 import org.eclipse.jface.util.IPropertyChangeListener;
 
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
-import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -25,25 +28,28 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @author k.luther
  * @since Jul 1, 2020
  */
-public class OriginalSourceElement extends AbstractCdmDetailElement<OriginalSourceBase> implements IPropertyChangeListener{
+public class OriginalSourceElement extends AbstractCdmDetailElement<ReferencedEntityBase> implements IPropertyChangeListener{
 
 //    protected EnumComboElement<OriginalSourceType> combo_origsourcetype;
 
     private EntitySelectionElement<Reference> selection_Ref;
     private OriginalSourceAdvancedSection advancedSection;
 
+    private CdmBase cdmEntity;
+
 
 //    protected EntitySelectionElement<Reference> selection_reference;
 //    protected TextWithLabelElement text_referenceDetail;
 
 
-    public OriginalSourceElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+    public OriginalSourceElement(CdmFormFactory formFactory, ICdmFormElement formElement, CdmBase cdmEntity) {
         super(formFactory, formElement);
+        this.cdmEntity = cdmEntity;
 //        selectionArbitrator = formFactory.createSelectionArbitrator(this);
     }
 
     @Override
-    protected void createControls(ICdmFormElement formElement, OriginalSourceBase entity, int style) {
+    protected void createControls(ICdmFormElement formElement, ReferencedEntityBase entity,  int style) {
 
         selection_Ref = formFactory.createSelectionElement(Reference.class,
                       formElement, Messages.TaxonNodeWizardPage_PLACEMENT_SOURCE, null,
@@ -69,11 +75,31 @@ public class OriginalSourceElement extends AbstractCdmDetailElement<OriginalSour
     @Override
     public void handleEvent(Object eventSource) {
         if (eventSource.equals(selection_Ref)){
+
+            if (getEntity() == null){
+                Reference ref = selection_Ref.getEntity();
+                DescriptionElementSource source = DescriptionElementSource.NewPrimarySourceInstance(null, null);
+                setEntity(source);
+                selection_Ref.setEntity(ref);
+                if (cdmEntity != null && cdmEntity instanceof TaxonNode){
+                    ((TaxonNode)cdmEntity).setSource(source);
+                }
+            }
+            //TODO: why is this null????ß
             getEntity().setCitation(selection_Ref.getEntity());
+
         }
 
     }
 
+    /**
+     * @param cdmEntity2
+     */
+    public void setCdmEntity(CdmBase cdmEntity) {
+        this.cdmEntity = cdmEntity;
+
+    }
+
 
 
 }
index 1830f88d42e12cbe604ca563c0cfb737da11b717..1273c664847244809da19330ed74b9828fd88c50 100755 (executable)
@@ -11,7 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.reference;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -22,7 +23,9 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
  * @author k.luther
  * @since Jul 2, 2020
  */
-public class SingleSourceSection extends AbstractCdmDetailSection<OriginalSourceBase> {
+public class SingleSourceSection extends AbstractCdmDetailSection<ReferencedEntityBase> {
+
+    CdmBase cdmEntity;
     /**
      * @param formFactory
      * @param conversation
@@ -31,17 +34,18 @@ public class SingleSourceSection extends AbstractCdmDetailSection<OriginalSource
      * @param style
      */
     public SingleSourceSection(CdmFormFactory formFactory, ConversationHolder conversation,
-            ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+            ICdmFormElement parentElement, CdmBase cdmEntity, ISelectionProvider selectionProvider, int style) {
         super(formFactory, conversation, parentElement, selectionProvider, style);
-
+        this.cdmEntity = cdmEntity;
+        ((OriginalSourceElement)this.detailElement).setCdmEntity(cdmEntity);
 
     }
 
     @Override
-    protected AbstractCdmDetailElement<OriginalSourceBase> createCdmDetailElement(
-            AbstractCdmDetailSection<OriginalSourceBase> parentElement, int style) {
+    protected AbstractCdmDetailElement<ReferencedEntityBase> createCdmDetailElement(
+            AbstractCdmDetailSection<ReferencedEntityBase> parentElement, int style) {
 
-        return new OriginalSourceElement(getFormFactory(), parentElement);
+        return new OriginalSourceElement(getFormFactory(), parentElement, cdmEntity);
     }
 
     @Override
@@ -51,6 +55,6 @@ public class SingleSourceSection extends AbstractCdmDetailSection<OriginalSource
     }
 
     public Reference getRef() {
-        return ((OriginalSourceElement)detailElement).getEntity().getCitation();
+        return detailElement.getEntity().getCitation();
     }
 }