ref #8450: descriptive data set title as label for descr. dataset editor
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / descriptiveDataSet / DescriptiveDataSetEditor.java
index 40cb2d2558d6d9b17fb1827451cd9642a9985535..eba318cb437a9753f8d414b8158d6b55431c8c81 100644 (file)
@@ -30,6 +30,7 @@ import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.di.Persist;
 import org.eclipse.e4.ui.model.application.ui.MDirtyable;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.services.EMenuService;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
@@ -57,17 +58,22 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermTree;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.editor.IDescriptiveDataSetEditor;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
@@ -85,7 +91,7 @@ import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
  *
  */
 public class DescriptiveDataSetEditor implements IE4SavablePart, IConversationEnabled, ICdmEntitySessionEnabled,
-IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
+IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable, IDescriptiveDataSetEditor {
 
     private DescriptiveDataSetComposite composite;
 
@@ -100,6 +106,9 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
     @Inject
     private MDirtyable dirty;
 
+    @Inject
+    private MPart thisPart;
+
     @Inject
     private ESelectionService selectionService;
 
@@ -128,13 +137,14 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
             @Override
             public void modifyText(ModifyEvent e) {
                 descriptiveDataSet.setLabel(composite.getTxt_label().getText());
+                EventUtility.postSyncEvent(WorkbenchEventConstants.REFRESH_DATASET_NAVIGATOR, descriptiveDataSet);
                 dirty.setDirty(true);
             }
         };
         composite.getRankMin().addSelectionChangedListener(event->dirty.setDirty(true));
         composite.getRankMin().setText("Select min rank...");
         composite.getRankMax().addSelectionChangedListener(event->dirty.setDirty(true));
-        composite.getRankMin().setText("Select max rank...");
+        composite.getRankMax().setText("Select max rank...");
         composite.getBtnRemoveRankMin().addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
@@ -165,7 +175,13 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
             }
         });
 
-        composite.getFeatureTreeEditorComposite().init("Character Tree", null, null, e->selectionService.setSelection(e.getSelection()), this, null);
+        composite.getFeatureTreeEditorComposite().init("Character Tree",
+                TermType.Character,
+                null,
+                null,
+                e->selectionService.setSelection(e.getSelection()),
+                this,
+                null);
 
         //add drag'n'drop support
         Transfer[] transfers = new Transfer[] {LocalSelectionTransfer.getTransfer()};
@@ -220,6 +236,7 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
             }
         });
         selectionService.setSelection(new StructuredSelection(descriptiveDataSet));
+        thisPart.setLabel(descriptiveDataSet.getLabel());
     }
 
     public void addTaxonNode(TaxonNodeDto taxonNodeDto){
@@ -281,10 +298,10 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
                 }
             }
         }
-        FeatureTree characters = composite.getCharacters();
+        TermTree<Feature> characters = composite.getCharacters();
         if(characters!=null){
             //save characters because they can be modified in this editor
-            characters.getDistinctFeatures().forEach(character->CdmStore.getService(ITermService.class).merge(character,true));
+            characters.getDistinctTerms().forEach(character->CdmStore.getService(ITermService.class).merge(character,true));
         }
 
 
@@ -310,7 +327,8 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
 
         conversation.commit();
         CdmStore.getService(IDescriptiveDataSetService.class).merge(descriptiveDataSet, true);
-
+        //event for updatin matrix
+        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DESCRIPTIVE_DATASET, descriptiveDataSet.getUuid());
         dirty.setDirty(false);
     }
 
@@ -330,6 +348,7 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
             cdmEntitySession = null;
         }
         dirty.setDirty(false);
+        selectionService.setSelection(null);
     }
 
     @Focus