forgot some fixes
authorn.hoffmann <n.hoffmann@localhost>
Thu, 19 Aug 2010 12:00:44 +0000 (12:00 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 19 Aug 2010 12:00:44 +0000 (12:00 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameEditorDropTargetListener.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/supplementaldata/SupplementalDataViewPart.java

index 1e69c7e4341e6615a44be4b8a2ab2cc3c6047705..e91c5ec1e73953c5631c3b103bb204fc4ac44dd4 100644 (file)
@@ -4,7 +4,8 @@
 package eu.etaxonomy.taxeditor.editor.name;
 
 import org.apache.log4j.Logger;
-import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetAdapter;
 import org.eclipse.swt.dnd.DropTargetEvent;
 
@@ -51,27 +52,33 @@ public class NameEditorDropTargetListener extends DropTargetAdapter {
                target.dragLeft();
        }
        
-       public void drop(DropTargetEvent event) {
+       public void drop(DropTargetEvent dropTargetEvent) {
                
-               TaxonBase taxonBase = getDroppedTaxonBase(event);
+               TaxonBase taxonBase = getDroppedTaxonBase(dropTargetEvent);
                
-               if (taxonBase != null) {
-                       // Execute operations at end of drag event
-                       AbstractPostOperation operation = createOperation(taxonBase);
-                       
-                       
-                       // Execute operation if it has been initiated
-                       if (operation == null) {
-                               logger.warn("User unsuccessfully tried to drop: " + taxonBase.getClass());
-                       } else {
-                               EditorUtil.executeOperation(operation);
-                       }
+               Assert.isNotNull(taxonBase);
+               
+               if(taxonBase.getHomotypicGroup().equals(getHomotypicalGroup())){
+                       // do nothing when dragged to the same group
+                       dropTargetEvent.detail = DND.DROP_NONE;
+                       return;
+               }
+               
+               // Execute operations at end of drag event
+               AbstractPostOperation operation = createOperation(taxonBase);
+               
+               // Execute operation if it has been initiated
+               if (operation == null) {
+                       logger.warn("User unsuccessfully tried to drop: " + taxonBase.getClass() +
+                                       ". Target: " + target);
+                       dropTargetEvent.detail = DND.DROP_NONE;
+               } else {
+                       EditorUtil.executeOperation(operation);
                }
        }
        
        private AbstractPostOperation createOperation(TaxonBase taxonBase) {
                
-               
                if(taxonBase instanceof Synonym){
                        Synonym synonym = (Synonym) taxonBase;
                        
@@ -114,6 +121,7 @@ public class NameEditorDropTargetListener extends DropTargetAdapter {
                // pass
        }
 
+       
        private HomotypicalGroup getHomotypicalGroup() {
                if(target instanceof HomotypicalSynonymGroup){
                        return ((HomotypicalSynonymGroup) target).getGroup();
index 7e312f3080dca4cb73e42e398052c4e34569135a..6df3a8038cd4e1f01b0eb9a5dda8bdadbb077c5b 100644 (file)
@@ -86,7 +86,11 @@ public class SupplementalDataViewPart extends AbstractCdmViewPart {
 
        @Override
        protected Object getInitialInput() {
-               return ((IStructuredSelection) selectionService.getSelection()).getFirstElement();
+               try{
+                       return ((IStructuredSelection) selectionService.getSelection()).getFirstElement();
+               }catch(NullPointerException e){
+                       return null;
+               }
        }