*/
package eu.etaxonomy.taxeditor.editor.definedterm.e4.handler;
+import java.util.UUID;
+
import javax.inject.Named;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+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;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
import eu.etaxonomy.taxeditor.editor.definedterm.operation.CreateDefinedTermOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.store.AppModelId;
import eu.etaxonomy.taxeditor.store.StoreUtil;
/**
public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection, MHandledMenuItem menuItem,
UISynchronize sync) {
-
DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) activePart.getObject();
-
+ if(StoreUtil.promptCheckIsDirty(termEditor)){
+ return;
+ }
boolean addTermAsKindOf =
- menuItem.getCommand().getElementId().equals("eu.etaxonomy.taxeditor.editor.definedTerms.newKindOfTerm")?true:false;
+ menuItem.getCommand().getElementId()
+ .equals(AppModelId.COMMAND_EU_ETAXONOMY_TAXEDITOR_EDITOR_DEFINEDTERMS_NEWKINDOFTERM)?true:false;
String label = menuItem.getLocalizedLabel();
IUndoContext undoContext = StoreUtil.getUndoContext();
-
+ AbstractTermDto parent = null;
+ if (selection.getFirstElement() instanceof AbstractTermDto){
+ parent = (AbstractTermDto) selection.getFirstElement();
+ }
AbstractPostOperation operation =
new CreateDefinedTermOperation(label,
undoContext,
- (TermBase) selection.getFirstElement(),
+ parent,
termEditor.getDefinedTermEditorInput(),
termEditor, addTermAsKindOf);
AbstractUtility.executeOperation(operation, sync);
Object firstElement = selection.getFirstElement();
canExecute = selection.size()==1
&&
- (firstElement instanceof DefinedTermBase
- || firstElement instanceof TermVocabulary);
- TermVocabulary vocabulary = null;
+ (firstElement instanceof TermDto
+ || firstElement instanceof TermVocabularyDto);
+ UUID vocabularyUuid = null;
- if(firstElement instanceof DefinedTermBase){
- vocabulary = ((DefinedTermBase) firstElement).getVocabulary();
- }else if(firstElement instanceof TermVocabulary){
- vocabulary = (TermVocabulary) firstElement;
+ if(firstElement instanceof TermDto){
+ if (((TermDto)firstElement).isManaged() || ((TermDto)firstElement).getVocabularyDto().isManaged()) {
+ return false;
+ }
+ vocabularyUuid = ((TermDto) firstElement).getVocabularyUuid();
+ }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 &= vocabulary!=null;
+
+ canExecute &= vocabularyUuid!=null
+ // TODO temporary fix for #7933
+ && VocabularyEnum.getVocabularyEnumByUuid(vocabularyUuid) == null;
menuItem.setVisible(canExecute);
return canExecute;
}