ref #10316: TermNodeDto should not contain termtreedto, only some
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / editor / definedterm / e4 / handler / CreateDefinedTermHandlerE4.java
index 62af5b7888590854bfb22f523a42bc73a2ac260a..78f27cebf64afee4f206c7a9a147f2dab709c464 100644 (file)
@@ -21,6 +21,7 @@ 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.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
@@ -53,8 +54,10 @@ public class CreateDefinedTermHandlerE4 {
 
         String label = menuItem.getLocalizedLabel();
         IUndoContext undoContext = StoreUtil.getUndoContext();
-
-        AbstractTermDto parent = (AbstractTermDto) selection.getFirstElement();
+        AbstractTermDto parent = null;
+        if (selection.getFirstElement() instanceof AbstractTermDto){
+            parent = (AbstractTermDto) selection.getFirstElement();
+        }
         AbstractPostOperation operation =
                 new CreateDefinedTermOperation(label,
                         undoContext,
@@ -77,13 +80,23 @@ public class CreateDefinedTermHandlerE4 {
         UUID vocabularyUuid = null;
 
         if(firstElement instanceof TermDto){
+            if (((TermDto)firstElement).isManaged() || ((TermDto)firstElement).getVocabularyDto().isManaged()) {
+                return false;
+            }
             vocabularyUuid = ((TermDto) firstElement).getVocabularyUuid();
-        }else if(firstElement instanceof TermVocabularyDto
-                && !menuItem.getCommand().getElementId()
-                .equals(AppModelId.COMMAND_EU_ETAXONOMY_TAXEDITOR_EDITOR_DEFINEDTERMS_NEWKINDOFTERM)){
-            vocabularyUuid = ((TermVocabularyDto) firstElement).getUuid();
+        }else if(firstElement instanceof TermVocabularyDto) {
+            if (((TermVocabularyDto)firstElement).isManaged()) {
+                return false;
+            }
+            if (!menuItem.getCommand().getElementId()
+                    .equals(AppModelId.COMMAND_EU_ETAXONOMY_TAXEDITOR_EDITOR_DEFINEDTERMS_NEWKINDOFTERM)){
+                vocabularyUuid = ((TermVocabularyDto) firstElement).getUuid();
+            }
         }
-        canExecute &= vocabularyUuid!=null;
+             
+        canExecute &= vocabularyUuid!=null
+                // TODO temporary fix for #7933
+                && VocabularyEnum.getVocabularyEnumByUuid(vocabularyUuid) == null;
         menuItem.setVisible(canExecute);
         return canExecute;
     }