From 3b57adbc419c2aaa76a9e9bc923d217038dc9923 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Mon, 8 Dec 2014 12:49:14 +0000 Subject: [PATCH] --- .../dnd/NameEditorDropTargetListener.java | 253 +++++++++--------- 1 file changed, 128 insertions(+), 125 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java index 7952313bc..c8bccaa26 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/dnd/NameEditorDropTargetListener.java @@ -1,16 +1,20 @@ /** - * + * */ 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 eu.etaxonomy.cdm.model.reference.Reference; 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; @@ -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.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; @@ -34,85 +39,84 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; * @version $Id: $ */ public class NameEditorDropTargetListener extends DropTargetAdapter { - - private final IDropTargetable target; - - /** - *

Constructor for NameEditorDropTargetListener.

- * - * @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; + + + /** + *

Constructor for NameEditorDropTargetListener.

+ * + * @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(); - } - - 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{ @@ -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(); + } } -- 2.34.1