(no commit message)
authorKatja Luther <k.luther@bgbm.org>
Mon, 8 Dec 2014 12:49:14 +0000 (12:49 +0000)
committerKatja Luther <k.luther@bgbm.org>
Mon, 8 Dec 2014 12:49:14 +0000 (12:49 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java

index 7952313bc41b7539f003a98a34b4894e521160bb..c8bccaa26f795ba7294ed37f037927e00c138a89 100644 (file)
@@ -1,16 +1,20 @@
 /**
 /**
- *
+ * 
  */
 package eu.etaxonomy.taxeditor.editor.name.dnd;
 
 import org.eclipse.core.runtime.Assert;
  */
 package eu.etaxonomy.taxeditor.editor.name.dnd;
 
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.SWTException;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetAdapter;
 import org.eclipse.swt.dnd.DropTargetEvent;
 
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.DropTargetAdapter;
 import org.eclipse.swt.dnd.DropTargetEvent;
 
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
@@ -18,6 +22,7 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.IDropTargetable;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.name.container.AbstractHomotypicalGroupContainer;
 import eu.etaxonomy.taxeditor.editor.IDropTargetable;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.name.container.AbstractHomotypicalGroupContainer;
+import eu.etaxonomy.taxeditor.editor.name.container.HomotypicalSynonymGroup;
 import eu.etaxonomy.taxeditor.editor.name.container.MisappliedGroup;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptRelationshipTypeOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptToSynonymOperation;
 import eu.etaxonomy.taxeditor.editor.name.container.MisappliedGroup;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptRelationshipTypeOperation;
 import eu.etaxonomy.taxeditor.editor.name.operation.ChangeConceptToSynonymOperation;
@@ -34,85 +39,84 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
  * @version $Id: $
  */
 public class NameEditorDropTargetListener extends DropTargetAdapter {
  * @version $Id: $
  */
 public class NameEditorDropTargetListener extends DropTargetAdapter {
-
-    private final IDropTargetable target;
-
-    /**
-     * <p>Constructor for NameEditorDropTargetListener.</p>
-     *
-     * @param target a {@link eu.etaxonomy.taxeditor.editor.IDropTargetable} object.
-     */
-    public NameEditorDropTargetListener(IDropTargetable target){
-        this.target = target;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void dragEnter(DropTargetEvent dropTargetEvent) {
-        target.dragEntered();
-
-//      if(! EditorUtil.getActiveMultiPageTaxonEditor().equals(editor.getMultiPageTaxonEditor())){
-//          editor.getMultiPageTaxonEditor().setFocus();
-//      }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void dragLeave(DropTargetEvent dropTargetEvent) {
-        target.dragLeft();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void drop(DropTargetEvent dropTargetEvent) {
-
-        TaxonBase taxonBase = getDroppedTaxonBase(dropTargetEvent);
-
-        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) {
-            MessagingUtils.warn(getClass(), "User unsuccessfully tried to drop: " + taxonBase.getClass() +
-                    ". Target: " + target);
-            dropTargetEvent.detail = DND.DROP_NONE;
-        } else {
-            EditorUtil.executeOperation(operation);
-        }
-        target.getEditor().getConversationHolder().commit();
+               
+       private IDropTargetable target;
+       
+
+       /**
+        * <p>Constructor for NameEditorDropTargetListener.</p>
+        *
+        * @param target a {@link eu.etaxonomy.taxeditor.editor.IDropTargetable} object.
+        */
+       public NameEditorDropTargetListener(IDropTargetable target){
+               this.target = target;
+       }
+       
+       /** {@inheritDoc} */
+       public void dragEnter(DropTargetEvent dropTargetEvent) {
+               target.dragEntered();
+               
+//             if(! EditorUtil.getActiveMultiPageTaxonEditor().equals(editor.getMultiPageTaxonEditor())){
+//                     editor.getMultiPageTaxonEditor().setFocus();
+//             }
+       }
+       
+       /** {@inheritDoc} */
+       public void dragLeave(DropTargetEvent dropTargetEvent) {
+               target.dragLeft();
+       }
+       
+       /** {@inheritDoc} */
+       public void drop(DropTargetEvent dropTargetEvent) {
+               
+               TaxonBase taxonBase = getDroppedTaxonBase(dropTargetEvent);
+               
+               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) {
+                       MessagingUtils.warn(getClass(), "User unsuccessfully tried to drop: " + taxonBase.getClass() +
+                                       ". Target: " + target);
+                       dropTargetEvent.detail = DND.DROP_NONE;
+               } else {
+                       EditorUtil.executeOperation(operation);
+               }
+               target.getEditor().getConversationHolder().commit();
                if (!target.equals(EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor())){
                        ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).redraw();
                        ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
                        
                }
                target.getEditor().redraw();
                if (!target.equals(EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor())){
                        ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).redraw();
                        ((TaxonNameEditor)EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor()).getConversationHolder().commit();
                        
                }
                target.getEditor().redraw();
-    }
-
-    private AbstractPostOperation createOperation(TaxonBase taxonBase) {
-
-        if(taxonBase instanceof Synonym){
-            Synonym synonym = (Synonym) taxonBase;
-
-            if(target instanceof AbstractHomotypicalGroupContainer){
-                HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
-
-                return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), synonym, homotypicalGroup, target);
-            }
-            else if(target instanceof MisappliedGroup){
-                return new ChangeSynonymToMisapplicationOperation("Change Synonym to Misapplication", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), synonym, target);
-            }
-            else if(target instanceof TaxonNameEditor){
-               if (target.equals(getEditor())){
+               
+       }
+       
+       private AbstractPostOperation createOperation(TaxonBase taxonBase) {
+               
+               if(taxonBase instanceof Synonym){
+                       Synonym synonym = (Synonym) taxonBase;
+                       
+                       if(target instanceof AbstractHomotypicalGroupContainer){
+                               HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
+                               
+                               return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), synonym, homotypicalGroup, target);
+                       }
+                       else if(target instanceof MisappliedGroup){
+                               return new ChangeSynonymToMisapplicationOperation("Change Synonym to Misapplication", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), synonym, target);
+                       }
+                       else if(target instanceof TaxonNameEditor){
+                               if (target.equals(getEditor())){
                                        return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
                                                getEditor().getTaxon(), synonym, null, target);
                                } else{
                                        return new ChangeHomotypicGroupOperation("Change Homotypical Group", getEditor().getUndoContext(), 
                                                getEditor().getTaxon(), synonym, null, target);
                                } else{
@@ -123,58 +127,57 @@ public class NameEditorDropTargetListener extends DropTargetAdapter {
                                        
                                }
                        }
                                        
                                }
                        }
