import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.TransferData;
+import eu.etaxonomy.cdm.model.description.Feature;
+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.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermDropAdapterE4;
for (Object droppedObject : droppedObjects) {
//check term type compatibility
TermType targetType = target.getTermType();
+ TermType droppedType = null;
if(droppedObject instanceof IHasTermType){
- TermType droppedType = ((IHasTermType)droppedObject).getTermType();
- if(!droppedType.equals(targetType)){
- MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ 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);
AbstractUtility.executeOperation(operation, sync);
}
else if(droppedObject instanceof TermDto){
- TermDto termDto = (TermDto) droppedObject;
- // check if a feature or sub type is dropped
- if(termDto.getTermType().equals(TermType.Feature) || termDto.getTermType().isKindOf(TermType.Feature)){
- // 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{
- 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;