import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
*/
@Override
public boolean performDrop(Object data) {
- TaxonDescription target = (TaxonDescription) getCurrentTarget();
+ DescriptionBase target = (DescriptionBase) getCurrentTarget();
Object[] droppedElements = (Object[]) data;
Collection<DescriptionElementBase> descriptionElements = new ArrayList<DescriptionElementBase>();
description.removeElement(descriptionElement);
target.addElement(descriptionElement);
- if (description.getElements().isEmpty()){
- ((TaxonDescription)description).getTaxon().removeDescription((TaxonDescription)description, false);
+ if (description.getElements().isEmpty() ){
+ if (description instanceof TaxonDescription){
+ ((TaxonDescription)description).getTaxon().removeDescription((TaxonDescription)description, false);
+ }else if (description instanceof TaxonNameDescription){
+ ((TaxonNameDescription)description).getTaxonName().removeDescription((TaxonNameDescription)description);
+ } else if (description instanceof SpecimenDescription){
+ ((SpecimenDescription)description).getDescribedSpecimenOrObservation().removeDescription(description);
+ }
}
descriptionElements.add(descriptionElement);
}
TransferData transferData) {
boolean transferDataIsSupported = DescriptionElementTransfer.getInstance().isSupportedType(
transferData);
- return target instanceof TaxonDescription && transferDataIsSupported;
+ return target instanceof DescriptionBase && transferDataIsSupported;
}
}
} else {
UUID targetDescriptionUuid = targetDescription.getUuid();
UUID sourceDescriptionUuid = sourceDescription.getUuid();
- result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescriptionUuid, isCopy);
+ if (!targetDescription.isPersited()){
+ result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescription, isCopy);
+ }else{
+ result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescriptionUuid, isCopy);
+ }
+
}
return postExecute(null);