ref #9065: add media section to derived unit details view
authorKatja Luther <k.luther@bgbm.org>
Tue, 11 Aug 2020 08:12:59 +0000 (10:12 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 11 Aug 2020 08:12:59 +0000 (10:12 +0200)
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/AbstractCdmDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitMediaSection.java [new file with mode: 0755]

index 1b5e49a3cff4a1dede12d02415d519751cc6563f..e679464e6407374a45597a9502972a917c5a01ac 100644 (file)
@@ -256,6 +256,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailElement
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitMediaSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationEventDetailElement;
@@ -318,8 +319,10 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDe
 import eu.etaxonomy.taxeditor.ui.section.occurrence.media.MediaSpecimenGeneralDetailSection;
 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.ReferenceDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.reference.SingleSourceSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.CdmBaseElement;
@@ -1742,6 +1745,15 @@ public class CdmFormFactory extends FormToolkit {
 
     }
 
+    public DerivedUnitMediaSection createDerivedUnitMediaSection(ConversationHolder conversation,
+            ICdmFormElement parentElement, int style) {
+        DerivedUnitMediaSection section = new DerivedUnitMediaSection(this, conversation, parentElement, style);
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+
+    }
+
     /**
      * @param definedTermClass
      * @param formElement
@@ -1836,6 +1848,18 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public OriginalSourceAdvancedSection createOriginalSourceAdvancedSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        OriginalSourceAdvancedSection section = new OriginalSourceAdvancedSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
+    public SingleSourceSection createSingleSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        SingleSourceSection section = new SingleSourceSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public TaxonBaseDetailSection createTaxonBaseDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         TaxonBaseDetailSection section = new TaxonBaseDetailSection(this, conversation, parentElement, selectionProvider, style);
         addAndAdaptSection(parentElement, section);
index 69d248196aeb92019075d55b284af566eb914f3b..e27761486126e6829ad3bf38e78706d982602f50 100644 (file)
@@ -278,8 +278,11 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
                 except.add(formElement);
             }
         }
-
-        enabled = getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud);
+        if (getEntity() != null){
+            enabled = CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), requiredCrud);
+        }else{
+            enabled = true;
+        }
         setEnabled(enabled, except);
     }
 
index 452c54794a929c0691a50af28f0a001a3ce2351d..e92cf4fc113e1d50c76d62b21ec3b19ff5647f27 100644 (file)
@@ -143,15 +143,20 @@ public abstract class AbstractCdmDetailSection<ENTITY>
         }
                if (detailElement != null) {
                        detailElement.setEntity(entity);
+                       formFactory.adapt(detailElement);
                Collection<Object> except = new ArrayList<>();
                for(ICdmFormElement formElement:detailElement.getElements()){
                    if(formElement instanceof IEnableableFormElement && !((IEnableableFormElement) formElement).isEnabled()){
                        except.add(formElement);
                    }
                }
+               if (entity != null){
+                   boolean hasPermission = CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(entity), requiredCrud);
+                   detailElement.setEnabled(isEnabled() && hasPermission, except);
+               }else{
+                   detailElement.setEnabled(isEnabled() && true, except);
+               }
 
-               boolean hasPermission = CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(entity), requiredCrud);
-                       detailElement.setEnabled(isEnabled() && hasPermission, except);
                }
                super.setEntity(entity);
                setSectionTitle();
index 959f8e0339e4829a066e46a9792e7aca718204cc..9ccc92e2bcf805f401aab1e40e6681334e71de68 100644 (file)
@@ -56,6 +56,8 @@ public class DerivedUnitBaseDetailElement extends
 
     private OriginalLabelDataElement textOriginalLabel;
 
+    private DerivedUnitMediaSection mediaDetailElement;
+
 
 
        /**
@@ -116,12 +118,19 @@ public class DerivedUnitBaseDetailElement extends
                textOriginalLabel = formFactory.createOriginalLabelDataElement(formElement);
                textOriginalLabel.setEntity(getEntity());
 
+
+
                super.createControls(formElement, entity, style);
 
         section_source = formFactory.createSourceCollectionDetailSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(SourceCollectionDetailSection.class, entity.getClass().getCanonicalName()));
                section_source.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
                section_source.setEntity(entity);
 
+        mediaDetailElement = formFactory.createDerivedUnitMediaSection(getConversationHolder(), formElement, StoreUtil.getSectionStyle(DerivedUnitMediaSection.class, entity.getClass().getCanonicalName()));
+        mediaDetailElement.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        mediaDetailElement.setEntity(getEntity());
+
+
 
        }
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitMediaSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitMediaSection.java
new file mode 100755 (executable)
index 0000000..e4cef05
--- /dev/null
@@ -0,0 +1,78 @@
+/**
+* Copyright (C) 2020 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.occurrence;
+
+import java.util.Collection;
+import java.util.Comparator;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
+import eu.etaxonomy.taxeditor.ui.section.DefaultCdmBaseComparator;
+
+/**
+ * @author k.luther
+ * @since Aug 4, 2020
+ */
+public class DerivedUnitMediaSection extends AbstractEntityCollectionSection<DerivedUnitFacade, Media> {
+
+    public DerivedUnitMediaSection(CdmFormFactory cdmFormFactory, ConversationHolder conversation, ICdmFormElement parentElement, int style) {
+        super(cdmFormFactory, conversation, parentElement, "Media", style);
+    }
+
+    @Override
+    public Media createNewElement() {
+        return Media.NewInstance();
+    }
+
+    @Override
+    public Collection<Media> getCollection(DerivedUnitFacade entity) {
+        return entity.getDerivedUnitMedia();
+    }
+
+    @Override
+    public Comparator<Media> getComparator() {
+        return new DefaultCdmBaseComparator<>();
+    }
+
+    @Override
+    public String getEmptyString() {
+        return "No media yet.";
+    }
+
+    @Override
+    protected String getTooltipString() {
+        return "Create new media";
+    }
+
+    @Override
+    public void addElement(Media element) {
+        getEntity().addDerivedUnitMedia(element);
+    }
+
+    @Override
+    public void removeElement(Media element) {
+        getEntity().removeDerivedUnitMedia(element);
+    }
+
+    @Override
+    public Media addExisting() {
+        return MediaSelectionDialog.select(getShell(), null);
+    }
+
+    @Override
+    public boolean allowAddExisting() {
+        return true;
+    }
+
+}