-            
-
-        }else if(taxonBase instanceof Taxon){
-            Taxon concept = (Taxon) taxonBase;
-
-            if(target instanceof AbstractHomotypicalGroupContainer){
-                HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
-
-                return new ChangeConceptToSynonymOperation("Change to Synonym", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), concept, homotypicalGroup, target);
-            }
-            else if(target instanceof MisappliedGroup ){
-                return new ChangeConceptRelationshipTypeOperation("Change", getEditor().getUndoContext(),
-                        getEditor().getTaxon(), concept, TaxonRelationshipType.MISAPPLIED_NAME_FOR(), target);
-            }
-        }
-
-
-        return null;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void dropAccept(DropTargetEvent event) {
-        // pass
-    }
-
-
-    private HomotypicalGroup getHomotypicalGroup() {
-        if(target instanceof AbstractHomotypicalGroupContainer){
-            return ((AbstractHomotypicalGroupContainer) target).getGroup();
-        }
-        return null;
-    }
-
-    private TaxonBase getDroppedTaxonBase(DropTargetEvent dropTargetEvent){
-        if(dropTargetEvent.data instanceof ICdmBase[]){
+                       
+               }else if(taxonBase instanceof Taxon){
+                       Taxon concept = (Taxon) taxonBase;
+                       
+                       if(target instanceof AbstractHomotypicalGroupContainer){
+                               HomotypicalGroup homotypicalGroup = ((AbstractHomotypicalGroupContainer) target).getGroup();
+                               
+                               return new ChangeConceptToSynonymOperation("Change to Synonym", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), concept, homotypicalGroup, target);
+                       }
+                       else if(target instanceof MisappliedGroup ){
+                               return new ChangeConceptRelationshipTypeOperation("Change", getEditor().getUndoContext(), 
+                                               getEditor().getTaxon(), concept, TaxonRelationshipType.MISAPPLIED_NAME_FOR(), target);
+                       }
+               }
 
 
-            ICdmBase[] cdmBaseObjects = (ICdmBase[]) dropTargetEvent.data;
+               
+               return null;
+       }
 
 
-            if(cdmBaseObjects[0] instanceof TaxonBase){
-                return (TaxonBase) cdmBaseObjects[0];
-            }
-        }
-        return null;
-    }
+       /** {@inheritDoc} */
+       @Override
+       public void dropAccept(DropTargetEvent event) {
+               // pass
+       }
 
 
-    /**
-     * @return
-     *
-     */
-    private TaxonNameEditor getEditor() {
-        return target.getEditor();
-    }
+       
+       private HomotypicalGroup getHomotypicalGroup() {
+               if(target instanceof AbstractHomotypicalGroupContainer){
+                       return ((AbstractHomotypicalGroupContainer) target).getGroup();
+               }
+               return null;
+       }       
+       
+       private TaxonBase getDroppedTaxonBase(DropTargetEvent dropTargetEvent){
+               if(dropTargetEvent.data instanceof ICdmBase[]){
+               
+                       ICdmBase[] cdmBaseObjects = (ICdmBase[]) dropTargetEvent.data;
+                       
+                       if(cdmBaseObjects[0] instanceof TaxonBase){
+                               return (TaxonBase) cdmBaseObjects[0];
+                       }
+               }
+               return null;
+       }
+       
+       /**
+        * @return 
+        * 
+        */
+       private TaxonNameEditor getEditor() {
+               return (TaxonNameEditor) EditorUtil.getActiveMultiPageTaxonEditor().getActiveEditor();
+       }
 }
 }