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;
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,
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;
}