import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.TransferData;
-import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.IHasTermType;
+import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermDropAdapterE4;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TermVocabularySelectionDialog;
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
}
}
for (Object droppedObject : droppedObjects) {
+ //check term type compatibility
+ TermType targetType = target.getTermType();
+ TermType droppedType = null;
+ if(droppedObject instanceof IHasTermType){
+ droppedType = ((IHasTermType)droppedObject).getTermType();
+ if(droppedType!=null && !droppedType.equals(targetType)){
+ MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ continue;
+ }
+ }
+ else if(droppedObject instanceof TermDto){
+ droppedType = ((TermDto)droppedObject).getTermType();
+ if(droppedType!=null && !droppedType.equals(targetType) && !droppedType.isKindOf(targetType)){
+ MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ continue;
+ }
+ }
if(droppedObject instanceof FeatureNode){
FeatureNode droppedNode = (FeatureNode) droppedObject;
int currentPosition = target.getIndex(droppedNode);
else if(droppedObject instanceof Feature){
Feature droppedFeature = (Feature) droppedObject;
AddFeatureOperation operation = new AddFeatureOperation(
- (Feature) CdmStore.getService(ITermService.class).load(droppedFeature.getUuid()),
+ droppedFeature.getUuid(),
target, position, editor, editor);
AbstractUtility.executeOperation(operation, sync);
}
else if(droppedObject instanceof TermDto){
- TermDto termDto = (TermDto) droppedObject;
- DefinedTermBase term = CdmStore.getService(ITermService.class).load(termDto.getUuid());
- if(term.isInstanceOf(Feature.class)){
- AddFeatureOperation operation = new AddFeatureOperation(
- (Feature)term,
- target, position, editor, editor);
- AbstractUtility.executeOperation(operation, sync);
- }
- else{
- MessagingUtils.warningDialog(DefinedTermDropAdapterE4.MOVE_FAILED, this, Messages.FeatureTreeDropAdapter_ONLY_MOVE_FEATURES);
- }
+ TermDto termDto = (TermDto) droppedObject;
+ // check if target feature tree has the same type as the dropped term
+ if(!termDto.getTermType().equals(targetType)){
+ MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ continue;
+ }
+ AddFeatureOperation operation = new AddFeatureOperation(
+ termDto.getUuid(),
+ target, position, editor, editor);
+ AbstractUtility.executeOperation(operation, sync);
}
else if(droppedObject instanceof OntologyTermWrapper){
OntologyTermWrapper wrapper = (OntologyTermWrapper)droppedObject;