Merge branch 'develop' of https://dev.e-taxonomy.eu/git/taxeditor into develop
authorKatja Luther <k.luther@bgbm.org>
Mon, 16 Nov 2015 13:40:41 +0000 (14:40 +0100)
committerKatja Luther <k.luther@bgbm.org>
Mon, 16 Nov 2015 13:40:41 +0000 (14:40 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDragListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDropAdapter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/CdmObjectTransfer.java

index e5e58d0f675cd52dd980bf0eebeb0b383ec679b7..86c95a2c1f1aa20558b5339f08e80b7baddb95bf 100644 (file)
@@ -61,7 +61,9 @@ public class DescriptionElementDragListener extends DragSourceAdapter {
                List<DescriptionElementBase> descriptionElements = new ArrayList<DescriptionElementBase>();
                for (Object object : selection.toList()){
                        if(object instanceof DescriptionBase){
-                               descriptionElements.addAll(((DescriptionBase) object).getElements());
+                               if (!((DescriptionBase) object).getElements().isEmpty()){
+                                       descriptionElements.addAll(((DescriptionBase) object).getElements());
+                               }
                                description = HibernateProxyHelper.deproxy(object, DescriptionBase.class);
                                
                        }else if(object instanceof FeatureNodeContainer){
@@ -73,7 +75,9 @@ public class DescriptionElementDragListener extends DragSourceAdapter {
                }
                if (DescriptionElementTransfer.getInstance().isSupportedType(
                                event.dataType)) {
-                       event.data = descriptionElements.toArray(new DescriptionElementBase[descriptionElements.size()]);
+                       if (!descriptionElements.isEmpty()){
+                               event.data = descriptionElements.toArray(new DescriptionElementBase[descriptionElements.size()]);
+                       }
                        
                }
                
index 9af171323df34d178dcdba4bac6010721bc07b05..e7d7f2907df81a1ffe7a8f96baa5cbab9fbf8fbb 100644 (file)
@@ -52,30 +52,34 @@ public class DescriptionElementDropAdapter extends ViewerDropAdapter {
                boolean isCopy = getCurrentOperation() == DND.DROP_COPY ? true : false;
                
                // cannot drop a feature node onto itself
-               for (Object droppedElement : droppedElements) {                 
-                       if (droppedElement == null){
-                               MessagingUtils.warningDialog("Operation not supported yet", this, "We are currently unable to drag and drop a newly created element. Please save the editor to make this work.");
-                               return false;
-                       }
-                       if(! (droppedElement instanceof DescriptionElementBase)){
-                               return false;
-                       }else{
-                               DescriptionElementBase descriptionElement = (DescriptionElementBase) droppedElement;
-                               
-                               if (descriptionElement.getInDescription().equals(target)) {
+               if (droppedElements != null){
+                       for (Object droppedElement : droppedElements) {                 
+                               if (droppedElement == null){
+                                       MessagingUtils.warningDialog("Operation not supported yet", this, "We are currently unable to drag and drop a newly created element. Please save the editor to make this work.");
                                        return false;
                                }
-                               
-                               descriptionElements.add(descriptionElement);
-                       }                       
+                               if(! (droppedElement instanceof DescriptionElementBase)){
+                                       return false;
+                               }else{
+                                       DescriptionElementBase descriptionElement = (DescriptionElementBase) droppedElement;
+                                       
+                                       if (descriptionElement.getInDescription().equals(target)) {
+                                               return false;
+                                       }
+                                       
+                                       descriptionElements.add(descriptionElement);
+                               }                       
+                       }
+                       
+                       AbstractPostOperation operation = new MoveDescriptionElementsOperation("Move Descriptions", EditorUtil.getUndoContext(), target, descriptionElements, isCopy, null);
+                       
+                       EditorUtil.executeOperation(operation);
+                       return true;
                }
+               MessagingUtils.warningDialog("Operation not supported yet", this, "We are unable to drag and drop empty descriptions");
+       
+               return false;
                
-               AbstractPostOperation operation = new MoveDescriptionElementsOperation("Move Descriptions", EditorUtil.getUndoContext(), target, descriptionElements, isCopy, null);
-               
-               EditorUtil.executeOperation(operation);
-               
-               
-               return true;
        }
 
        /* (non-Javadoc)
index 40d8e197ba1f42e0d0756b389b36f4a3d67c2403..3506523e34240a3a42642dda0fed1e8f95f99e0d 100644 (file)
@@ -37,9 +37,11 @@ public abstract class CdmObjectTransfer<T extends ICdmBase> extends ByteArrayTra
         */
        @Override
        protected void javaToNative(Object object, TransferData transferData) {
-               byte[] bytes = toByteArray((T[]) object);
-               if (bytes != null)
-                       super.javaToNative(bytes, transferData);
+               if (object != null){
+                       byte[] bytes = toByteArray((T[]) object);
+                       if (bytes != null)
+                               super.javaToNative(bytes, transferData);
+               }
        }
        
        /* (non-Javadoc)
@@ -48,8 +50,12 @@ public abstract class CdmObjectTransfer<T extends ICdmBase> extends ByteArrayTra
        @Override
        protected Object nativeToJava(TransferData transferData) {
                byte[] bytes = (byte[]) super.nativeToJava(transferData);
-               return fromByteArray(bytes);
+               if (bytes != null){
+                       return fromByteArray(bytes);
+               }
+               return null;
        }
+               
        
        protected byte[] toByteArray(T[] elements) {
                ByteArrayOutputStream byteOut = new ByteArrayOutputStream();