From: Patrick Plitzner Date: Tue, 20 Jun 2017 14:43:49 +0000 (+0200) Subject: ref #6694 Fix session handling when moving feature nodes X-Git-Tag: 4.8.0^2~49^2~12 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/50c9803d2bcaeb61844b9e4455fe9be8c0f28b4c ref #6694 Fix session handling when moving feature nodes --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDragListener.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDragListener.java index 10ddd7fc8..e02342f84 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDragListener.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDragListener.java @@ -10,7 +10,6 @@ package eu.etaxonomy.taxeditor.featuretree.e4; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DragSourceAdapter; import org.eclipse.swt.dnd.DragSourceEvent; @@ -25,37 +24,17 @@ class FeatureNodeDragListener extends DragSourceAdapter { this.viewer = viewer; } - /** - * Method declared on DragSourceListener - */ - @Override - public void dragFinished(DragSourceEvent event) { - if (!event.doit) { - return; + /** + * Method declared on DragSourceListener + */ + @Override + public void dragSetData(DragSourceEvent event) { + IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); + FeatureNode[] featureNodes = (FeatureNode[]) selection.toList().toArray(new FeatureNode[selection.size()]); + if (FeatureNodeTransfer.getInstance().isSupportedType(event.dataType)) { + event.data = featureNodes; } - // if the featureNode was moved, remove it from the source viewer - if (event.detail == DND.DROP_MOVE) { - IStructuredSelection selection = (IStructuredSelection) viewer - .getSelection(); - viewer.remove(selection); - viewer.refresh(); - } - } - - /** - * Method declared on DragSourceListener - */ - @Override - public void dragSetData(DragSourceEvent event) { - IStructuredSelection selection = (IStructuredSelection) viewer - .getSelection(); - FeatureNode[] featureNodes = (FeatureNode[]) selection.toList() - .toArray(new FeatureNode[selection.size()]); - if (FeatureNodeTransfer.getInstance().isSupportedType( - event.dataType)) { - event.data = featureNodes; - } - } + } /** * Method declared on DragSourceListener diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDropAdapter.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDropAdapter.java index 1c6e8da4e..7d8607040 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDropAdapter.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDropAdapter.java @@ -13,16 +13,14 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerDropAdapter; import org.eclipse.swt.dnd.TransferData; +import eu.etaxonomy.cdm.api.service.IFeatureNodeService; import eu.etaxonomy.cdm.model.description.FeatureNode; import eu.etaxonomy.cdm.model.description.FeatureTree; import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer; -import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.store.CdmStore; class FeatureNodeDropAdapter extends ViewerDropAdapter { - /** - * - */ private final FeatureTreeEditor featureTreeEditor; protected FeatureNodeDropAdapter(FeatureTreeEditor featureTreeEditor, Viewer viewer) { @@ -60,33 +58,23 @@ class FeatureNodeDropAdapter extends ViewerDropAdapter { // cannot drop a feature node onto itself for (Object droppedObject : droppedObjects) { - if (droppedObject == null) { - MessagingUtils.warningDialog( - "Operation not supported yet", - this, - "We are currently unable to change the order of freshly created " - + "feature trees nodes. Please close and reopen the dialog to change the order of features."); - return false; - } if (droppedObject.equals(target)) { return false; } } for (Object droppedObject : droppedObjects) { FeatureNode droppedNode = (FeatureNode) droppedObject; - target.addChild(droppedNode, position); - viewer.add(target, droppedNode); - viewer.reveal(droppedNode); + CdmStore.getService(IFeatureNodeService.class).moveFeatureNode(droppedNode.getUuid(), target.getUuid(), position); + viewer.refresh(); +// viewer.reveal(droppedNode); } this.featureTreeEditor.setDirty(true); return true; } - @Override - public boolean validateDrop(Object target, int operation, - TransferData transferData) { - return FeatureNodeTransfer.getInstance().isSupportedType( - transferData); - } + @Override + public boolean validateDrop(Object target, int operation, TransferData transferData) { + return FeatureNodeTransfer.getInstance().isSupportedType(transferData); + } } \ No newline at end of file diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java index 331d5c72c..d74a394fd 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java @@ -89,17 +89,23 @@ public class FeatureTreeEditor implements } } }, new AddButtonListener(), new RemoveSelectionListener()); + composite.getText_title().setEnabled(false); } public void setDirty(boolean isDirty){ this.dirty.setDirty(isDirty); } + public boolean isDirty(){ + return dirty.isDirty(); + } + public void setSelectedTree(FeatureTree featureTree) { this.featureTree = HibernateProxyHelper.deproxy(featureTree, FeatureTree.class); this.featureTree.setRoot(HibernateProxyHelper.deproxy(featureTree.getRoot(), FeatureNode.class)); composite.getViewer().setInput(featureTree); + composite.getText_title().setEnabled(true); composite.getText_title().removeModifyListener(this); composite.getText_title().setText(featureTree.getTitleCache()); composite.getText_title().addModifyListener(this); @@ -156,9 +162,8 @@ public class FeatureTreeEditor implements .getAdditionalFeatures(); for (Feature feature : additionalFeatures) { FeatureNode child = FeatureNode.NewInstance(feature); - CdmStore.getService(IFeatureNodeService.class).merge(child, true); - parent.addChild(child); + CdmStore.getService(IFeatureNodeService.class).save(child); } setDirty(true); composite.getViewer().refresh();