fix #8480 Use DescriptionTypes for matrix descriptions
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / descriptiveDataSet / matrix / handler / CreateDefaultTaxonDescriptionHandler.java
index 1bd38fe219a531ced326e64a57d37744f1c1cac1..124dfb101d66812dbeb14e65dbd3558517d35fc7 100644 (file)
@@ -8,7 +8,20 @@
 */
 package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix.handler;
 
-import eu.etaxonomy.cdm.model.common.MarkerType;
+import javax.inject.Named;
+
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
+import eu.etaxonomy.cdm.model.description.DescriptionType;
+import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix.CharacterMatrixPart;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author pplitzner
@@ -18,12 +31,26 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
 public class CreateDefaultTaxonDescriptionHandler extends CreateTaxonDescriptionHandler{
 
     @Override
-    protected boolean getMarkerFlag() {
-        return true;
+    protected DescriptionType getDescriptionType() {
+        return DescriptionType.DEFAULT_VALUES_FOR_AGGREGATION;
     }
 
     @Override
-    protected MarkerType getMarkerType() {
-        return MarkerType.USE();
+    public boolean canExecute(@Named(IServiceConstants.ACTIVE_PART)MPart activePart,
+            MHandledMenuItem menuItem){
+        boolean canExecute = super.canExecute(activePart, menuItem);
+        if(canExecute){
+            CharacterMatrixPart matrixPart = (CharacterMatrixPart) activePart.getObject();
+            DescriptiveDataSet descriptiveDataSet = matrixPart.getDescriptiveDataSet();
+            IStructuredSelection selection = ((CharacterMatrixPart)activePart.getObject()).getSelection();
+            TaxonNodeDto taxonNodeDto = (TaxonNodeDto) selection.getFirstElement();
+
+            TaxonDescription defaultTaxonDescription = CdmStore.getService(IDescriptiveDataSetService.class)
+                    .findTaxonDescriptionByDescriptionType(descriptiveDataSet.getUuid(), taxonNodeDto.getUuid(), getDescriptionType());
+            canExecute = defaultTaxonDescription==null;
+            menuItem.setVisible(canExecute);
+        }
+
+        return canExecute;
     }
 }