ref #10335: adapt editor to show supplemental data for termnodes
authorKatja Luther <k.luther@bgbm.org>
Mon, 5 Jun 2023 13:16:14 +0000 (15:16 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 5 Jun 2023 13:16:40 +0000 (15:16 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/termtree/e4/TermTreeEditor.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/supplemental/AnnotationDtoElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationDtoSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/HeadlineDtoSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerDtoElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerDtoSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/AbstractCdmEditorPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/supplementaldata/SupplementalDataPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/supplementaldata/SupplementalDataViewerE4.java

index ab0081056d23e5c447c11153c444126269bc29a4..f5bca0ca6d292dc5c19bba9c827cd02c019d959b 100644 (file)
@@ -52,10 +52,11 @@ import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermNode;
 import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.AnnotationDto;
+import eu.etaxonomy.cdm.persistence.dto.MarkerDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
 import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermTreeViewerComparator;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
@@ -274,15 +275,15 @@ public class TermTreeEditor<T extends DefinedTermBase>
            return (IStructuredSelection) viewer.getSelection();
        }
 
-       
+
 
        @Override
     @Persist
        public void save(IProgressMonitor monitor){
-        
-        
+
+
         ISelection sel = this.viewer.getSelection();
-        
+
         if (createOperationList != null && !createOperationList.isEmpty()){
             for (CreateFeatureTreeOperation operation: createOperationList.values()){
                 TermTreeDto termDto = getTreeDtoForUuid(operation.getElementUuid());
@@ -306,7 +307,7 @@ public class TermTreeEditor<T extends DefinedTermBase>
         listToUpdate.clear();
         List<TermTreeDto> rootEntities = getRootEntities();
         UpdateResult result = CdmStore.getService(ITermTreeService.class).saveOrUpdateTermTreeDtoList(rootEntities);
-       
+
         this.setDirty(false);
         initializeTrees();
         this.viewer.setSelection(sel);
@@ -500,13 +501,51 @@ public class TermTreeEditor<T extends DefinedTermBase>
     @Inject
     @Optional
     private void addSaveCandidate(@UIEventTopic(WorkbenchEventConstants.ADD_SAVE_CANDIDATE) UUID cdmbaseUuid) {
-        for (UUID uuid: uuidTermMap.keySet()) {
-            if (uuid.equals(cdmbaseUuid)){
-               listToUpdate.add(uuidTermMap.get(uuid));
+        ISelection sel = viewer.getSelection();
+        Object obj = ((StructuredSelection)sel).getFirstElement();
+        if (obj instanceof TermNodeDto) {
+            if (listToUpdate.contains(obj)) {
+                listToUpdate.remove(obj);
+            }
+            listToUpdate.add((TermNodeDto)obj);
+        }
+    }
+
+    @Inject
+    @Optional
+    private void addSaveCandidate(@UIEventTopic(WorkbenchEventConstants.ADD_SAVE_CANDIDATE) AnnotationDto anDto ) {
+
+        ISelection sel = viewer.getSelection();
+        Object obj = ((StructuredSelection)sel).getFirstElement();
+        if (obj instanceof TermNodeDto) {
+            if (listToUpdate.contains(obj)) {
+                listToUpdate.remove(obj);
+            }
+            if(((TermNodeDto)obj).getAnnotations().contains(anDto)){
+                ((TermNodeDto)obj).getAnnotations().remove(anDto);
             }
+            ((TermNodeDto)obj).addAnnotation(anDto);
+            listToUpdate.add((TermNodeDto)obj);
         }
     }
 
+    @Inject
+    @Optional
+    private void addSaveCandidate(@UIEventTopic(WorkbenchEventConstants.ADD_SAVE_CANDIDATE) MarkerDto markerDto ) {
+
+        ISelection sel = viewer.getSelection();
+        Object obj = ((StructuredSelection)sel).getFirstElement();
+        if (obj instanceof TermNodeDto) {
+            if (listToUpdate.contains(obj)) {
+                listToUpdate.remove(obj);
+            }
+            if(((TermNodeDto)obj).getMarkers().contains(markerDto)){
+                ((TermNodeDto)obj).getMarkers().remove(markerDto);
+            }
+            ((TermNodeDto)obj).addMarker(markerDto);
+            listToUpdate.add((TermNodeDto)obj);
+        }
+    }
     @Override
     public TermType getTermType() {
         return termType;
index 656a0b1efbe06029acb4c59c4ebec65a56f3af08..20ff6f2f3f4c69f422c04e07ab9b08b9e2b4812c 100755 (executable)
@@ -130,7 +130,9 @@ import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
+import eu.etaxonomy.cdm.persistence.dto.AnnotationDto;
 import eu.etaxonomy.cdm.persistence.dto.FeatureStateDto;
+import eu.etaxonomy.cdm.persistence.dto.MarkerDto;
 import eu.etaxonomy.cdm.persistence.dto.TermCollectionDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
@@ -349,6 +351,8 @@ import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.reference.SecundumSourceElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.SingleSourceSection;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationDtoElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationDtoSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.CdmBaseElement;
@@ -357,8 +361,11 @@ import eu.etaxonomy.taxeditor.ui.section.supplemental.CreditElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.CreditSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.ExtensionElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.ExtensionSection;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineDtoSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.IdentifiableSourceElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerDtoElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerDtoSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsElement;
@@ -1497,6 +1504,13 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public HeadlineDtoSection createHeadlineDtoSection(ICdmFormElement parentElement) {
+        HeadlineDtoSection section = new HeadlineDtoSection(this, parentElement, SWT.NULL);
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+    }
+
     public ParsingMessageElement createParsingMessageElement(ICdmFormElement parentElement,
             ParserProblem parserProblem, int style) {
         ParsingMessageElement element = new ParsingMessageElement(this, parentElement, parserProblem, style);
@@ -2385,6 +2399,12 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public AnnotationDtoSection createAnnotationDtoSection(ICdmFormElement parentElement, int style){
+        AnnotationDtoSection section = new AnnotationDtoSection(this, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
     public CreditSection createCreditSection(ICdmFormElement parentElement, int style){
         CreditSection section = new CreditSection(this, parentElement, style);
         addAndAdaptSection(parentElement, section);
@@ -2412,6 +2432,11 @@ public class CdmFormFactory extends FormToolkit {
         addAndAdaptSection(parentElement, section);
         return section;
     }
+    public MarkerDtoSection createMarkerDtoSection(ICdmFormElement parentElement, int style){
+        MarkerDtoSection section = new MarkerDtoSection(this, parentElement, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
 
     public MediaSection createMediaSection(ICdmFormElement parentElement, int style){
         MediaSection section = new MediaSection(this, parentElement, style);
@@ -2694,6 +2719,8 @@ public class CdmFormFactory extends FormToolkit {
 
         if (entity instanceof Annotation) {
             element = new AnnotationElement(this, parentElement, (Annotation) entity, removeListener, style);
+        }else if (entity instanceof AnnotationDto) {
+            element = new AnnotationDtoElement(this, parentElement, (AnnotationDto) entity, removeListener, style);
         }else if (entity instanceof Person ) {
             boolean isNomenclatural = false;
             if (parentElement instanceof TeamMemberSection){
@@ -2716,6 +2743,8 @@ public class CdmFormFactory extends FormToolkit {
             element = new ExternalLinksElement(this, parentElement, (ExternalLink) entity, isAdvanced, removeListener, style);
         } else if (entity instanceof Marker) {
             element = new MarkerElement(this, parentElement, (Marker) entity, removeListener, style);
+        } else if (entity instanceof MarkerDto) {
+            element = new MarkerDtoElement(this, parentElement, (MarkerDto) entity, removeListener, style);
         } else if (entity instanceof TaxonNodeAgentRelation) {
             element = new TaxonNodeAgentRelationCollectionElement(this, parentElement, (TaxonNodeAgentRelation) entity, removeListener, backgroundColor, style);
         }else if (entity instanceof Media) {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationDtoElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationDtoElement.java
new file mode 100644 (file)
index 0000000..2466b46
--- /dev/null
@@ -0,0 +1,80 @@
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.ui.section.supplemental;
+
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.AnnotationDto;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+
+/**
+ * <p>AnnotationElement class.</p>
+ *
+ * @author Katja Luther
+ */
+public class AnnotationDtoElement extends AbstractEntityCollectionElement<AnnotationDto>{
+
+       private TextWithLabelElement text;
+       private TermComboElement<AnnotationType> combo_annotationType;
+
+       /**
+        * <p>Constructor for AnnotationElement.</p>
+        *
+        * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
+        * @param annotation a {@link eu.etaxonomy.cdm.model.common.Annotation} object.
+        * @param style a int.
+        * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+        * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
+        */
+       public AnnotationDtoElement(CdmFormFactory cdmFormFactory, AbstractFormSection formElement, AnnotationDto annotation, SelectionListener removeListener, int style) {
+               super(cdmFormFactory, formElement, annotation, removeListener, null, style);
+       }
+
+       @Override
+       public void createControls(ICdmFormElement element, int style) {
+               combo_annotationType = formFactory.createDefinedTermComboElement(TermType.AnnotationType, this, "Annotation Type", null, style);
+
+               text = formFactory.createMultiLineTextWithLabel(this, "Annotation", 100, style);
+               if (entity != null){
+                       setEntity(entity);
+               }
+       }
+
+       @Override
+       public void setEntity(AnnotationDto entity) {
+               this.entity = entity;
+               if (combo_annotationType != null && entity.getTypeUuid() != null){
+                   AnnotationType selectedType = null;
+                   for (AnnotationType anType: combo_annotationType.getTerms()) {
+                       if (anType != null && anType.getUuid() != null && anType.getUuid().equals(entity.getTypeUuid())) {
+                           selectedType = anType;
+                           break;
+                       }
+                   }
+                   combo_annotationType.setSelection(selectedType);
+                       text.setText(entity.getText());
+               }
+       }
+
+       @Override
+       public void handleEvent(Object eventSource) {
+               if(eventSource == combo_annotationType){
+                   getEntity().setTypeLabel(combo_annotationType.getSelection().getLabel());
+                   getEntity().setTypeUuid(combo_annotationType.getSelection().getUuid());
+               }else if(eventSource == text){
+                       getEntity().setText(text.getText());
+               }
+
+               EventUtility.postEvent(WorkbenchEventConstants.ADD_SAVE_CANDIDATE, getEntity());
+       }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationDtoSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationDtoSection.java
new file mode 100644 (file)
index 0000000..d1ed509
--- /dev/null
@@ -0,0 +1,87 @@
+/**
+* Copyright (C) 2013 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.supplemental;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.persistence.dto.AnnotationDto;
+import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 5, 2009
+ */
+public class AnnotationDtoSection extends AbstractEntityCollectionSection<TermNodeDto, AnnotationDto>{
+
+       public AnnotationDtoSection(CdmFormFactory cdmFormFactory, ICdmFormElement parentElement, int style) {
+               super(cdmFormFactory, parentElement, "Annotations", style);
+       }
+
+       @Override
+       public AnnotationDto createNewElement() {
+               String text = "";
+               AnnotationType type = AnnotationType.EDITORIAL();
+               Language language = CdmStore.getDefaultLanguage();
+
+               AnnotationDto anDto = new AnnotationDto(UUID.randomUUID(), 0);
+               anDto.setTypeUuid(type.getUuid());
+               return anDto;
+       }
+
+       @Override
+       public Collection<AnnotationDto> getCollection(TermNodeDto entity) {
+               return entity.getAnnotations();
+       }
+
+       @Override
+       public Comparator<AnnotationDto> getComparator() {
+           return null;
+      //  return new DefaultCdmBaseComparator<>();
+       }
+
+       @Override
+       public String getEmptyString() {
+               return "No annotations yet.";
+       }
+
+       @Override
+       protected String getTooltipString() {
+               return "Create a new annotation";
+       }
+
+       @Override
+       public void addElement(AnnotationDto element) {
+               getEntity().addAnnotation(element);
+       }
+
+       @Override
+       public void removeElement(AnnotationDto element) {
+               getEntity().removeAnnotation(element);
+       }
+
+    @Override
+    public AnnotationDto addExisting() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean allowAddExisting() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/HeadlineDtoSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/HeadlineDtoSection.java
new file mode 100644 (file)
index 0000000..dd31cb9
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.ui.section.supplemental;
+
+
+import eu.etaxonomy.cdm.persistence.dto.IAnnotatableDto;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+
+/**
+ * <p>HeadlineDtoSection class.</p>
+ *
+ * @author k.luther
+ */
+public class HeadlineDtoSection extends AbstractFormSection<IAnnotatableDto> {
+
+       /**
+        * <p>Constructor for HeadlineSection.</p>
+        *
+        * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+        * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+        * @param style a int.
+        */
+       public HeadlineDtoSection(CdmFormFactory cdmFormFactory, ICdmFormElement parentElement,
+                       int style) {
+               super(cdmFormFactory, parentElement, style);
+       }
+
+       @Override
+       public void setEntity(IAnnotatableDto dto) {
+
+               super.setEntity(dto);
+
+               //String simpleName = entity.getClass().getSimpleName();
+        String titleString = dto.getLabel();
+        titleString = StoreUtil.cleanTitleString(titleString);
+        setText(titleString);
+               layout();
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerDtoElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerDtoElement.java
new file mode 100644 (file)
index 0000000..6889a1f
--- /dev/null
@@ -0,0 +1,81 @@
+package eu.etaxonomy.taxeditor.ui.section.supplemental;
+
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.IAnnotatableDto;
+import eu.etaxonomy.cdm.persistence.dto.MarkerDto;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+
+/**
+ * @author n.hoffmann
+ * @created Nov 16, 2009
+ * @version 1.0
+ */
+public class MarkerDtoElement extends AbstractEntityCollectionElement<MarkerDto>{
+
+
+       private TermComboElement<MarkerType> combo_markerType;
+       private CheckboxElement checkbox_markerState;
+
+       public MarkerDtoElement(CdmFormFactory cdmFormFactory, AbstractFormSection formElement, MarkerDto element,
+               SelectionListener removeListener, int style) {
+           super(cdmFormFactory, formElement, element, removeListener, null, style);
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void createControls(ICdmFormElement element, int style) {
+               checkbox_markerState = formFactory.createCheckbox(this, null, false, style);
+               combo_markerType = formFactory.createDefinedTermComboElement(TermType.MarkerType, this, null, null, style);
+               if (entity != null){
+                       setEntity(entity);
+               }
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void setEntity(MarkerDto element) {
+               this.entity = element;
+
+               if (checkbox_markerState != null){
+                       checkbox_markerState.setSelection(element.getValue());
+                       MarkerType selectedType = null;
+            for (MarkerType markerType: combo_markerType.getTerms()) {
+                if (markerType != null && markerType.getUuid() != null && markerType.getUuid().equals(entity.getTypeUuid())) {
+                    selectedType = markerType;
+                    break;
+                }
+            }
+            combo_markerType.setSelection(selectedType);
+
+
+                       combo_markerType.removeEmptyElement();
+               }
+       }
+
+       /** {@inheritDoc} */
+       @Override
+       public void handleEvent(Object eventSource) {
+               if(eventSource == combo_markerType && getParentElement() instanceof MarkerDtoSection){
+                   MarkerDtoSection markerSection = (MarkerDtoSection)getParentElement();
+                   IAnnotatableDto annotatableEntity = markerSection.getEntity();
+                   annotatableEntity.removeMarker(entity);
+                       MarkerType markerType = combo_markerType.getSelection();
+                       entity.setTypeUuid(markerType.getUuid());
+                       annotatableEntity.addMarker(entity);
+               }
+               else if(eventSource == checkbox_markerState){
+                       getEntity().setValue(checkbox_markerState.getSelection());
+               }
+               EventUtility.postEvent(WorkbenchEventConstants.ADD_SAVE_CANDIDATE, getEntity());
+       }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerDtoSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerDtoSection.java
new file mode 100644 (file)
index 0000000..245c3f1
--- /dev/null
@@ -0,0 +1,80 @@
+/**
+ * Copyright (C) 2007 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.supplemental;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.UUID;
+
+import eu.etaxonomy.cdm.persistence.dto.IAnnotatableDto;
+import eu.etaxonomy.cdm.persistence.dto.MarkerDto;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.dna.AbstractUnboundEntityCollectionSection;
+
+/**
+ * @author nho
+ */
+public class MarkerDtoSection extends AbstractUnboundEntityCollectionSection<IAnnotatableDto, MarkerDto> {
+
+       public MarkerDtoSection(CdmFormFactory cdmFormFactory, ICdmFormElement parentElement, int style) {
+               super(cdmFormFactory, parentElement, "Marker", style);
+       }
+
+       @Override
+       public MarkerDto createNewElement() {
+           MarkerDto marker = new MarkerDto(UUID.randomUUID(), null);
+           marker.setValue(true);
+        return marker;
+       }
+
+       @Override
+       public String getEmptyString() {
+               return "No markers yet.";
+       }
+
+       @Override
+       protected String getTooltipString() {
+               return "Create a new marker";
+       }
+
+       @Override
+       public void addElement(MarkerDto element) {
+               getEntity().addMarker(element);
+       }
+
+
+    @Override
+    public Comparator<MarkerDto> getComparator() {
+        return null;//new DefaultCdmBaseComparator<>();
+    }
+
+    @Override
+    public MarkerDto addExisting() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public boolean allowAddExisting() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    protected Collection<MarkerDto> getEntityCollection(IAnnotatableDto entity) {
+        return entity.getMarkers();
+    }
+
+    @Override
+    public void removeElement(MarkerDto element) {
+       getEntity().removeMarker(element);
+
+    }
+}
\ No newline at end of file
index fae222824f7cacb71258461e0153da94363691c2..f395944329e299170ee719c0de456443f747a179 100644 (file)
@@ -32,7 +32,6 @@ import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWTException;
 import org.springframework.security.core.GrantedAuthority;
 
-import eu.etaxonomy.cdm.api.service.ITermNodeService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
@@ -136,6 +135,7 @@ public abstract class AbstractCdmEditorPart<V extends Viewer>
                 selectionChanged_internal(selection, activePart, thisPart);
             }catch (Exception ex){
                 logger.error("Error during selectionChanged_internal", ex);
+                ex.printStackTrace();
             }
             finally{
                 previousSelection = selection;
@@ -312,7 +312,7 @@ public abstract class AbstractCdmEditorPart<V extends Viewer>
                 }
                 else{
                     if(element instanceof TermNodeDto){
-                        element = CdmStore.getService(ITermNodeService.class).load(((TermNodeDto) element).getUuid());
+                        //element = CdmStore.getService(ITermNodeService.class).load(((TermNodeDto) element).getUuid());
                     }
                     if (activePart.getObject() instanceof DetailsPartE4 && element instanceof TaxonName){
                         selectionProvidingPart = ((DetailsPartE4)activePart.getObject()).getSelectionProvidingPart();
index 08a44b8bf3b4d0636bd0c4a0f8d9d689cefc6155..960d128b1cc3ea559a8600f6082edd0543cc1c1b 100644 (file)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
@@ -132,8 +133,8 @@ public class SupplementalDataPartE4 extends AbstractCdmEditorPart<SupplementalDa
                 }
             }
                else if(structuredSelection.getFirstElement() instanceof TermDto
-                       || structuredSelection.getFirstElement() instanceof TermVocabularyDto) {
-                      // || structuredSelection.getFirstElement() instanceof TermNodeDto){
+                       || structuredSelection.getFirstElement() instanceof TermVocabularyDto
+                       || structuredSelection.getFirstElement() instanceof TermNodeDto){
                    showViewer(structuredSelection, activePart, viewer);
                    return;
                }
index ce3a383be648f7fc11e7e48f6fd06c0020b911f0..3b44f31fcf5b58958581001f2ababd472c01c7b4 100644 (file)
@@ -25,18 +25,21 @@ import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
 import eu.etaxonomy.cdm.model.reference.ISourceable;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.cdm.persistence.dto.IAnnotatableDto;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.IElementHasDetails;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaSection;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationDtoSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AnnotationSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.CdmBaseSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.CreditSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.ExtensionSection;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineDtoSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerDtoSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.MarkerSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.RightsSection;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.SourceSection;
@@ -78,11 +81,18 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewer {
                destroySections();
 
                //1. Headline
-               createHeadlineSection(rootElement);
+               if (input instanceof IAnnotatableDto) {
+                   createHeadlineDtoSection(rootElement);
+               }else {
+                   createHeadlineSection(rootElement);
+               }
                //2. Annotatable entitiy
-               if(input instanceof AnnotatableEntity){
+               if(input instanceof AnnotatableEntity ){
                                createAnnotationSections(rootElement);
                }
+               if(input instanceof IAnnotatableDto ){
+            createAnnotationDtoSections(rootElement);
+               }
                //3. Identifiable entity
                if(input instanceof IdentifiableEntity){
                        createIdentifiableSections(rootElement);
@@ -104,7 +114,7 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewer {
                                createVersionSection(rootElement);
                }
                //6. CdmBase
-               if(showDebug){
+               if(showDebug && !(input instanceof IAnnotatableDto)){
                        createCdmBaseSection(rootElement);
                }
 
@@ -116,6 +126,11 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewer {
                addPart(headlineSection);
        }
 
+       private void createHeadlineDtoSection(RootElement parent){
+        HeadlineDtoSection headlineSection = formFactory.createHeadlineDtoSection(parent);
+        addPart(headlineSection);
+    }
+
        private void createSourceSection(RootElement parent){
            int expandStyle = StoreUtil.getSectionStyle(SourceSection.class, getInput().getClass().getCanonicalName(), false);
         SourceSection sourceSection =  formFactory.createSourceSection(parent, expandStyle);
@@ -138,6 +153,20 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewer {
 
     }
 
+    private void createAnnotationDtoSections(RootElement parent) {
+        int expandStyle = StoreUtil.getSectionStyle(AnnotationSection.class, getInput().getClass().getCanonicalName(), false);
+        AnnotationDtoSection annotationSection = formFactory.createAnnotationDtoSection(parent, expandStyle);
+
+        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+        expandStyle = StoreUtil.getSectionStyle(MarkerSection.class, getInput().getClass().getCanonicalName(), false);
+        MarkerDtoSection markerSection = formFactory.createMarkerDtoSection(parent, expandStyle);
+
+        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+
+        addPart(annotationSection);
+        addPart(markerSection);
+
+    }
     private void createIdentifiableSections(RootElement parent) {
         int expandStyle = StoreUtil.getSectionStyle(SourceSection.class, getInput().getClass().getCanonicalName(), false);
         SourceSection sourceSection = formFactory.createSourceSection(parent, expandStyle);
@@ -188,7 +217,7 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewer {
                addPart(cdmBaseSection);
        }
 
-       
+
 
        @Inject
     @Optional