From e331654fd33a6681ba2dcfa7e9a39c3dd0100c19 Mon Sep 17 00:00:00 2001
From: Patric Plitzner
Date: Wed, 14 May 2014 07:18:25 +0000
Subject: [PATCH] - only allow dragging in DerivateView when view is not dirty
- added missing methods to transient services - exposed dto package in
cdmlib project - some renaming
---
.../META-INF/MANIFEST.MF | 1 +
.../TransientOccurenceService.java | 25 +++++++++++++++--
.../view/derivate/DerivateDragListener.java | 19 ++++++++-----
.../view/derivate/DerivateDropListener.java | 28 +++++++++----------
.../editor/view/derivate/DerivateView.java | 2 +-
5 files changed, 50 insertions(+), 25 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
index 86b13754f..0959b7a46 100644
--- a/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
+++ b/eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
@@ -14,6 +14,7 @@ Export-Package: com.google.api,
eu.etaxonomy.cdm.api.service,
eu.etaxonomy.cdm.api.service.config,
eu.etaxonomy.cdm.api.service.description,
+ eu.etaxonomy.cdm.api.service.dto,
eu.etaxonomy.cdm.api.service.exception,
eu.etaxonomy.cdm.api.service.lsid,
eu.etaxonomy.cdm.api.service.lsid.impl,
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java
index 5a226f607..ab743b923 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
-import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.dto.DerivateHierarchyDTO;
import eu.etaxonomy.cdm.api.service.pager.Pager;
import eu.etaxonomy.cdm.api.service.search.SearchResult;
import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
@@ -898,9 +898,28 @@ public class TransientOccurenceService implements IOccurrenceService {
@Override
public List isDeletable(SpecimenOrObservationBase object,
DeleteConfiguratorBase config) {
- // TODO Auto-generated method stub
- return null;
+ return defaultService.isDeletable(object, config);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listFieldUnitsByAssociatedTaxon(java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+ */
+ @Override
+ public Collection listFieldUnitsByAssociatedTaxon(Set includeRelationships,
+ Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List orderHints,
+ List propertyPaths) {
+ return defaultService.listFieldUnitsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDerivateHierarchyDTOsByAssociatedTaxon(java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+ */
+ @Override
+ public Collection listDerivateHierarchyDTOsByAssociatedTaxon(
+ Set includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize,
+ Integer pageNumber, List orderHints, List propertyPaths) {
+ return listDerivateHierarchyDTOsByAssociatedTaxon(includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
+ }
+
}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java
index 381aa64a4..e4656ef53 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java
@@ -11,11 +11,11 @@ package eu.etaxonomy.taxeditor.editor.view.derivate;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
/**
* @author pplitzner
@@ -24,13 +24,13 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
*/
public class DerivateDragListener extends DragSourceAdapter{
- private final Viewer viewer;
+ private final DerivateView derivateView;
/**
- * @param viewer
+ * @param derivateView
*/
- public DerivateDragListener(Viewer viewer) {
- this.viewer = viewer;
+ public DerivateDragListener(DerivateView derivateView) {
+ this.derivateView = derivateView;
}
/* (non-Javadoc)
@@ -39,7 +39,7 @@ public class DerivateDragListener extends DragSourceAdapter{
@Override
public void dragSetData(DragSourceEvent event) {
if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataType)) {
- LocalSelectionTransfer.getTransfer().setSelection(viewer.getSelection());
+ LocalSelectionTransfer.getTransfer().setSelection(derivateView.getViewer().getSelection());
}
}
@@ -48,7 +48,12 @@ public class DerivateDragListener extends DragSourceAdapter{
*/
@Override
public void dragStart(DragSourceEvent event) {
- ISelection selection = viewer.getSelection();
+ if(derivateView.isDirty()){
+ event.doit = false;
+ AbstractUtility.warningDialog("View has unsaved changes", this, "You need to save before performing this action");
+ return;
+ }
+ ISelection selection = derivateView.getViewer().getSelection();
if(EditorUtil.getTreeNodeOfSelection(selection)!=null){
event.doit = true;
}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java
index 05a769171..009c59fc0 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java
@@ -79,18 +79,18 @@ public class DerivateDropListener extends ViewerDropAdapter {
* @param value
* @return
*/
- private boolean moveTreeNode(TreeNode from, TreeNode to) {
- Object fromValue = from.getValue();
- Object toValue = to.getValue();
- TreeNode fromParentNode = from.getParent();
+ private boolean moveTreeNode(TreeNode draggedNode, TreeNode targetNode) {
+ Object draggedNodeValue = draggedNode.getValue();
+ Object targetNodeValue = targetNode.getValue();
+ TreeNode fromParentNode = draggedNode.getParent();
Object fromParentSpecimen = fromParentNode.getValue();
// drag'n'drop for SpecimenOrObservationBase
- if(fromValue instanceof DerivedUnit && toValue instanceof SpecimenOrObservationBase>){
- DerivedUnit draggedSpecimen = (DerivedUnit) fromValue;
- SpecimenOrObservationBase> targetSpecimen = (SpecimenOrObservationBase>) toValue;
+ if(draggedNodeValue instanceof DerivedUnit && targetNodeValue instanceof SpecimenOrObservationBase>){
+ DerivedUnit draggedSpecimen = (DerivedUnit) draggedNodeValue;
+ SpecimenOrObservationBase> targetSpecimen = (SpecimenOrObservationBase>) targetNodeValue;
//check if type is a sub derivate type
- if(!fromParentNode.equals(to)//don't drag on direct parent node
+ if(!fromParentNode.equals(targetNode)//don't drag on direct parent node
&& fromParentSpecimen instanceof SpecimenOrObservationBase>){
CdmStore.getService(IOccurrenceService.class).moveDerivate((SpecimenOrObservationBase>)fromParentSpecimen, targetSpecimen, draggedSpecimen);
return true;
@@ -98,19 +98,19 @@ public class DerivateDropListener extends ViewerDropAdapter {
}
// drag'n'drop for SingleRead
- else if(fromValue instanceof SingleRead && toValue instanceof Sequence){
- SingleRead singleRead = (SingleRead) fromValue;
+ else if(draggedNodeValue instanceof SingleRead && targetNodeValue instanceof Sequence){
+ SingleRead singleRead = (SingleRead) draggedNodeValue;
if(fromParentSpecimen instanceof Sequence){
- CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)toValue, singleRead);
+ CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)targetNodeValue, singleRead);
}
return true;
}
// drag'n'drop for Sequence
- else if(fromValue instanceof Sequence && toValue instanceof DnaSample ){
- Sequence sequence = (Sequence)fromValue;
+ else if(draggedNodeValue instanceof Sequence && targetNodeValue instanceof DnaSample ){
+ Sequence sequence = (Sequence)draggedNodeValue;
if(fromParentSpecimen instanceof DnaSample){
- CdmStore.getService(IOccurrenceService.class).moveSequence((DnaSample)fromParentSpecimen, (DnaSample)toValue, sequence);
+ CdmStore.getService(IOccurrenceService.class).moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence);
return true;
}
}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
index 441685dc4..2745a94d1 100644
--- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
+++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
@@ -112,7 +112,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
//add drag'n'drop support
Transfer[] transfers = new Transfer[] {LocalSelectionTransfer.getTransfer(),};
- viewer.addDragSupport(dndOperations, transfers, new DerivateDragListener(viewer));
+ viewer.addDragSupport(dndOperations, transfers, new DerivateDragListener(this));
viewer.addDropSupport(dndOperations, transfers, new DerivateDropListener(this));
}
--
2.34.1